@xsolla/payment-client-core 0.2.66 → 0.2.67
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/esm2022/lib/core/payment/form/converters/birth-date/birth-date.converter.mjs +6 -5
- package/esm2022/lib/core/payment/form/converters/card-number/card-number.converter.mjs +5 -4
- package/esm2022/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +6 -2
- package/esm2022/lib/core/payment/form/converters/converter.abstract.mjs +6 -2
- package/esm2022/lib/core/payment/form/converters/cpf-name/cpf-name.converter.mjs +6 -5
- package/esm2022/lib/core/payment/form/converters/cvv/cvv.converter.mjs +5 -2
- package/esm2022/lib/core/payment/form/converters/street-number/street-number.converter.mjs +5 -2
- package/esm2022/lib/core/payment/form/converters/zip/zip.converter.mjs +8 -7
- package/esm2022/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +6 -2
- package/esm2022/lib/core/payment/form/validators/card-expiration-date-validator/card-expiration-date.validator.mjs +31 -10
- package/esm2022/lib/core/payment/form/validators/card-month/card-month.validator.mjs +20 -7
- package/esm2022/lib/core/payment/form/validators/card-year/card-year.validator.mjs +20 -7
- package/esm2022/lib/core/payment/form/validators/convert.function.mjs +7 -6
- package/esm2022/lib/core/payment/form/validators/coupon/coupon-validator.mjs +6 -3
- package/esm2022/lib/core/payment/form/validators/credit-card-length/credit-card-max-length.validator.mjs +37 -0
- package/esm2022/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +13 -8
- package/esm2022/lib/core/payment/form/validators/email/email-validator.mjs +5 -2
- package/esm2022/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +6 -2
- package/esm2022/lib/core/payment/form/validators/max-length-validator.mjs +6 -2
- package/esm2022/lib/core/payment/form/validators/min-length-validator.mjs +6 -2
- package/esm2022/lib/core/payment/form/validators/phone-validator.mjs +5 -2
- package/esm2022/lib/core/payment/form/validators/required/required.validator.mjs +5 -2
- package/esm2022/lib/core/payment/form/validators/validation-error-id.enum.mjs +24 -0
- package/esm2022/lib/core/payment/form/validators/validation-error-params.interface.mjs +2 -0
- package/esm2022/lib/core/payment/form/validators/validation-error.interface.mjs +1 -1
- package/esm2022/lib/core/payment/form/validators/validators.module.mjs +5 -4
- package/esm2022/lib/core/type-guards/is-object.function.mjs +4 -0
- package/fesm2022/xsolla-payment-client-core.mjs +205 -69
- package/fesm2022/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/payment/form/converters/card-number/card-number.converter.d.ts +2 -1
- package/lib/core/payment/form/validators/convert.function.d.ts +2 -1
- package/lib/core/payment/form/validators/credit-card-length/credit-card-max-length.validator.d.ts +12 -0
- package/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.d.ts +2 -2
- package/lib/core/payment/form/validators/validation-error-id.enum.d.ts +22 -0
- package/lib/core/payment/form/validators/validation-error-params.interface.d.ts +6 -0
- package/lib/core/payment/form/validators/validation-error.interface.d.ts +2 -0
- package/lib/core/type-guards/is-object.function.d.ts +1 -0
- package/package.json +1 -1
- package/xsolla-payment-client-core-0.2.67.tgz +0 -0
- package/xsolla-payment-client-core-0.2.66.tgz +0 -0
|
@@ -3299,28 +3299,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
3299
3299
|
args: [syncResponseFactoryToken]
|
|
3300
3300
|
}] }, { type: XpsApiService }, { type: NextActionService }, { type: SettingsService }, { type: XpsResponseErrorsMappingService }, { type: EncryptCreditCardService }, { type: ShowErrorsActionCreator }, { type: UserBehaviourAnalyticsService }, { type: PaymentSettingsService }] });
|
|
3301
3301
|
|
|
3302
|
-
function
|
|
3302
|
+
function isObject(value) {
|
|
3303
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
3304
|
+
}
|
|
3305
|
+
|
|
3306
|
+
function convert(validator, message, params) {
|
|
3303
3307
|
return (control) => {
|
|
3304
3308
|
const errors = validator(control);
|
|
3305
|
-
if (!errors)
|
|
3306
|
-
return
|
|
3307
|
-
}
|
|
3309
|
+
if (!errors)
|
|
3310
|
+
return null;
|
|
3308
3311
|
const firstErrorKey = Object.keys(errors)[0];
|
|
3309
3312
|
const firstError = errors[firstErrorKey];
|
|
3310
|
-
const error =
|
|
3313
|
+
const error = isObject(firstError) ? firstError : {};
|
|
3311
3314
|
error.message = message;
|
|
3315
|
+
error.params = params;
|
|
3312
3316
|
errors[firstErrorKey] = error;
|
|
3313
3317
|
return errors;
|
|
3314
3318
|
};
|
|
3315
3319
|
}
|
|
3316
3320
|
|
|
3321
|
+
var ValidationErrorId;
|
|
3322
|
+
(function (ValidationErrorId) {
|
|
3323
|
+
ValidationErrorId["birthDatePattern"] = "birthDatePattern";
|
|
3324
|
+
ValidationErrorId["expirationLength"] = "expirationLength";
|
|
3325
|
+
ValidationErrorId["expirationMonthPattern"] = "expirationMonthPattern";
|
|
3326
|
+
ValidationErrorId["expirationMinMonth"] = "expirationMinMonth";
|
|
3327
|
+
ValidationErrorId["expirationMaxMonth"] = "expirationMaxMonth";
|
|
3328
|
+
ValidationErrorId["expirationYearPattern"] = "expirationYearPattern";
|
|
3329
|
+
ValidationErrorId["expirationMinYear"] = "expirationMinYear";
|
|
3330
|
+
ValidationErrorId["expirationMaxYear"] = "expirationMaxYear";
|
|
3331
|
+
ValidationErrorId["couponPattern"] = "couponPattern";
|
|
3332
|
+
ValidationErrorId["emailPattern"] = "emailPattern";
|
|
3333
|
+
ValidationErrorId["cardNumberPattern"] = "cardNumberPattern";
|
|
3334
|
+
ValidationErrorId["required"] = "required";
|
|
3335
|
+
ValidationErrorId["minLength"] = "minLength";
|
|
3336
|
+
ValidationErrorId["maxLength"] = "maxLength";
|
|
3337
|
+
ValidationErrorId["cpfNumberPattern"] = "cpfNumberPattern";
|
|
3338
|
+
ValidationErrorId["cvvPattern"] = "cvvPattern";
|
|
3339
|
+
ValidationErrorId["phonePattern"] = "phonePattern";
|
|
3340
|
+
ValidationErrorId["buildingNumberPattern"] = "buildingNumberPattern";
|
|
3341
|
+
ValidationErrorId["zipPattern"] = "zipPattern";
|
|
3342
|
+
ValidationErrorId["dataPattern"] = "dataPattern";
|
|
3343
|
+
})(ValidationErrorId || (ValidationErrorId = {}));
|
|
3344
|
+
|
|
3317
3345
|
const emailRegexp = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; // eslint-disable-line
|
|
3318
3346
|
function convertedEmailValidator() {
|
|
3319
|
-
return convert(Validators.pattern(emailRegexp), 'Enter a valid email'
|
|
3347
|
+
return convert(Validators.pattern(emailRegexp), 'Enter a valid email', {
|
|
3348
|
+
id: ValidationErrorId.emailPattern,
|
|
3349
|
+
});
|
|
3320
3350
|
}
|
|
3321
3351
|
|
|
3322
3352
|
function convertedRequiredValidator() {
|
|
3323
|
-
return convert(Validators.required, 'Required'
|
|
3353
|
+
return convert(Validators.required, 'Required', {
|
|
3354
|
+
id: ValidationErrorId.required,
|
|
3355
|
+
});
|
|
3324
3356
|
}
|
|
3325
3357
|
|
|
3326
3358
|
class Converter {
|
|
@@ -3353,7 +3385,10 @@ class Converter {
|
|
|
3353
3385
|
const errorMessage = field.validation_error_msg
|
|
3354
3386
|
? field.validation_error_msg
|
|
3355
3387
|
: 'Enter valid data';
|
|
3356
|
-
validators.push(convert(Validators.pattern(pattern), errorMessage
|
|
3388
|
+
validators.push(convert(Validators.pattern(pattern), errorMessage, {
|
|
3389
|
+
id: ValidationErrorId.dataPattern,
|
|
3390
|
+
defaultMessage: field.validation_error_msg,
|
|
3391
|
+
}));
|
|
3357
3392
|
}
|
|
3358
3393
|
}
|
|
3359
3394
|
return validators;
|
|
@@ -3444,6 +3479,20 @@ class TextControlConfig extends ControlConfig {
|
|
|
3444
3479
|
}
|
|
3445
3480
|
}
|
|
3446
3481
|
|
|
3482
|
+
function minLengthValidator(minLength) {
|
|
3483
|
+
return convert(Validators.minLength(minLength), `Enter at least ${minLength} characters`, {
|
|
3484
|
+
id: ValidationErrorId.minLength,
|
|
3485
|
+
minLength,
|
|
3486
|
+
});
|
|
3487
|
+
}
|
|
3488
|
+
|
|
3489
|
+
function maxLengthValidator(maxLength) {
|
|
3490
|
+
return convert(Validators.maxLength(maxLength), `Enter no more than ${maxLength} characters`, {
|
|
3491
|
+
id: ValidationErrorId.maxLength,
|
|
3492
|
+
maxLength,
|
|
3493
|
+
});
|
|
3494
|
+
}
|
|
3495
|
+
|
|
3447
3496
|
const restrictedValueValidator = (restrictedValue) => {
|
|
3448
3497
|
return ({ value }) => {
|
|
3449
3498
|
return value !== restrictedValue ? null : { valueAllowed: false };
|
|
@@ -3466,12 +3515,11 @@ class ZipConverter extends Converter {
|
|
|
3466
3515
|
const maxLength = this.isUsCountry ? this.usCountryLength : this.maxLength;
|
|
3467
3516
|
const validators = super
|
|
3468
3517
|
.getValidators(field)
|
|
3469
|
-
.concat([
|
|
3470
|
-
convert(Validators.minLength(minLength), `Enter at least ${minLength} characters`),
|
|
3471
|
-
convert(Validators.maxLength(maxLength), `Enter no more than ${maxLength} characters`),
|
|
3472
|
-
]);
|
|
3518
|
+
.concat([minLengthValidator(minLength), maxLengthValidator(maxLength)]);
|
|
3473
3519
|
if (this.isUsCountry) {
|
|
3474
|
-
validators.push(convert(restrictedValueValidator('00000'), 'Enter a valid ZIP code'
|
|
3520
|
+
validators.push(convert(restrictedValueValidator('00000'), 'Enter a valid ZIP code', {
|
|
3521
|
+
id: ValidationErrorId.zipPattern,
|
|
3522
|
+
}));
|
|
3475
3523
|
}
|
|
3476
3524
|
return validators;
|
|
3477
3525
|
}
|
|
@@ -3524,7 +3572,10 @@ const luhnFormulaValidator = ({ value }) => {
|
|
|
3524
3572
|
}
|
|
3525
3573
|
const error = {
|
|
3526
3574
|
rewritableError: {
|
|
3527
|
-
message:
|
|
3575
|
+
message: 'Enter a valid card number',
|
|
3576
|
+
params: {
|
|
3577
|
+
id: ValidationErrorId.cardNumberPattern,
|
|
3578
|
+
},
|
|
3528
3579
|
},
|
|
3529
3580
|
};
|
|
3530
3581
|
if (/[^0-9 -]+/.test(value)) {
|
|
@@ -3561,6 +3612,37 @@ class CardNumberConfig extends ControlConfig {
|
|
|
3561
3612
|
}
|
|
3562
3613
|
}
|
|
3563
3614
|
|
|
3615
|
+
class CreditCardMaxLengthValidator {
|
|
3616
|
+
constructor(creditService) {
|
|
3617
|
+
this.creditService = creditService;
|
|
3618
|
+
this.validate = (field) => {
|
|
3619
|
+
if (isEmptyInputValue(field.value) || !isString(field.value)) {
|
|
3620
|
+
return null;
|
|
3621
|
+
}
|
|
3622
|
+
const length = field.value.length;
|
|
3623
|
+
const cardType = this.creditService.getTypeByNumber(field.value);
|
|
3624
|
+
const { maxLength } = this.creditService.getCreditCardSettings(cardType);
|
|
3625
|
+
if (length <= maxLength)
|
|
3626
|
+
return null;
|
|
3627
|
+
return {
|
|
3628
|
+
rewritableError: {
|
|
3629
|
+
message: `Enter no more than ${maxLength} characters`,
|
|
3630
|
+
number: maxLength,
|
|
3631
|
+
params: {
|
|
3632
|
+
id: ValidationErrorId.maxLength,
|
|
3633
|
+
maxLength,
|
|
3634
|
+
},
|
|
3635
|
+
},
|
|
3636
|
+
};
|
|
3637
|
+
};
|
|
3638
|
+
}
|
|
3639
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CreditCardMaxLengthValidator, deps: [{ token: CreditCardService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3640
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CreditCardMaxLengthValidator }); }
|
|
3641
|
+
}
|
|
3642
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CreditCardMaxLengthValidator, decorators: [{
|
|
3643
|
+
type: Injectable
|
|
3644
|
+
}], ctorParameters: () => [{ type: CreditCardService }] });
|
|
3645
|
+
|
|
3564
3646
|
class CreditCardMinLengthValidator {
|
|
3565
3647
|
constructor(creditService) {
|
|
3566
3648
|
this.creditService = creditService;
|
|
@@ -3571,14 +3653,18 @@ class CreditCardMinLengthValidator {
|
|
|
3571
3653
|
const length = field.value.length;
|
|
3572
3654
|
const cardType = this.creditService.getTypeByNumber(field.value);
|
|
3573
3655
|
const { minLength } = this.creditService.getCreditCardSettings(cardType);
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3656
|
+
if (length >= minLength)
|
|
3657
|
+
return null;
|
|
3658
|
+
return {
|
|
3659
|
+
rewritableError: {
|
|
3660
|
+
message: `Enter at least ${minLength} characters`,
|
|
3661
|
+
number: minLength,
|
|
3662
|
+
params: {
|
|
3663
|
+
id: ValidationErrorId.minLength,
|
|
3664
|
+
minLength,
|
|
3579
3665
|
},
|
|
3580
|
-
}
|
|
3581
|
-
|
|
3666
|
+
},
|
|
3667
|
+
};
|
|
3582
3668
|
};
|
|
3583
3669
|
}
|
|
3584
3670
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CreditCardMinLengthValidator, deps: [{ token: CreditCardService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -3619,12 +3705,12 @@ class CardNumberConverter extends Converter {
|
|
|
3619
3705
|
getDataType() {
|
|
3620
3706
|
return 'text';
|
|
3621
3707
|
}
|
|
3622
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardNumberConverter, deps: [{ token: SyncService }, { token:
|
|
3708
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardNumberConverter, deps: [{ token: SyncService }, { token: CreditCardMaxLengthValidator }, { token: CreditCardMinLengthValidator }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3623
3709
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardNumberConverter }); }
|
|
3624
3710
|
}
|
|
3625
3711
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CardNumberConverter, decorators: [{
|
|
3626
3712
|
type: Injectable
|
|
3627
|
-
}], ctorParameters: () => [{ type: SyncService }, { type:
|
|
3713
|
+
}], ctorParameters: () => [{ type: SyncService }, { type: CreditCardMaxLengthValidator }, { type: CreditCardMinLengthValidator }] });
|
|
3628
3714
|
|
|
3629
3715
|
const maxMonths$1 = 12;
|
|
3630
3716
|
const getMinMonth$1 = (parsedYear) => {
|
|
@@ -3634,9 +3720,10 @@ const getMinMonth$1 = (parsedYear) => {
|
|
|
3634
3720
|
minMonth = year === today.getFullYear() ? today.getMonth() + 1 : 1;
|
|
3635
3721
|
return minMonth;
|
|
3636
3722
|
};
|
|
3637
|
-
const sendErrMessage$2 = (
|
|
3723
|
+
const sendErrMessage$2 = (message, params) => ({
|
|
3638
3724
|
cardMonthExpiration: {
|
|
3639
|
-
message
|
|
3725
|
+
message,
|
|
3726
|
+
params,
|
|
3640
3727
|
},
|
|
3641
3728
|
});
|
|
3642
3729
|
function cardMonthValidator(formState) {
|
|
@@ -3648,16 +3735,27 @@ function cardMonthValidator(formState) {
|
|
|
3648
3735
|
const twoDigitsRegex = new RegExp(/^\d{2}$/);
|
|
3649
3736
|
const fieldCommonLength = 2;
|
|
3650
3737
|
if (value.length !== fieldCommonLength) {
|
|
3651
|
-
return sendErrMessage$2(`Enter ${fieldCommonLength} characters
|
|
3738
|
+
return sendErrMessage$2(`Enter ${fieldCommonLength} characters`, {
|
|
3739
|
+
id: ValidationErrorId.expirationLength,
|
|
3740
|
+
requiredLength: fieldCommonLength,
|
|
3741
|
+
});
|
|
3652
3742
|
}
|
|
3653
3743
|
if (!twoDigitsRegex.test(value)) {
|
|
3654
|
-
return sendErrMessage$2(
|
|
3744
|
+
return sendErrMessage$2('Enter a valid expiration month', {
|
|
3745
|
+
id: ValidationErrorId.expirationMonthPattern,
|
|
3746
|
+
});
|
|
3655
3747
|
}
|
|
3656
3748
|
if (Number(value) < minMonth) {
|
|
3657
|
-
return sendErrMessage$2(`Enter a month greater than or equal to ${minMonth}
|
|
3749
|
+
return sendErrMessage$2(`Enter a month greater than or equal to ${minMonth}`, {
|
|
3750
|
+
id: ValidationErrorId.expirationMinMonth,
|
|
3751
|
+
minMonth,
|
|
3752
|
+
});
|
|
3658
3753
|
}
|
|
3659
3754
|
if (Number(value) > maxMonths$1) {
|
|
3660
|
-
return sendErrMessage$2(`Enter a month less than or equal to ${maxMonths$1}
|
|
3755
|
+
return sendErrMessage$2(`Enter a month less than or equal to ${maxMonths$1}`, {
|
|
3756
|
+
id: ValidationErrorId.expirationMaxMonth,
|
|
3757
|
+
maxMonth: maxMonths$1,
|
|
3758
|
+
});
|
|
3661
3759
|
}
|
|
3662
3760
|
return null;
|
|
3663
3761
|
};
|
|
@@ -3704,7 +3802,9 @@ class CvvConverter extends Converter {
|
|
|
3704
3802
|
getValidators(field, formState) {
|
|
3705
3803
|
const validators = super.getValidators(field);
|
|
3706
3804
|
const activeCardType = formState ? formState.activeCardType : null;
|
|
3707
|
-
const getPatternValidator = (pattern) => convert(Validators.pattern(pattern),
|
|
3805
|
+
const getPatternValidator = (pattern) => convert(Validators.pattern(pattern), 'Enter a valid CVV/CVC', {
|
|
3806
|
+
id: ValidationErrorId.cvvPattern,
|
|
3807
|
+
});
|
|
3708
3808
|
switch (activeCardType) {
|
|
3709
3809
|
case CreditCardTypes.AMERICAN_EXPRESS: {
|
|
3710
3810
|
this.maxFieldLength = 4;
|
|
@@ -3765,7 +3865,10 @@ const birthdateValidator = ({ value }) => {
|
|
|
3765
3865
|
}
|
|
3766
3866
|
const error = {
|
|
3767
3867
|
invalidBirthDate: {
|
|
3768
|
-
message:
|
|
3868
|
+
message: 'Enter a valid birth date',
|
|
3869
|
+
params: {
|
|
3870
|
+
id: ValidationErrorId.birthDatePattern,
|
|
3871
|
+
},
|
|
3769
3872
|
},
|
|
3770
3873
|
};
|
|
3771
3874
|
const dateArr = value.split('/');
|
|
@@ -3800,10 +3903,10 @@ class BirthDateConverter extends Converter {
|
|
|
3800
3903
|
super(syncService);
|
|
3801
3904
|
}
|
|
3802
3905
|
getValidators(field) {
|
|
3803
|
-
return super
|
|
3804
|
-
.
|
|
3805
|
-
|
|
3806
|
-
|
|
3906
|
+
return super.getValidators(field).concat([
|
|
3907
|
+
convert(Validators.pattern(/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/), 'Enter a valid birth date', {
|
|
3908
|
+
id: ValidationErrorId.birthDatePattern,
|
|
3909
|
+
}),
|
|
3807
3910
|
birthdateValidator,
|
|
3808
3911
|
]);
|
|
3809
3912
|
}
|
|
@@ -3852,10 +3955,10 @@ class CpfNameConverter extends Converter {
|
|
|
3852
3955
|
super(syncService);
|
|
3853
3956
|
}
|
|
3854
3957
|
getValidators(field) {
|
|
3855
|
-
return super
|
|
3856
|
-
.
|
|
3857
|
-
|
|
3858
|
-
|
|
3958
|
+
return super.getValidators(field).concat([
|
|
3959
|
+
convert(Validators.pattern(cpfNameRegex), 'Enter a valid CPF number', {
|
|
3960
|
+
id: ValidationErrorId.cpfNumberPattern,
|
|
3961
|
+
}),
|
|
3859
3962
|
]);
|
|
3860
3963
|
}
|
|
3861
3964
|
createControlConfig(field) {
|
|
@@ -3906,7 +4009,9 @@ class StreetNumberConverter extends Converter {
|
|
|
3906
4009
|
getValidators(field, formState) {
|
|
3907
4010
|
const validators = super.getValidators(field);
|
|
3908
4011
|
if (formState?.country === 'BL') {
|
|
3909
|
-
validators.push(convert(restrictedValueValidator('0'),
|
|
4012
|
+
validators.push(convert(restrictedValueValidator('0'), 'Enter a valid building number', {
|
|
4013
|
+
id: ValidationErrorId.buildingNumberPattern,
|
|
4014
|
+
}));
|
|
3910
4015
|
}
|
|
3911
4016
|
return validators;
|
|
3912
4017
|
}
|
|
@@ -3950,7 +4055,10 @@ class CheckboxConverter extends Converter {
|
|
|
3950
4055
|
getValidators(field) {
|
|
3951
4056
|
const validators = [];
|
|
3952
4057
|
if (field.isMandatory === this.checkedValue) {
|
|
3953
|
-
validators.push(convert(restrictedValueValidator(this.uncheckedValue), '
|
|
4058
|
+
validators.push(convert(restrictedValueValidator(this.uncheckedValue), field.validation_error_msg || 'Required', {
|
|
4059
|
+
id: ValidationErrorId.required,
|
|
4060
|
+
defaultMessage: field.validation_error_msg,
|
|
4061
|
+
}));
|
|
3954
4062
|
}
|
|
3955
4063
|
return validators;
|
|
3956
4064
|
}
|
|
@@ -4063,8 +4171,10 @@ class CouponControlConfig extends ControlConfig {
|
|
|
4063
4171
|
}
|
|
4064
4172
|
}
|
|
4065
4173
|
|
|
4066
|
-
function couponValidator(message =
|
|
4067
|
-
return convert(Validators.pattern(/^[0-9a-z_-]+$/i), message
|
|
4174
|
+
function couponValidator(message = 'Enter a valid promo code') {
|
|
4175
|
+
return convert(Validators.pattern(/^[0-9a-z_-]+$/i), message, {
|
|
4176
|
+
id: ValidationErrorId.couponPattern,
|
|
4177
|
+
});
|
|
4068
4178
|
}
|
|
4069
4179
|
|
|
4070
4180
|
class CouponConverter extends Converter {
|
|
@@ -4086,9 +4196,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
4086
4196
|
type: Injectable
|
|
4087
4197
|
}], ctorParameters: () => [{ type: SyncService }] });
|
|
4088
4198
|
|
|
4089
|
-
const sendErrMessage$1 = (
|
|
4199
|
+
const sendErrMessage$1 = (message, params) => ({
|
|
4090
4200
|
cardYearExpiration: {
|
|
4091
|
-
message
|
|
4201
|
+
message,
|
|
4202
|
+
params,
|
|
4092
4203
|
},
|
|
4093
4204
|
});
|
|
4094
4205
|
const getLastCharactersInYear$1 = (str = new Date().getFullYear().toString()) => {
|
|
@@ -4105,17 +4216,28 @@ function cardYearValidator(control) {
|
|
|
4105
4216
|
const twoDigitsRegex = new RegExp(/^\d{2}$/);
|
|
4106
4217
|
const fieldCommonLength = 2;
|
|
4107
4218
|
if (value.length !== fieldCommonLength) {
|
|
4108
|
-
return sendErrMessage$1(`Enter ${fieldCommonLength} characters
|
|
4219
|
+
return sendErrMessage$1(`Enter ${fieldCommonLength} characters`, {
|
|
4220
|
+
id: ValidationErrorId.expirationLength,
|
|
4221
|
+
requiredLength: fieldCommonLength,
|
|
4222
|
+
});
|
|
4109
4223
|
}
|
|
4110
4224
|
if (!twoDigitsRegex.test(value)) {
|
|
4111
|
-
return sendErrMessage$1(
|
|
4225
|
+
return sendErrMessage$1('Enter a valid expiration year', {
|
|
4226
|
+
id: ValidationErrorId.expirationYearPattern,
|
|
4227
|
+
});
|
|
4112
4228
|
}
|
|
4113
4229
|
if (Number(value) < minYear) {
|
|
4114
|
-
return sendErrMessage$1(`Enter a year greater than or equal to ${minYear}
|
|
4230
|
+
return sendErrMessage$1(`Enter a year greater than or equal to ${minYear}`, {
|
|
4231
|
+
id: ValidationErrorId.expirationMinYear,
|
|
4232
|
+
minYear,
|
|
4233
|
+
});
|
|
4115
4234
|
}
|
|
4116
4235
|
const maxValidYear = minYear + maxYearsCount$1;
|
|
4117
4236
|
if (Number(value) > maxValidYear) {
|
|
4118
|
-
return sendErrMessage$1(`Enter a year less than or equal to ${maxValidYear}
|
|
4237
|
+
return sendErrMessage$1(`Enter a year less than or equal to ${maxValidYear}`, {
|
|
4238
|
+
id: ValidationErrorId.expirationMaxYear,
|
|
4239
|
+
maxYear: maxValidYear,
|
|
4240
|
+
});
|
|
4119
4241
|
}
|
|
4120
4242
|
return null;
|
|
4121
4243
|
}
|
|
@@ -4153,15 +4275,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
4153
4275
|
}], ctorParameters: () => [{ type: SyncService }] });
|
|
4154
4276
|
|
|
4155
4277
|
function phoneValidator() {
|
|
4156
|
-
return convert(Validators.pattern(/^\d*$/), 'Enter a valid phone'
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
function minLengthValidator(minLength) {
|
|
4160
|
-
return convert(Validators.minLength(minLength), `Enter at least ${minLength} characters`);
|
|
4161
|
-
}
|
|
4162
|
-
|
|
4163
|
-
function maxLengthValidator(maxLength) {
|
|
4164
|
-
return convert(Validators.maxLength(maxLength), `Enter no more than ${maxLength} characters`);
|
|
4278
|
+
return convert(Validators.pattern(/^\d*$/), 'Enter a valid phone', {
|
|
4279
|
+
id: ValidationErrorId.phonePattern,
|
|
4280
|
+
});
|
|
4165
4281
|
}
|
|
4166
4282
|
|
|
4167
4283
|
class PhoneControlConfig extends ControlConfig {
|
|
@@ -4210,9 +4326,10 @@ const getMinMonth = (parsedYear) => {
|
|
|
4210
4326
|
}
|
|
4211
4327
|
return minMonth;
|
|
4212
4328
|
};
|
|
4213
|
-
const sendErrMessage = (
|
|
4329
|
+
const sendErrMessage = (message, params) => ({
|
|
4214
4330
|
rewritableError: {
|
|
4215
|
-
message
|
|
4331
|
+
message,
|
|
4332
|
+
params,
|
|
4216
4333
|
},
|
|
4217
4334
|
});
|
|
4218
4335
|
const getLastCharactersInYear = (str = new Date().getFullYear().toString()) => {
|
|
@@ -4237,26 +4354,45 @@ function cardExpValidator(control) {
|
|
|
4237
4354
|
const fieldCommonLength = 4;
|
|
4238
4355
|
const trickyFieldLength = fieldCommonLength + 1;
|
|
4239
4356
|
if (value.length !== trickyFieldLength) {
|
|
4240
|
-
return sendErrMessage(`Enter ${fieldCommonLength} characters
|
|
4357
|
+
return sendErrMessage(`Enter ${fieldCommonLength} characters`, {
|
|
4358
|
+
id: ValidationErrorId.expirationLength,
|
|
4359
|
+
requiredLength: fieldCommonLength,
|
|
4360
|
+
});
|
|
4241
4361
|
}
|
|
4242
4362
|
if (!twoDigitsRegex.test(month)) {
|
|
4243
|
-
return sendErrMessage('Enter a valid expiration month'
|
|
4363
|
+
return sendErrMessage('Enter a valid expiration month', {
|
|
4364
|
+
id: ValidationErrorId.expirationMonthPattern,
|
|
4365
|
+
});
|
|
4244
4366
|
}
|
|
4245
4367
|
if (Number(month) < minMonth) {
|
|
4246
|
-
return sendErrMessage(`Enter a month greater than or equal to ${minMonth}
|
|
4368
|
+
return sendErrMessage(`Enter a month greater than or equal to ${minMonth}`, {
|
|
4369
|
+
id: ValidationErrorId.expirationMinMonth,
|
|
4370
|
+
minMonth,
|
|
4371
|
+
});
|
|
4247
4372
|
}
|
|
4248
4373
|
if (Number(month) > maxMonths) {
|
|
4249
|
-
return sendErrMessage(`Enter a month less than or equal to ${maxMonths}
|
|
4374
|
+
return sendErrMessage(`Enter a month less than or equal to ${maxMonths}`, {
|
|
4375
|
+
id: ValidationErrorId.expirationMaxMonth,
|
|
4376
|
+
maxMonth: maxMonths,
|
|
4377
|
+
});
|
|
4250
4378
|
}
|
|
4251
4379
|
if (!twoDigitsRegex.test(year)) {
|
|
4252
|
-
return sendErrMessage(
|
|
4380
|
+
return sendErrMessage('Enter a valid expiration year', {
|
|
4381
|
+
id: ValidationErrorId.expirationYearPattern,
|
|
4382
|
+
});
|
|
4253
4383
|
}
|
|
4254
4384
|
if (Number(year) < minYear) {
|
|
4255
|
-
return sendErrMessage(`Enter a year greater than or equal to ${minYear}
|
|
4385
|
+
return sendErrMessage(`Enter a year greater than or equal to ${minYear}`, {
|
|
4386
|
+
id: ValidationErrorId.expirationMinYear,
|
|
4387
|
+
minYear,
|
|
4388
|
+
});
|
|
4256
4389
|
}
|
|
4257
4390
|
const maxValidYear = minYear + maxYearsCount;
|
|
4258
4391
|
if (Number(year) > maxValidYear) {
|
|
4259
|
-
return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}
|
|
4392
|
+
return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}`, {
|
|
4393
|
+
id: ValidationErrorId.expirationMaxYear,
|
|
4394
|
+
maxYear: maxValidYear,
|
|
4395
|
+
});
|
|
4260
4396
|
}
|
|
4261
4397
|
return null;
|
|
4262
4398
|
}
|
|
@@ -8157,14 +8293,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
8157
8293
|
class ValidatorsModule {
|
|
8158
8294
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ValidatorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8159
8295
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: ValidatorsModule, imports: [CommonModule] }); }
|
|
8160
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ValidatorsModule, providers: [CreditCardMinLengthValidator], imports: [CommonModule] }); }
|
|
8296
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ValidatorsModule, providers: [CreditCardMinLengthValidator, CreditCardMaxLengthValidator], imports: [CommonModule] }); }
|
|
8161
8297
|
}
|
|
8162
8298
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ValidatorsModule, decorators: [{
|
|
8163
8299
|
type: NgModule,
|
|
8164
8300
|
args: [{
|
|
8165
8301
|
declarations: [],
|
|
8166
8302
|
imports: [CommonModule],
|
|
8167
|
-
providers: [CreditCardMinLengthValidator],
|
|
8303
|
+
providers: [CreditCardMinLengthValidator, CreditCardMaxLengthValidator],
|
|
8168
8304
|
}]
|
|
8169
8305
|
}] });
|
|
8170
8306
|
|