jconsumer-shared 0.0.3 → 1.0.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/esm2022/lib/account-service.mjs +156 -7
- package/esm2022/lib/auth-service.mjs +9 -1
- package/esm2022/lib/booking-service.mjs +480 -0
- package/esm2022/lib/common.service.mjs +155 -5
- package/esm2022/lib/confirm/confirm-box.component.mjs +159 -0
- package/esm2022/lib/confirm/confirm-box.module.mjs +62 -0
- package/esm2022/lib/consumer-service.mjs +780 -0
- package/esm2022/lib/currency-service.mjs +12 -0
- package/esm2022/lib/environment.service.mjs +23 -0
- package/esm2022/lib/error-message.module.mjs +23 -0
- package/esm2022/lib/file-service.mjs +23 -17
- package/esm2022/lib/form-message/field-error-display/field-error-display.component.mjs +21 -0
- package/esm2022/lib/form-message/form-message-display.module.mjs +35 -0
- package/esm2022/lib/form-message/form-message-display.service.mjs +44 -0
- package/esm2022/lib/form-message/form-success-display/form-success-display.component.mjs +18 -0
- package/esm2022/lib/injector-resolver.mjs +28 -0
- package/esm2022/lib/media-service.mjs +49 -0
- package/esm2022/lib/order.service.mjs +16 -1
- package/esm2022/lib/payment/modes/payment-modes.component.mjs +35 -0
- package/esm2022/lib/payment/modes/payment-modes.module.mjs +24 -0
- package/esm2022/lib/payment/payment.module.mjs +26 -0
- package/esm2022/lib/paytm.service.mjs +131 -0
- package/esm2022/lib/phone-input/phone-input.component.mjs +48 -44
- package/esm2022/lib/pipes/autolink/autolink.module.mjs +20 -0
- package/esm2022/lib/pipes/date-format/date-format.module.mjs +19 -0
- package/esm2022/lib/pipes/date-format/date-format.pipe.mjs +42 -0
- package/esm2022/lib/project-constants.mjs +310 -0
- package/esm2022/lib/questionaire/edit/questionnaire.component.mjs +20 -15
- package/esm2022/lib/questionaire/edit/questionnaire.module.mjs +5 -4
- package/esm2022/lib/razorpay.service.mjs +157 -0
- package/esm2022/lib/request-dialog/request-dialog.component.mjs +29 -0
- package/esm2022/lib/request-dialog/request-dialog.module.mjs +24 -0
- package/esm2022/lib/shared-account.guard.mjs +41 -0
- package/esm2022/lib/shared-account.resolver.mjs +22 -0
- package/esm2022/lib/shared.service.mjs +85 -10
- package/esm2022/lib/showuploadfile/showuploadfile.component.mjs +3 -3
- package/esm2022/lib/theme.service.mjs +30 -0
- package/esm2022/lib/timezone-converter.mjs +49 -0
- package/esm2022/lib/toast.service.mjs +2 -2
- package/esm2022/lib/twilio-service.mjs +466 -0
- package/esm2022/public-api.mjs +32 -1
- package/fesm2022/jconsumer-shared.mjs +3852 -398
- package/fesm2022/jconsumer-shared.mjs.map +1 -1
- package/jconsumer-shared-1.0.0.tgz +0 -0
- package/lib/account-service.d.ts +41 -2
- package/lib/auth-service.d.ts +1 -0
- package/lib/booking-service.d.ts +101 -0
- package/lib/common.service.d.ts +12 -1
- package/lib/confirm/confirm-box.component.d.ts +43 -0
- package/lib/confirm/confirm-box.module.d.ts +16 -0
- package/lib/consumer-service.d.ts +178 -0
- package/lib/currency-service.d.ts +4 -0
- package/lib/environment.service.d.ts +9 -0
- package/lib/error-message.module.d.ts +7 -0
- package/lib/file-service.d.ts +5 -2
- package/lib/form-message/field-error-display/field-error-display.component.d.ts +8 -0
- package/lib/form-message/form-message-display.module.d.ts +10 -0
- package/lib/form-message/form-message-display.service.d.ts +13 -0
- package/lib/form-message/form-success-display/form-success-display.component.d.ts +7 -0
- package/lib/injector-resolver.d.ts +2 -0
- package/lib/media-service.d.ts +9 -0
- package/lib/order.service.d.ts +4 -0
- package/lib/payment/modes/payment-modes.component.d.ts +15 -0
- package/lib/payment/modes/payment-modes.module.d.ts +9 -0
- package/lib/payment/payment.module.d.ts +7 -0
- package/lib/paytm.service.d.ts +13 -0
- package/lib/phone-input/phone-input.component.d.ts +5 -3
- package/lib/pipes/autolink/autolink.module.d.ts +8 -0
- package/lib/pipes/date-format/date-format.module.d.ts +8 -0
- package/lib/pipes/date-format/date-format.pipe.d.ts +12 -0
- package/lib/project-constants.d.ts +227 -0
- package/lib/questionaire/edit/questionnaire.component.d.ts +4 -1
- package/lib/questionaire/edit/questionnaire.module.d.ts +3 -2
- package/lib/razorpay.service.d.ts +26 -0
- package/lib/request-dialog/request-dialog.component.d.ts +11 -0
- package/lib/request-dialog/request-dialog.module.d.ts +9 -0
- package/lib/shared-account.guard.d.ts +11 -0
- package/lib/shared-account.resolver.d.ts +10 -0
- package/lib/shared.service.d.ts +31 -4
- package/lib/theme.service.d.ts +10 -0
- package/lib/timezone-converter.d.ts +8 -0
- package/lib/twilio-service.d.ts +60 -0
- package/package.json +1 -1
- package/public-api.d.ts +31 -0
- package/jconsumer-shared-0.0.3.tgz +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../shared.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/material/radio";
|
|
6
|
+
export class PaymentModesComponent {
|
|
7
|
+
sharedService;
|
|
8
|
+
cashPay;
|
|
9
|
+
paymentModes;
|
|
10
|
+
modeSelected = new EventEmitter();
|
|
11
|
+
constructor(sharedService) {
|
|
12
|
+
this.sharedService = sharedService;
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
}
|
|
16
|
+
getImageSrc(mode) {
|
|
17
|
+
return this.sharedService.getCDNPath() + 'assets/images/payment-modes/' + mode + '.png';
|
|
18
|
+
}
|
|
19
|
+
paymentModeSelected(event) {
|
|
20
|
+
this.modeSelected.emit(event);
|
|
21
|
+
}
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentModesComponent, deps: [{ token: i1.SharedService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: PaymentModesComponent, selector: "app-payment-modes", inputs: { cashPay: "cashPay", paymentModes: "paymentModes" }, outputs: { modeSelected: "modeSelected" }, ngImport: i0, template: "<mat-radio-group class=\"text-center mx-auto payment-mode-fw\" name=\"paymentMode\" (change)=\"paymentModeSelected($event)\">\r\n <div *ngFor=\"let modes of paymentModes\">\r\n <mat-radio-button class=\"pay-rad mt-1 ml-auto\" [value]=\"modes.mode\" >\r\n <div>\r\n <div>\r\n <img class=\"pay-icons\" [src]=\"getImageSrc(modes.mode)\" alt=\"\">\r\n </div>\r\n <div class=\"modeName\">\r\n <div *ngIf=\"modes.modeDisplayName === 'UPI'\"> \r\n <div>{{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Credit Card'\">\r\n <div>{{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Debit Card'\">\r\n <div> {{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Net Banking'\">\r\n <div> {{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Wallet'\">\r\n <div> {{modes.modeDisplayName |uppercase }} </div>\r\n </div>\r\n <div *ngIf=\"modes.mode === 'PAYLATER'\">\r\n <div> {{modes.modeDisplayName |uppercase }} </div>\r\n </div> \r\n </div>\r\n </div>\r\n </mat-radio-button> \r\n </div>\r\n <div>\r\n <mat-radio-button class=\"pay-rad mt-1 ml-auto\" [value]=\"'cash'\" *ngIf=\"cashPay\">\r\n <div class=\"clearfix\"></div>\r\n <div class=\"col-12 p-0 pay-mode \">\r\n <div class=\"d-flex\">\r\n <img class=\"pay-icons\" [src]=\"getImageSrc('PAYCASH')\" alt=\"\">\r\n </div>\r\n <div class=\"col-12 p-0 text-center\">\r\n Pay by Cash\r\n </div>\r\n </div>\r\n </mat-radio-button>\r\n </div>\r\n</mat-radio-group>", styles: [".pay-rad{width:26.5%;height:100px;float:left;border:1px solid #ddd;border-radius:10px;margin:5px;font-size:10px}.pay-icons{height:50px;object-fit:scale-down!important;margin-top:5px;width:100%}::ng-deep mat-radio-button.pay-rad .mat-mdc-radio-checked{box-shadow:0 4px 8px #0000001a,0 6px 20px #0000!important;background:#f1ffff!important;border:1.25px solid #45C3D3!important;border-radius:5px!important}@media (max-width: 768px){.pay-rad{width:30%;height:100%}}@media (min-width: 768px) and (max-width: 856px){.pay-rad{width:30%;height:120px}}.font-weight-normal{font-weight:400!important}@media (max-width: 768px){.font-weight-normal{font-weight:400!important;font-size:13px!important}}::ng-deep .pay-rad .mat-radio-outer-circle,::ng-deep .pay-rad .mat-radio-inner-circle{height:15px!important;width:15px!important}::ng-deep .pay-rad .mat-radio-label{display:block!important}::ng-deep .pay-rad .mat-radio-container{display:block!important;top:5px!important;right:5px;float:right}.modeName{font-size:12px;font-weight:600}::ng-deep .payment-mode-fw .mdc-form-field{flex-direction:row-reverse}@media (max-width: 575px){::ng-deep .payment-mode-fw mat-radio-button.pay-rad .mdc-form-field{flex-direction:column!important}.pay-icons{margin-top:-5px!important}}@media (max-width: 575px){::ng-deep .payment-mode-fw .mat-mdc-radio-button .mdc-radio{margin-right:-70px!important}}@media (min-width: 576px) and (max-width: 767px){::ng-deep .payment-mode-fw .mat-mdc-radio-button .mdc-radio{margin-right:-35px!important}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "pipe", type: i2.UpperCasePipe, name: "uppercase" }] });
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentModesComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'app-payment-modes', template: "<mat-radio-group class=\"text-center mx-auto payment-mode-fw\" name=\"paymentMode\" (change)=\"paymentModeSelected($event)\">\r\n <div *ngFor=\"let modes of paymentModes\">\r\n <mat-radio-button class=\"pay-rad mt-1 ml-auto\" [value]=\"modes.mode\" >\r\n <div>\r\n <div>\r\n <img class=\"pay-icons\" [src]=\"getImageSrc(modes.mode)\" alt=\"\">\r\n </div>\r\n <div class=\"modeName\">\r\n <div *ngIf=\"modes.modeDisplayName === 'UPI'\"> \r\n <div>{{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Credit Card'\">\r\n <div>{{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Debit Card'\">\r\n <div> {{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Net Banking'\">\r\n <div> {{modes.modeDisplayName |uppercase }}</div>\r\n </div>\r\n <div *ngIf=\"modes.modeDisplayName === 'Wallet'\">\r\n <div> {{modes.modeDisplayName |uppercase }} </div>\r\n </div>\r\n <div *ngIf=\"modes.mode === 'PAYLATER'\">\r\n <div> {{modes.modeDisplayName |uppercase }} </div>\r\n </div> \r\n </div>\r\n </div>\r\n </mat-radio-button> \r\n </div>\r\n <div>\r\n <mat-radio-button class=\"pay-rad mt-1 ml-auto\" [value]=\"'cash'\" *ngIf=\"cashPay\">\r\n <div class=\"clearfix\"></div>\r\n <div class=\"col-12 p-0 pay-mode \">\r\n <div class=\"d-flex\">\r\n <img class=\"pay-icons\" [src]=\"getImageSrc('PAYCASH')\" alt=\"\">\r\n </div>\r\n <div class=\"col-12 p-0 text-center\">\r\n Pay by Cash\r\n </div>\r\n </div>\r\n </mat-radio-button>\r\n </div>\r\n</mat-radio-group>", styles: [".pay-rad{width:26.5%;height:100px;float:left;border:1px solid #ddd;border-radius:10px;margin:5px;font-size:10px}.pay-icons{height:50px;object-fit:scale-down!important;margin-top:5px;width:100%}::ng-deep mat-radio-button.pay-rad .mat-mdc-radio-checked{box-shadow:0 4px 8px #0000001a,0 6px 20px #0000!important;background:#f1ffff!important;border:1.25px solid #45C3D3!important;border-radius:5px!important}@media (max-width: 768px){.pay-rad{width:30%;height:100%}}@media (min-width: 768px) and (max-width: 856px){.pay-rad{width:30%;height:120px}}.font-weight-normal{font-weight:400!important}@media (max-width: 768px){.font-weight-normal{font-weight:400!important;font-size:13px!important}}::ng-deep .pay-rad .mat-radio-outer-circle,::ng-deep .pay-rad .mat-radio-inner-circle{height:15px!important;width:15px!important}::ng-deep .pay-rad .mat-radio-label{display:block!important}::ng-deep .pay-rad .mat-radio-container{display:block!important;top:5px!important;right:5px;float:right}.modeName{font-size:12px;font-weight:600}::ng-deep .payment-mode-fw .mdc-form-field{flex-direction:row-reverse}@media (max-width: 575px){::ng-deep .payment-mode-fw mat-radio-button.pay-rad .mdc-form-field{flex-direction:column!important}.pay-icons{margin-top:-5px!important}}@media (max-width: 575px){::ng-deep .payment-mode-fw .mat-mdc-radio-button .mdc-radio{margin-right:-70px!important}}@media (min-width: 576px) and (max-width: 767px){::ng-deep .payment-mode-fw .mat-mdc-radio-button .mdc-radio{margin-right:-35px!important}}\n"] }]
|
|
28
|
+
}], ctorParameters: () => [{ type: i1.SharedService }], propDecorators: { cashPay: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], paymentModes: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], modeSelected: [{
|
|
33
|
+
type: Output
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1tb2Rlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9qY29uc3VtZXItc2hhcmVkL3NyYy9saWIvcGF5bWVudC9tb2Rlcy9wYXltZW50LW1vZGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9wYXltZW50L21vZGVzL3BheW1lbnQtbW9kZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRL0UsTUFBTSxPQUFPLHFCQUFxQjtJQU1aO0lBSlgsT0FBTyxDQUFDO0lBQ1IsWUFBWSxDQUFDO0lBQ1osWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFakQsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBSSxDQUFDO0lBRXJELFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQUk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLEdBQUcsOEJBQThCLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUMxRixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBSztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO3VHQWpCVSxxQkFBcUI7MkZBQXJCLHFCQUFxQixrS0NSbEMsZ3VFQTJDa0I7OzJGRG5DTCxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO2tGQU1wQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGF5bWVudC1tb2RlcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BheW1lbnQtbW9kZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BheW1lbnQtbW9kZXMuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50TW9kZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBjYXNoUGF5O1xyXG4gIEBJbnB1dCgpIHBheW1lbnRNb2RlcztcclxuICBAT3V0cHV0KCkgbW9kZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VTcmMobW9kZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkU2VydmljZS5nZXRDRE5QYXRoKCkgKyAnYXNzZXRzL2ltYWdlcy9wYXltZW50LW1vZGVzLycgKyBtb2RlICsgJy5wbmcnO1xyXG4gIH1cclxuXHJcbiAgcGF5bWVudE1vZGVTZWxlY3RlZChldmVudCkge1xyXG4gICAgdGhpcy5tb2RlU2VsZWN0ZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bWF0LXJhZGlvLWdyb3VwIGNsYXNzPVwidGV4dC1jZW50ZXIgbXgtYXV0byBwYXltZW50LW1vZGUtZndcIiBuYW1lPVwicGF5bWVudE1vZGVcIiAoY2hhbmdlKT1cInBheW1lbnRNb2RlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgbW9kZXMgb2YgcGF5bWVudE1vZGVzXCI+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJwYXktcmFkIG10LTEgbWwtYXV0b1wiIFt2YWx1ZV09XCJtb2Rlcy5tb2RlXCIgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicGF5LWljb25zXCIgW3NyY109XCJnZXRJbWFnZVNyYyhtb2Rlcy5tb2RlKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZXMubW9kZURpc3BsYXlOYW1lID09PSAnVVBJJ1wiPiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e21vZGVzLm1vZGVEaXNwbGF5TmFtZSB8dXBwZXJjYXNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVzLm1vZGVEaXNwbGF5TmFtZSA9PT0gJ0NyZWRpdCBDYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7bW9kZXMubW9kZURpc3BsYXlOYW1lIHx1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZXMubW9kZURpc3BsYXlOYW1lID09PSAnRGViaXQgQ2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7e21vZGVzLm1vZGVEaXNwbGF5TmFtZSB8dXBwZXJjYXNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVzLm1vZGVEaXNwbGF5TmFtZSA9PT0gJ05ldCBCYW5raW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IHt7bW9kZXMubW9kZURpc3BsYXlOYW1lIHx1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZXMubW9kZURpc3BsYXlOYW1lID09PSAnV2FsbGV0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IHt7bW9kZXMubW9kZURpc3BsYXlOYW1lIHx1cHBlcmNhc2UgfX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVzLm1vZGUgPT09ICdQQVlMQVRFUidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7e21vZGVzLm1vZGVEaXNwbGF5TmFtZSB8dXBwZXJjYXNlIH19IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1yYWRpby1idXR0b24+ICAgICAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInBheS1yYWQgbXQtMSBtbC1hdXRvXCIgW3ZhbHVlXT1cIidjYXNoJ1wiICpuZ0lmPVwiY2FzaFBheVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTAgcGF5LW1vZGUgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInBheS1pY29uc1wiIFtzcmNdPVwiZ2V0SW1hZ2VTcmMoJ1BBWUNBU0gnKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFBheSBieSBDYXNoXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbWF0LXJhZGlvLWdyb3VwPiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
4
|
+
import { PaymentModesComponent } from './payment-modes.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class PaymentModesModule {
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentModesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PaymentModesModule, declarations: [PaymentModesComponent], imports: [CommonModule,
|
|
9
|
+
MatRadioModule], exports: [PaymentModesComponent] });
|
|
10
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentModesModule, imports: [CommonModule,
|
|
11
|
+
MatRadioModule] });
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentModesModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [PaymentModesComponent],
|
|
17
|
+
exports: [PaymentModesComponent],
|
|
18
|
+
imports: [
|
|
19
|
+
CommonModule,
|
|
20
|
+
MatRadioModule
|
|
21
|
+
]
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1tb2Rlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9qY29uc3VtZXItc2hhcmVkL3NyYy9saWIvcGF5bWVudC9tb2Rlcy9wYXltZW50LW1vZGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBVWxFLE1BQU0sT0FBTyxrQkFBa0I7dUdBQWxCLGtCQUFrQjt3R0FBbEIsa0JBQWtCLGlCQVBkLHFCQUFxQixhQUdsQyxZQUFZO1lBQ1osY0FBYyxhQUhOLHFCQUFxQjt3R0FNcEIsa0JBQWtCLFlBSjNCLFlBQVk7WUFDWixjQUFjOzsyRkFHTCxrQkFBa0I7a0JBUjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XHJcbmltcG9ydCB7IFBheW1lbnRNb2Rlc0NvbXBvbmVudCB9IGZyb20gJy4vcGF5bWVudC1tb2Rlcy5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtQYXltZW50TW9kZXNDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtQYXltZW50TW9kZXNDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdFJhZGlvTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGF5bWVudE1vZGVzTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { PaytmService } from '../paytm.service';
|
|
4
|
+
import { RazorpayService } from '../razorpay.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class PaymentsModule {
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PaymentsModule, imports: [CommonModule] });
|
|
9
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentsModule, providers: [
|
|
10
|
+
PaytmService,
|
|
11
|
+
RazorpayService
|
|
12
|
+
], imports: [CommonModule] });
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaymentsModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
declarations: [],
|
|
18
|
+
imports: [CommonModule],
|
|
19
|
+
exports: [],
|
|
20
|
+
providers: [
|
|
21
|
+
PaytmService,
|
|
22
|
+
RazorpayService
|
|
23
|
+
]
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9qY29uc3VtZXItc2hhcmVkL3NyYy9saWIvcGF5bWVudC9wYXltZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQWF0RCxNQUFNLE9BQU8sY0FBYzt1R0FBZCxjQUFjO3dHQUFkLGNBQWMsWUFQZCxZQUFZO3dHQU9aLGNBQWMsYUFMZDtZQUNULFlBQVk7WUFDWixlQUFlO1NBQ2hCLFlBTFUsWUFBWTs7MkZBT1osY0FBYztrQkFUMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUUsWUFBWSxDQUFFO29CQUN6QixPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUU7d0JBQ1QsWUFBWTt3QkFDWixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBheXRtU2VydmljZSB9IGZyb20gJy4uL3BheXRtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSYXpvcnBheVNlcnZpY2UgfSBmcm9tICcuLi9yYXpvcnBheS5zZXJ2aWNlJztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFsgQ29tbW9uTW9kdWxlIF0sXHJcbiAgZXhwb3J0czogW10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBQYXl0bVNlcnZpY2UsXHJcbiAgICBSYXpvcnBheVNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50c01vZHVsZSB7IH1cclxuIl19
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { projectConstantsLocal } from "./project-constants";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./service-meta";
|
|
5
|
+
export class PaytmService {
|
|
6
|
+
servicemeta;
|
|
7
|
+
paymentModes = [
|
|
8
|
+
'NB', 'CC', 'DC', 'UPI', 'PPI', 'CARD'
|
|
9
|
+
];
|
|
10
|
+
constructor(servicemeta) {
|
|
11
|
+
this.servicemeta = servicemeta;
|
|
12
|
+
}
|
|
13
|
+
initializePayment(pData, accountId, referrer) {
|
|
14
|
+
let response = JSON.parse(pData.response);
|
|
15
|
+
if (pData.paymentMode === 'CC' || pData.paymentMode === 'DC') {
|
|
16
|
+
pData.paymentMode = 'CARD';
|
|
17
|
+
}
|
|
18
|
+
const paymentModesHidden = this.paymentModes.filter(obj => obj !== pData.paymentMode);
|
|
19
|
+
const paytm_payload = {
|
|
20
|
+
"paymentId": pData.txnid,
|
|
21
|
+
"orderId": pData.orderId,
|
|
22
|
+
"siganature": response.signature
|
|
23
|
+
};
|
|
24
|
+
console.log('response' + JSON.stringify(response));
|
|
25
|
+
this.loadPayTMScript(pData, referrer).onload = () => {
|
|
26
|
+
var config = {
|
|
27
|
+
"root": "",
|
|
28
|
+
"flow": "DEFAULT",
|
|
29
|
+
"data": {
|
|
30
|
+
"orderId": pData.orderId, /* update order id */
|
|
31
|
+
"token": response.body.txnToken, /* update token value */
|
|
32
|
+
"tokenType": "TXN_TOKEN",
|
|
33
|
+
"amount": pData.amount
|
|
34
|
+
},
|
|
35
|
+
"merchant": {
|
|
36
|
+
"mid": pData.merchantId,
|
|
37
|
+
"redirect": false,
|
|
38
|
+
"multipleWindowWebview": true
|
|
39
|
+
},
|
|
40
|
+
"payMode": {
|
|
41
|
+
"filter": {
|
|
42
|
+
'exclude': paymentModesHidden
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"handler": {
|
|
46
|
+
"notifyMerchant": function (eventName, data) {
|
|
47
|
+
console.log("notifyMerchant handler function called");
|
|
48
|
+
console.log("eventName => ", eventName);
|
|
49
|
+
console.log("data => ", data);
|
|
50
|
+
referrer.closeloading();
|
|
51
|
+
},
|
|
52
|
+
"transactionStatus": function (data) {
|
|
53
|
+
console.log("payment status ", data);
|
|
54
|
+
console.log(paytm_payload);
|
|
55
|
+
window['Paytm'].CheckoutJS.close();
|
|
56
|
+
if (data) {
|
|
57
|
+
referrer.transactionCompleted(data, paytm_payload, accountId);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
referrer.transactionCompleted({ STATUS: 'TXN_SUCCESS' }, paytm_payload, accountId);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
console.log(JSON.stringify(config));
|
|
66
|
+
if (window['Paytm'] && window['Paytm'].CheckoutJS) {
|
|
67
|
+
window['Paytm'].CheckoutJS.onLoad(function excecuteAfterCompleteLoad() {
|
|
68
|
+
// initialze configuration using init method
|
|
69
|
+
window['Paytm'].CheckoutJS.init(config).then(function onSuccess() {
|
|
70
|
+
// after successfully updating configuration, invoke JS Checkout
|
|
71
|
+
window['Paytm'].CheckoutJS.invoke();
|
|
72
|
+
}).catch(function onError(error) {
|
|
73
|
+
console.log("error => ", error);
|
|
74
|
+
window['Paytm'].CheckoutJS.close();
|
|
75
|
+
referrer.closeloading();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
window['Paytm'].CheckoutJS.close();
|
|
82
|
+
referrer.closeloading();
|
|
83
|
+
}, 600000);
|
|
84
|
+
}
|
|
85
|
+
loadPayTMScript(pData, isfrom) {
|
|
86
|
+
let payTmurl;
|
|
87
|
+
if (pData.paymentEnv == 'production') {
|
|
88
|
+
payTmurl = projectConstantsLocal.PAYTM_URL;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
payTmurl = projectConstantsLocal.PAYTMLOCAL_URL;
|
|
92
|
+
}
|
|
93
|
+
const url = payTmurl + '/merchantpgpui/checkoutjs/merchants/' + pData.merchantId + '.js';
|
|
94
|
+
console.log('preparing to load...');
|
|
95
|
+
let script = document.createElement('script');
|
|
96
|
+
script.id = pData.orderId;
|
|
97
|
+
script.src = url;
|
|
98
|
+
script.type = 'text/javascript';
|
|
99
|
+
script.async = true;
|
|
100
|
+
script['crossorigin'] = "anonymous";
|
|
101
|
+
// node.charset = 'utf-8';
|
|
102
|
+
// this.renderer.appendChild(document.body, script);
|
|
103
|
+
console.log(isfrom.paytmview);
|
|
104
|
+
// document.getElementById('consumer_donation').appendChild(script);
|
|
105
|
+
isfrom.paytmview.nativeElement.appendChild(script);
|
|
106
|
+
return script;
|
|
107
|
+
}
|
|
108
|
+
updateResult(payload, accountId) {
|
|
109
|
+
let url = 'provider/payment/paytm/update';
|
|
110
|
+
if (accountId) {
|
|
111
|
+
url += '?account=' + accountId;
|
|
112
|
+
}
|
|
113
|
+
return this.servicemeta.httpPost(url, payload);
|
|
114
|
+
}
|
|
115
|
+
updatePaytmPay(payload, accountId) {
|
|
116
|
+
const self = this;
|
|
117
|
+
return new Promise((resolve, reject) => {
|
|
118
|
+
self.updateResult(payload, accountId).subscribe((result) => {
|
|
119
|
+
resolve(result);
|
|
120
|
+
}, (error) => {
|
|
121
|
+
reject(false);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaytmService, deps: [{ token: i1.ServiceMeta }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
126
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaytmService });
|
|
127
|
+
}
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PaytmService, decorators: [{
|
|
129
|
+
type: Injectable
|
|
130
|
+
}], ctorParameters: () => [{ type: i1.ServiceMeta }] });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5dG0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9wYXl0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUk1RCxNQUFNLE9BQU8sWUFBWTtJQUtUO0lBSlosWUFBWSxHQUFHO1FBQ1gsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNO0tBQ3pDLENBQUM7SUFDRixZQUNZLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQ2hDLENBQUM7SUFDTCxpQkFBaUIsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLFFBQWE7UUFDdkQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNELEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQy9CLENBQUM7UUFDRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RixNQUFNLGFBQWEsR0FBRztZQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3hCLFlBQVksRUFBRSxRQUFRLENBQUMsU0FBUztTQUVuQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFV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bkQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNELFlBQVksQ0FBQyxPQUFZLEVBQUUsU0FBZTtRQUN0QyxJQUFJLEdBQUcsR0FBRywrQkFBK0IsQ0FBQztRQUMxQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osR0FBRyxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjLENBQUMsT0FBWSxFQUFFLFNBQWU7UUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzVELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7dUdBeEhRLFlBQVk7MkdBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTWV0YSB9IGZyb20gXCIuL3NlcnZpY2UtbWV0YVwiO1xyXG5pbXBvcnQgeyBwcm9qZWN0Q29uc3RhbnRzTG9jYWwgfSBmcm9tIFwiLi9wcm9qZWN0LWNvbnN0YW50c1wiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFBheXRtU2VydmljZSB7XHJcbiAgICBwYXltZW50TW9kZXMgPSBbXHJcbiAgICAgICAgJ05CJywgJ0NDJywgJ0RDJywgJ1VQSScsICdQUEknLCAnQ0FSRCdcclxuICAgIF07XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHNlcnZpY2VtZXRhOiBTZXJ2aWNlTWV0YVxyXG4gICAgKSB7IH1cclxuICAgIGluaXRpYWxpemVQYXltZW50KHBEYXRhOiBhbnksIGFjY291bnRJZDogYW55LCByZWZlcnJlcjogYW55KSB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShwRGF0YS5yZXNwb25zZSk7XHJcbiAgICAgICAgaWYgKHBEYXRhLnBheW1lbnRNb2RlID09PSAnQ0MnIHx8IHBEYXRhLnBheW1lbnRNb2RlID09PSAnREMnKSB7XHJcbiAgICAgICAgICAgIHBEYXRhLnBheW1lbnRNb2RlID0gJ0NBUkQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXltZW50TW9kZXNIaWRkZW4gPSB0aGlzLnBheW1lbnRNb2Rlcy5maWx0ZXIob2JqID0+IG9iaiAhPT0gcERhdGEucGF5bWVudE1vZGUpO1xyXG4gICAgICAgIGNvbnN0IHBheXRtX3BheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIFwicGF5bWVudElkXCI6IHBEYXRhLnR4bmlkLFxyXG4gICAgICAgICAgICBcIm9yZGVySWRcIjogcERhdGEub3JkZXJJZCxcclxuICAgICAgICAgICAgXCJzaWdhbmF0dXJlXCI6IHJlc3BvbnNlLnNpZ25hdHVyZVxyXG5cclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXNwb25zZScgKyBKU09OLnN0cmluZ2lmeShyZXNwb25zZSkpO1xyXG4gICAgICAgIHRoaXMubG9hZFBheVRNU2NyaXB0KHBEYXRhLCByZWZlcnJlcikub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgY29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgXCJyb290XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBcImZsb3dcIjogXCJERUZBVUxUXCIsXHJcbiAgICAgICAgICAgICAgICBcImRhdGFcIjoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwib3JkZXJJZFwiOiBwRGF0YS5vcmRlcklkLCAvKiB1cGRhdGUgb3JkZXIgaWQgKi9cclxuICAgICAgICAgICAgICAgICAgICBcInRva2VuXCI6IHJlc3BvbnNlLmJvZHkudHhuVG9rZW4sIC8qIHVwZGF0ZSB0b2tlbiB2YWx1ZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIFwidG9rZW5UeXBlXCI6IFwiVFhOX1RPS0VOXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJhbW91bnRcIjogcERhdGEuYW1vdW50XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJtZXJjaGFudFwiOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJtaWRcIjogcERhdGEubWVyY2hhbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICBcInJlZGlyZWN0XCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXVsdGlwbGVXaW5kb3dXZWJ2aWV3XCI6IHRydWVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBcInBheU1vZGVcIjoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiZmlsdGVyXCI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2x1ZGUnOiBwYXltZW50TW9kZXNIaWRkZW5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXCJoYW5kbGVyXCI6IHtcclxuICAgICAgICAgICAgICAgICAgICBcIm5vdGlmeU1lcmNoYW50XCI6IGZ1bmN0aW9uIChldmVudE5hbWU6IGFueSwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm90aWZ5TWVyY2hhbnQgaGFuZGxlciBmdW5jdGlvbiBjYWxsZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXZlbnROYW1lID0+IFwiLCBldmVudE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImRhdGEgPT4gXCIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJlci5jbG9zZWxvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIFwidHJhbnNhY3Rpb25TdGF0dXNcIjogZnVuY3Rpb24gKGRhdGE6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInBheW1lbnQgc3RhdHVzIFwiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocGF5dG1fcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1snUGF5dG0nXS5DaGVja291dEpTLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJlci50cmFuc2FjdGlvbkNvbXBsZXRlZChkYXRhLCBwYXl0bV9wYXlsb2FkLCBhY2NvdW50SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXIudHJhbnNhY3Rpb25Db21wbGV0ZWQoeyBTVEFUVVM6ICdUWE5fU1VDQ0VTUycgfSwgcGF5dG1fcGF5bG9hZCwgYWNjb3VudElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3dbJ1BheXRtJ10gJiYgd2luZG93WydQYXl0bSddLkNoZWNrb3V0SlMpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvd1snUGF5dG0nXS5DaGVja291dEpTLm9uTG9hZChmdW5jdGlvbiBleGNlY3V0ZUFmdGVyQ29tcGxldGVMb2FkKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWx6ZSBjb25maWd1cmF0aW9uIHVzaW5nIGluaXQgbWV0aG9kIFxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd1snUGF5dG0nXS5DaGVja291dEpTLmluaXQoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uU3VjY2VzcygpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHVwZGF0aW5nIGNvbmZpZ3VyYXRpb24sIGludm9rZSBKUyBDaGVja291dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ1BheXRtJ10uQ2hlY2tvdXRKUy5pbnZva2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiBvbkVycm9yKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciA9PiBcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ1BheXRtJ10uQ2hlY2tvdXRKUy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJlci5jbG9zZWxvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvd1snUGF5dG0nXS5DaGVja291dEpTLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHJlZmVycmVyLmNsb3NlbG9hZGluZygpO1xyXG4gICAgICAgIH0sIDYwMDAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvYWRQYXlUTVNjcmlwdChwRGF0YTogYW55LCBpc2Zyb206IGFueSk6IEhUTUxTY3JpcHRFbGVtZW50IHtcclxuICAgICAgICBsZXQgcGF5VG11cmw7XHJcbiAgICAgICAgaWYgKHBEYXRhLnBheW1lbnRFbnYgPT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHBheVRtdXJsID0gcHJvamVjdENvbnN0YW50c0xvY2FsLlBBWVRNX1VSTDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwYXlUbXVybCA9IHByb2plY3RDb25zdGFudHNMb2NhbC5QQVlUTUxPQ0FMX1VSTDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXJsID0gcGF5VG11cmwgKyAnL21lcmNoYW50cGdwdWkvY2hlY2tvdXRqcy9tZXJjaGFudHMvJyArIHBEYXRhLm1lcmNoYW50SWQgKyAnLmpzJztcclxuICAgICAgICBjb25zb2xlLmxvZygncHJlcGFyaW5nIHRvIGxvYWQuLi4nKTtcclxuICAgICAgICBsZXQgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaWQgPSBwRGF0YS5vcmRlcklkO1xyXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmw7XHJcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICAgIHNjcmlwdFsnY3Jvc3NvcmlnaW4nXSA9IFwiYW5vbnltb3VzXCJcclxuICAgICAgICAvLyBub2RlLmNoYXJzZXQgPSAndXRmLTgnO1xyXG4gICAgICAgIC8vIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgc2NyaXB0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhpc2Zyb20ucGF5dG12aWV3KTtcclxuICAgICAgICAvLyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc3VtZXJfZG9uYXRpb24nKS5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgICAgIGlzZnJvbS5wYXl0bXZpZXcubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgICAgIHJldHVybiBzY3JpcHQ7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVSZXN1bHQocGF5bG9hZDogYW55LCBhY2NvdW50SWQ/OiBhbnkpIHtcclxuICAgICAgICBsZXQgdXJsID0gJ3Byb3ZpZGVyL3BheW1lbnQvcGF5dG0vdXBkYXRlJztcclxuICAgICAgICBpZiAoYWNjb3VudElkKSB7XHJcbiAgICAgICAgICAgIHVybCArPSAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBwYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQYXl0bVBheShwYXlsb2FkOiBhbnksIGFjY291bnRJZD86IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYudXBkYXRlUmVzdWx0KHBheWxvYWQsIGFjY291bnRJZCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,103 +1,102 @@
|
|
|
1
|
-
import { Component, forwardRef, Input,
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
1
|
+
import { Component, forwardRef, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';
|
|
3
3
|
import intlTelInput from 'intl-tel-input';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/common";
|
|
6
6
|
import * as i2 from "@angular/forms";
|
|
7
7
|
export class PhoneInputComponent {
|
|
8
|
-
initialCountry = 'us';
|
|
9
|
-
preferredCountries = [];
|
|
10
|
-
nationalMode = true;
|
|
11
|
-
separateDialCode = true;
|
|
12
|
-
otherOptions = {};
|
|
8
|
+
initialCountry = 'us';
|
|
9
|
+
preferredCountries = [];
|
|
10
|
+
nationalMode = true;
|
|
11
|
+
separateDialCode = true;
|
|
12
|
+
otherOptions = {};
|
|
13
13
|
phoneInput;
|
|
14
|
-
|
|
15
|
-
phoneInputInstance;
|
|
16
|
-
// Output Event to send the phone number value to the parent component
|
|
14
|
+
ngModelRef; // Reference to NgModel instance
|
|
17
15
|
phoneNumberChange = new EventEmitter();
|
|
18
|
-
|
|
16
|
+
ngModelChange = new EventEmitter();
|
|
17
|
+
phoneNumber = { dialCode: '', countryCode: '', e164Number: '', number: '' };
|
|
18
|
+
phoneInputInstance;
|
|
19
19
|
onChange = (value) => { };
|
|
20
20
|
onTouched = () => { };
|
|
21
21
|
ngAfterViewInit() {
|
|
22
22
|
if (this.phoneInput && this.phoneInput.nativeElement) {
|
|
23
23
|
this.initializePhoneInput();
|
|
24
24
|
}
|
|
25
|
+
if (this.phoneInputInstance) {
|
|
26
|
+
this.phoneInputInstance.setNumber(this.phoneNumber.e164Number || ''); // Set initial value if available
|
|
27
|
+
}
|
|
25
28
|
}
|
|
26
|
-
// Initialize intl-tel-input for the phone input field
|
|
27
29
|
initializePhoneInput() {
|
|
28
30
|
const options = {
|
|
29
31
|
initialCountry: this.initialCountry,
|
|
30
32
|
preferredCountries: this.preferredCountries,
|
|
31
|
-
nationalMode: this.nationalMode,
|
|
32
|
-
separateDialCode: this.separateDialCode,
|
|
33
|
+
nationalMode: this.nationalMode,
|
|
34
|
+
separateDialCode: this.separateDialCode,
|
|
33
35
|
utilsScript: 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.8/js/utils.js',
|
|
34
|
-
...this.otherOptions
|
|
36
|
+
...this.otherOptions
|
|
35
37
|
};
|
|
36
|
-
// Initialize intl-tel-input
|
|
37
38
|
this.phoneInputInstance = intlTelInput(this.phoneInput.nativeElement, options);
|
|
38
|
-
// Capture the country change event to track the selected country code and dial code
|
|
39
39
|
this.phoneInput.nativeElement.addEventListener('countrychange', () => {
|
|
40
40
|
this.updatePhoneNumber();
|
|
41
41
|
});
|
|
42
|
-
// Capture input event to update phone number in E.164 format
|
|
43
42
|
this.phoneInput.nativeElement.addEventListener('input', () => {
|
|
44
43
|
this.updatePhoneNumber();
|
|
45
44
|
});
|
|
46
|
-
// Set the initial value if available (without showing the dial code)
|
|
47
45
|
if (this.phoneNumber.e164Number) {
|
|
48
|
-
this.phoneInputInstance.setNumber(this.phoneNumber.e164Number);
|
|
46
|
+
this.phoneInputInstance.setNumber(this.phoneNumber.e164Number);
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
|
-
// Method to update the phone number object
|
|
52
49
|
updatePhoneNumber() {
|
|
53
50
|
const dialCode = '+' + this.phoneInputInstance.getSelectedCountryData().dialCode;
|
|
54
51
|
const countryCode = this.phoneInputInstance.getSelectedCountryData().iso2;
|
|
55
|
-
const e164Number = this.phoneInputInstance.getNumber();
|
|
52
|
+
const e164Number = this.phoneInputInstance.getNumber();
|
|
56
53
|
const number = e164Number.split(dialCode)[1];
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
number
|
|
63
|
-
};
|
|
64
|
-
// Emit the updated value to the parent component
|
|
65
|
-
this.phoneNumberChange.emit(this.phoneNumber); // Sending the value to parent
|
|
54
|
+
this.phoneNumber = { dialCode, countryCode, e164Number, number };
|
|
55
|
+
// Emit changes for FormControl and ngModel
|
|
56
|
+
this.phoneNumberChange.emit(this.phoneNumber);
|
|
57
|
+
this.ngModelChange.emit(this.phoneNumber); // For ngModel two-way binding
|
|
58
|
+
this.onChange(this.phoneNumber); // For reactive form support
|
|
66
59
|
}
|
|
67
|
-
// Implement the writeValue method for ControlValueAccessor
|
|
68
60
|
writeValue(value) {
|
|
61
|
+
console.log("In Write Value:", value);
|
|
69
62
|
if (value && value.e164Number) {
|
|
70
63
|
this.phoneNumber = value;
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
if (this.phoneInput && this.phoneInput.nativeElement) {
|
|
66
|
+
// Set the number in intl-tel-input, which will automatically set the country
|
|
67
|
+
// If you need to get the selected country code after setting the number
|
|
68
|
+
const countryData = this.phoneInputInstance.getSelectedCountryData();
|
|
69
|
+
this.phoneNumber.countryCode = countryData.iso2;
|
|
70
|
+
this.phoneNumber.dialCode = `+${countryData.dialCode}`;
|
|
71
|
+
this.phoneNumber.number = value.e164Number.split(this.phoneNumber.dialCode)[1];
|
|
72
|
+
this.phoneNumber.e164Number = value.e164Number;
|
|
73
|
+
// this.phoneInputInstance.setNumber(value.e164Number);
|
|
74
|
+
console.log("Phone:", this.phoneInput);
|
|
75
|
+
}
|
|
76
|
+
}, 0);
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
|
-
// Implement the registerOnChange method for ControlValueAccessor
|
|
77
79
|
registerOnChange(fn) {
|
|
78
80
|
this.onChange = fn;
|
|
79
81
|
}
|
|
80
|
-
// Implement the registerOnTouched method for ControlValueAccessor
|
|
81
82
|
registerOnTouched(fn) {
|
|
82
83
|
this.onTouched = fn;
|
|
83
84
|
}
|
|
84
|
-
// Custom Validation Method: Validate the phone number
|
|
85
85
|
validatePhoneNumber() {
|
|
86
86
|
if (this.phoneInputInstance) {
|
|
87
|
-
|
|
88
|
-
const isValid = this.phoneInputInstance.isValidNumber() || this.phoneNumber.number.startsWith('555');
|
|
87
|
+
const isValid = this.phoneInputInstance.isValidNumber() || this.phoneNumber?.number?.startsWith('555');
|
|
89
88
|
return isValid;
|
|
90
89
|
}
|
|
91
90
|
return false;
|
|
92
91
|
}
|
|
93
92
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PhoneInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: PhoneInputComponent, selector: "app-phone-input", inputs: { initialCountry: "initialCountry", preferredCountries: "preferredCountries", nationalMode: "nationalMode", separateDialCode: "separateDialCode", otherOptions: "otherOptions" }, outputs: { phoneNumberChange: "phoneNumberChange" }, providers: [
|
|
93
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: PhoneInputComponent, selector: "app-phone-input", inputs: { initialCountry: "initialCountry", preferredCountries: "preferredCountries", nationalMode: "nationalMode", separateDialCode: "separateDialCode", otherOptions: "otherOptions" }, outputs: { phoneNumberChange: "phoneNumberChange", ngModelChange: "ngModelChange" }, providers: [
|
|
95
94
|
{
|
|
96
95
|
provide: NG_VALUE_ACCESSOR,
|
|
97
96
|
useExisting: forwardRef(() => PhoneInputComponent),
|
|
98
97
|
multi: true
|
|
99
98
|
}
|
|
100
|
-
], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true }], ngImport: i0, template: "<div class=\"phone-input-wrapper\">\r\n <input #phoneInput type=\"tel\" [(ngModel)]=\"phoneNumber.
|
|
99
|
+
], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true }, { propertyName: "ngModelRef", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "<div class=\"phone-input-wrapper tel-input-container\">\r\n <input #phoneInput type=\"tel\" [(ngModel)]=\"phoneNumber.number\"\r\n name=\"phoneNumber\" [required]=\"true\" #phone=\"ngModel\"\r\n [ngClass]=\"{'is-invalid': !validatePhoneNumber() && phone.touched}\">\r\n\r\n <!-- Validation feedback -->\r\n <!-- <div *ngIf=\"!validatePhoneNumber() && phone.touched\" class=\"text-danger\">\r\n Invalid phone number.\r\n </div> -->\r\n</div>", styles: ["::ng-deep .tel-input-container .iti{width:100%!important}::ng-deep .tel-input-container .iti--separate-dial-code .iti__selected-flag{background-color:transparent}::ng-deep .tel-input-container input::-webkit-input-placeholder{color:#ddd}::ng-deep .tel-input-container input:focus{outline:none;border-color:#e1e2e3}::ng-deep .tel-input-container input{height:40px;width:100%;background:#fff;border:1.39032px solid #E1E2E3;border-radius:4px;padding:15px;font-size:15px}::ng-deep .tel-input-container input.is-invalid{border:1.39032px solid #ff0000}::ng-deep .tel-input-container input::placeholder{color:#ddd}::ng-deep .tel-input-container input.custom:focus{color:#495057;background-color:#fff;border-color:#3c8dbc;outline:0;box-shadow:0 0 #fff}::ng-deep .tel-input-container .iti__country-list{z-index:3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
101
100
|
}
|
|
102
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PhoneInputComponent, decorators: [{
|
|
103
102
|
type: Component,
|
|
@@ -107,7 +106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
107
106
|
useExisting: forwardRef(() => PhoneInputComponent),
|
|
108
107
|
multi: true
|
|
109
108
|
}
|
|
110
|
-
], template: "<div class=\"phone-input-wrapper\">\r\n <input #phoneInput type=\"tel\" [(ngModel)]=\"phoneNumber.
|
|
109
|
+
], template: "<div class=\"phone-input-wrapper tel-input-container\">\r\n <input #phoneInput type=\"tel\" [(ngModel)]=\"phoneNumber.number\"\r\n name=\"phoneNumber\" [required]=\"true\" #phone=\"ngModel\"\r\n [ngClass]=\"{'is-invalid': !validatePhoneNumber() && phone.touched}\">\r\n\r\n <!-- Validation feedback -->\r\n <!-- <div *ngIf=\"!validatePhoneNumber() && phone.touched\" class=\"text-danger\">\r\n Invalid phone number.\r\n </div> -->\r\n</div>", styles: ["::ng-deep .tel-input-container .iti{width:100%!important}::ng-deep .tel-input-container .iti--separate-dial-code .iti__selected-flag{background-color:transparent}::ng-deep .tel-input-container input::-webkit-input-placeholder{color:#ddd}::ng-deep .tel-input-container input:focus{outline:none;border-color:#e1e2e3}::ng-deep .tel-input-container input{height:40px;width:100%;background:#fff;border:1.39032px solid #E1E2E3;border-radius:4px;padding:15px;font-size:15px}::ng-deep .tel-input-container input.is-invalid{border:1.39032px solid #ff0000}::ng-deep .tel-input-container input::placeholder{color:#ddd}::ng-deep .tel-input-container input.custom:focus{color:#495057;background-color:#fff;border-color:#3c8dbc;outline:0;box-shadow:0 0 #fff}::ng-deep .tel-input-container .iti__country-list{z-index:3}\n"] }]
|
|
111
110
|
}], propDecorators: { initialCountry: [{
|
|
112
111
|
type: Input
|
|
113
112
|
}], preferredCountries: [{
|
|
@@ -121,7 +120,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
121
120
|
}], phoneInput: [{
|
|
122
121
|
type: ViewChild,
|
|
123
122
|
args: ['phoneInput', { static: false }]
|
|
123
|
+
}], ngModelRef: [{
|
|
124
|
+
type: ViewChild,
|
|
125
|
+
args: [NgModel]
|
|
124
126
|
}], phoneNumberChange: [{
|
|
125
127
|
type: Output
|
|
128
|
+
}], ngModelChange: [{
|
|
129
|
+
type: Output
|
|
126
130
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL3Bob25lLWlucHV0L3Bob25lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWMxQyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLGNBQWMsR0FBVyxJQUFJLENBQUMsQ0FBQyxrQkFBa0I7SUFDakQsa0JBQWtCLEdBQWEsRUFBRSxDQUFDLENBQUMsOEJBQThCO0lBQ2pFLFlBQVksR0FBWSxJQUFJLENBQUMsQ0FBQyx3REFBd0Q7SUFDdEYsZ0JBQWdCLEdBQVksSUFBSSxDQUFDLENBQUMsc0RBQXNEO0lBQ3hGLFlBQVksR0FBUSxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7SUFFNUIsVUFBVSxDQUFhO0lBQ25FLFdBQVcsR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztJQUNuSCxrQkFBa0IsQ0FBTTtJQUV4QixzRUFBc0U7SUFDNUQsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUV0RCxnREFBZ0Q7SUFDaEQsUUFBUSxHQUFHLENB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QUFFLEtBQUssRUFBRTtnQkFLaEMsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCBpbnRsVGVsSW5wdXQgZnJvbSAnaW50bC10ZWwtaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGhvbmUtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGhvbmUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBob25lSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBob25lSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgaW5pdGlhbENvdW50cnk6IHN0cmluZyA9ICd1cyc7IC8vIERlZmF1bHQgdG8gJ3VzJ1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogc3RyaW5nW10gPSBbXTsgLy8gTGlzdCBvZiBwcmVmZXJyZWQgY291bnRyaWVzXHJcbiAgQElucHV0KCkgbmF0aW9uYWxNb2RlOiBib29sZWFuID0gdHJ1ZTsgLy8gVXNlIG5hdGlvbmFsIG1vZGUgc28gZGlhbCBjb2RlIGlzIGhpZGRlbiBpbiBpbnB1dCBib3hcclxuICBASW5wdXQoKSBzZXBhcmF0ZURpYWxDb2RlOiBib29sZWFuID0gdHJ1ZTsgLy8gV2hldGhlciB0byBzZXBhcmF0ZSBkaWFsIGNvZGUgKGNvbnRyb2xzIGZvcm1hdHRpbmcpXHJcbiAgQElucHV0KCkgb3RoZXJPcHRpb25zOiBhbnkgPSB7fTsgLy8gQW55IG90aGVyIG9wdGlvbnMgZm9yIGludGwtdGVsLWlucHV0XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Bob25lSW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGhvbmVJbnB1dDogRWxlbWVudFJlZjtcclxuICBwaG9uZU51bWJlcjogYW55ID0geyBkaWFsQ29kZTogJycsIGNvdW50cnlDb2RlOiAnJywgZTE2NE51bWJlcjogJycsIG51bWJlcjogJycgfTsgLy8gU3RydWN0dXJlZCBwaG9uZSBudW1iZXIgb2JqZWN0XHJcbiAgcGhvbmVJbnB1dEluc3RhbmNlOiBhbnk7XHJcblxyXG4gIC8vIE91dHB1dCBFdmVudCB0byBzZW5kIHRoZSBwaG9uZSBudW1iZXIgdmFsdWUgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICBAT3V0cHV0KCkgcGhvbmVOdW1iZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIGZvcm0gY29udHJvbCB2YWx1ZSBjaGFuZ2VzXHJcbiAgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnBob25lSW5wdXQgJiYgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplUGhvbmVJbnB1dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSW5pdGlhbGl6ZSBpbnRsLXRlbC1pbnB1dCBmb3IgdGhlIHBob25lIGlucHV0IGZpZWxkXHJcbiAgaW5pdGlhbGl6ZVBob25lSW5wdXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBpbml0aWFsQ291bnRyeTogdGhpcy5pbml0aWFsQ291bnRyeSxcclxuICAgICAgcHJlZmVycmVkQ291bnRyaWVzOiB0aGlzLnByZWZlcnJlZENvdW50cmllcyxcclxuICAgICAgbmF0aW9uYWxNb2RlOiB0aGlzLm5hdGlvbmFsTW9kZSwgLy8gVXNlIG5hdGlvbmFsIG1vZGUgdG8gaGlkZSBkaWFsIGNvZGVcclxuICAgICAgc2VwYXJhdGVEaWFsQ29kZTogdGhpcy5zZXBhcmF0ZURpYWxDb2RlLCAvLyBLZWVwIHNlcGFyYXRlIGRpYWwgY29kZSBmb3IgcHJvY2Vzc2luZ1xyXG4gICAgICB1dGlsc1NjcmlwdDogJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ludGwtdGVsLWlucHV0LzE3LjAuOC9qcy91dGlscy5qcycsXHJcbiAgICAgIC4uLnRoaXMub3RoZXJPcHRpb25zIC8vIE1lcmdlIGFueSBhZGRpdGlvbmFsIG9wdGlvbnMgcHJvdmlkZWRcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBpbnRsLXRlbC1pbnB1dFxyXG4gICAgdGhpcy5waG9uZUlucHV0SW5zdGFuY2UgPSBpbnRsVGVsSW5wdXQodGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xyXG5cclxuICAgIC8vIENhcHR1cmUgdGhlIGNvdW50cnkgY2hhbmdlIGV2ZW50IHRvIHRyYWNrIHRoZSBzZWxlY3RlZCBjb3VudHJ5IGNvZGUgYW5kIGRpYWwgY29kZVxyXG4gICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY291bnRyeWNoYW5nZScsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ2FwdHVyZSBpbnB1dCBldmVudCB0byB1cGRhdGUgcGhvbmUgbnVtYmVyIGluIEUuMTY0IGZvcm1hdFxyXG4gICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlUGhvbmVOdW1iZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2YWx1ZSBpZiBhdmFpbGFibGUgKHdpdGhvdXQgc2hvd2luZyB0aGUgZGlhbCBjb2RlKVxyXG4gICAgaWYgKHRoaXMucGhvbmVOdW1iZXIuZTE2NE51bWJlcikge1xyXG4gICAgICB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5zZXROdW1iZXIodGhpcy5waG9uZU51bWJlci5lMTY0TnVtYmVyKTsgLy8gU2V0IHRoZSBFLjE2NCBmb3JtYXR0ZWQgbnVtYmVyXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gdXBkYXRlIHRoZSBwaG9uZSBudW1iZXIgb2JqZWN0XHJcbiAgdXBkYXRlUGhvbmVOdW1iZXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsQ29kZSA9ICcrJyArIHRoaXMucGhvbmVJbnB1dEluc3RhbmNlLmdldFNlbGVjdGVkQ291bnRyeURhdGEoKS5kaWFsQ29kZTtcclxuICAgIGNvbnN0IGNvdW50cnlDb2RlID0gdGhpcy5waG9uZUlucHV0SW5zdGFuY2UuZ2V0U2VsZWN0ZWRDb3VudHJ5RGF0YSgpLmlzbzI7XHJcbiAgICBjb25zdCBlMTY0TnVtYmVyID0gdGhpcy5waG9uZUlucHV0SW5zdGFuY2UuZ2V0TnVtYmVyKCk7IC8vIEZ1bGwgbnVtYmVyIGluIEUuMTY0IGZvcm1hdFxyXG4gICAgY29uc3QgbnVtYmVyID0gZTE2NE51bWJlci5zcGxpdChkaWFsQ29kZSlbMV07XHJcblxyXG4gICAgLy8gVXBkYXRlIHRoZSBwaG9uZU51bWJlciBvYmplY3Qgd2l0aCB0aGUgZnVsbCBkZXRhaWxzXHJcbiAgICB0aGlzLnBob25lTnVtYmVyID0ge1xyXG4gICAgICBkaWFsQ29kZSxcclxuICAgICAgY291bnRyeUNvZGUsXHJcbiAgICAgIGUxNjROdW1iZXIsXHJcbiAgICAgIG51bWJlclxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIHZhbHVlIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICB0aGlzLnBob25lTnVtYmVyQ2hhbmdlLmVtaXQodGhpcy5waG9uZU51bWJlcik7ICAvLyBTZW5kaW5nIHRoZSB2YWx1ZSB0byBwYXJlbnRcclxuICB9XHJcblxyXG4gIC8vIEltcGxlbWVudCB0aGUgd3JpdGVWYWx1ZSBtZXRob2QgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUuZTE2NE51bWJlcikge1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLnBob25lSW5wdXQgJiYgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5zZXROdW1iZXIodmFsdWUuZTE2NE51bWJlcik7IC8vIFNldCB0aGUgRS4xNjQgZm9ybWF0dGVkIG51bWJlclxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBJbXBsZW1lbnQgdGhlIHJlZ2lzdGVyT25DaGFuZ2UgbWV0aG9kIGZvciBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLy8gSW1wbGVtZW50IHRoZSByZWdpc3Rlck9uVG91Y2hlZCBtZXRob2QgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIEN1c3RvbSBWYWxpZGF0aW9uIE1ldGhvZDogVmFsaWRhdGUgdGhlIHBob25lIG51bWJlclxyXG4gIHZhbGlkYXRlUGhvbmVOdW1iZXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5waG9uZUlucHV0SW5zdGFuY2UpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcGhvbmUgbnVtYmVyIGlzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgY291bnRyeVxyXG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5waG9uZUlucHV0SW5zdGFuY2UuaXNWYWxpZE51bWJlcigpIHx8IHRoaXMucGhvbmVOdW1iZXIubnVtYmVyLnN0YXJ0c1dpdGgoJzU1NScpO1xyXG4gICAgICByZXR1cm4gaXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwicGhvbmUtaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgPGlucHV0ICNwaG9uZUlucHV0IHR5cGU9XCJ0ZWxcIiBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyLnBob25lTnVtYmVyXCJcclxuICAgICAgICBuYW1lPVwicGhvbmVOdW1iZXJcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiICNwaG9uZT1cIm5nTW9kZWxcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6ICF2YWxpZGF0ZVBob25lTnVtYmVyKCkgJiYgcGhvbmUudG91Y2hlZH1cIj5cclxuXHJcbiAgICA8IS0tIFZhbGlkYXRpb24gZmVlZGJhY2sgLS0+XHJcbiAgICA8IS0tIDxkaXYgKm5nSWY9XCIhdmFsaWRhdGVQaG9uZU51bWJlcigpICYmIHBob25lLnRvdWNoZWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgSW52YWxpZCBwaG9uZSBudW1iZXIuXHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDxpbnB1dCAjcGhvbmVJbnB1dCBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyLm51bWJlclwiIC8+IC0tPlxyXG48L2Rpdj4iXX0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL3Bob25lLWlucHV0L3Bob25lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9waG9uZS1pbnB1dC9waG9uZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxZQUFZLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFjMUMsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixjQUFjLEdBQVcsSUFBSSxDQUFDO0lBQzlCLGtCQUFrQixHQUFhLEVBQUUsQ0FBQztJQUNsQyxZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLGdCQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxZQUFZLEdBQVEsRUFBRSxDQUFDO0lBRVksVUFBVSxDQUFhO0lBQy9DLFVBQVUsQ0FBVSxDQUFDLGdDQUFnQztJQUUvRCxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzVDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWxELFdBQVcsR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRixrQkFBa0IsQ0FBTTtJQUV4QixRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENB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QUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VHQXhHVSxtQkFBbUI7MkZBQW5CLG1CQUFtQix5VEFSbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaUtBVVUsT0FBTyxnREN4QnBCLDJkQVNNOzsyRkRPTyxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVzQyxVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3RCLFVBQVU7c0JBQTdCLFNBQVM7dUJBQUMsT0FBTztnQkFFUixpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgaW50bFRlbElucHV0IGZyb20gJ2ludGwtdGVsLWlucHV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBob25lLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGhvbmUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Bob25lLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaG9uZUlucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIGluaXRpYWxDb3VudHJ5OiBzdHJpbmcgPSAndXMnO1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBuYXRpb25hbE1vZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlcGFyYXRlRGlhbENvZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG90aGVyT3B0aW9uczogYW55ID0ge307XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Bob25lSW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGhvbmVJbnB1dDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKE5nTW9kZWwpIG5nTW9kZWxSZWY6IE5nTW9kZWw7IC8vIFJlZmVyZW5jZSB0byBOZ01vZGVsIGluc3RhbmNlXHJcblxyXG4gIEBPdXRwdXQoKSBwaG9uZU51bWJlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBuZ01vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHBob25lTnVtYmVyOiBhbnkgPSB7IGRpYWxDb2RlOiAnJywgY291bnRyeUNvZGU6ICcnLCBlMTY0TnVtYmVyOiAnJywgbnVtYmVyOiAnJyB9O1xyXG4gIHBob25lSW5wdXRJbnN0YW5jZTogYW55O1xyXG5cclxuICBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcclxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGhvbmVJbnB1dCAmJiB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVQaG9uZUlucHV0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5waG9uZUlucHV0SW5zdGFuY2UpIHtcclxuICAgICAgdGhpcy5waG9uZUlucHV0SW5zdGFuY2Uuc2V0TnVtYmVyKHRoaXMucGhvbmVOdW1iZXIuZTE2NE51bWJlciB8fCAnJyk7IC8vIFNldCBpbml0aWFsIHZhbHVlIGlmIGF2YWlsYWJsZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVBob25lSW5wdXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBpbml0aWFsQ291bnRyeTogdGhpcy5pbml0aWFsQ291bnRyeSxcclxuICAgICAgcHJlZmVycmVkQ291bnRyaWVzOiB0aGlzLnByZWZlcnJlZENvdW50cmllcyxcclxuICAgICAgbmF0aW9uYWxNb2RlOiB0aGlzLm5hdGlvbmFsTW9kZSxcclxuICAgICAgc2VwYXJhdGVEaWFsQ29kZTogdGhpcy5zZXBhcmF0ZURpYWxDb2RlLFxyXG4gICAgICB1dGlsc1NjcmlwdDogJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ludGwtdGVsLWlucHV0LzE3LjAuOC9qcy91dGlscy5qcycsXHJcbiAgICAgIC4uLnRoaXMub3RoZXJPcHRpb25zXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGhvbmVJbnB1dEluc3RhbmNlID0gaW50bFRlbElucHV0KHRoaXMucGhvbmVJbnB1dC5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcclxuXHJcbiAgICB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjb3VudHJ5Y2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVBob25lTnVtYmVyKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVQaG9uZU51bWJlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMucGhvbmVOdW1iZXIuZTE2NE51bWJlcikge1xyXG4gICAgICB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5zZXROdW1iZXIodGhpcy5waG9uZU51bWJlci5lMTY0TnVtYmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVBob25lTnVtYmVyKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbENvZGUgPSAnKycgKyB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5nZXRTZWxlY3RlZENvdW50cnlEYXRhKCkuZGlhbENvZGU7XHJcbiAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMucGhvbmVJbnB1dEluc3RhbmNlLmdldFNlbGVjdGVkQ291bnRyeURhdGEoKS5pc28yO1xyXG4gICAgY29uc3QgZTE2NE51bWJlciA9IHRoaXMucGhvbmVJbnB1dEluc3RhbmNlLmdldE51bWJlcigpO1xyXG4gICAgY29uc3QgbnVtYmVyID0gZTE2NE51bWJlci5zcGxpdChkaWFsQ29kZSlbMV07XHJcblxyXG4gICAgdGhpcy5waG9uZU51bWJlciA9IHsgZGlhbENvZGUsIGNvdW50cnlDb2RlLCBlMTY0TnVtYmVyLCBudW1iZXIgfTtcclxuXHJcbiAgICAvLyBFbWl0IGNoYW5nZXMgZm9yIEZvcm1Db250cm9sIGFuZCBuZ01vZGVsXHJcbiAgICB0aGlzLnBob25lTnVtYmVyQ2hhbmdlLmVtaXQodGhpcy5waG9uZU51bWJlcik7XHJcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh0aGlzLnBob25lTnVtYmVyKTsgIC8vIEZvciBuZ01vZGVsIHR3by13YXkgYmluZGluZ1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnBob25lTnVtYmVyKTsgICAgICAgICAgICAvLyBGb3IgcmVhY3RpdmUgZm9ybSBzdXBwb3J0XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwiSW4gV3JpdGUgVmFsdWU6XCIsIHZhbHVlKTtcclxuICAgIFxyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmUxNjROdW1iZXIpIHtcclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5waG9uZUlucHV0ICYmIHRoaXMucGhvbmVJbnB1dC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAvLyBTZXQgdGhlIG51bWJlciBpbiBpbnRsLXRlbC1pbnB1dCwgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY291bnRyeVxyXG4gICAgICAgICAgLy8gSWYgeW91IG5lZWQgdG8gZ2V0IHRoZSBzZWxlY3RlZCBjb3VudHJ5IGNvZGUgYWZ0ZXIgc2V0dGluZyB0aGUgbnVtYmVyXHJcbiAgICAgICAgICBjb25zdCBjb3VudHJ5RGF0YSA9IHRoaXMucGhvbmVJbnB1dEluc3RhbmNlLmdldFNlbGVjdGVkQ291bnRyeURhdGEoKTtcclxuICAgICAgICAgIHRoaXMucGhvbmVOdW1iZXIuY291bnRyeUNvZGUgPSBjb3VudHJ5RGF0YS5pc28yO1xyXG4gICAgICAgICAgdGhpcy5waG9uZU51bWJlci5kaWFsQ29kZSA9IGArJHtjb3VudHJ5RGF0YS5kaWFsQ29kZX1gO1xyXG4gICAgICAgICAgdGhpcy5waG9uZU51bWJlci5udW1iZXIgPSB2YWx1ZS5lMTY0TnVtYmVyLnNwbGl0KCB0aGlzLnBob25lTnVtYmVyLmRpYWxDb2RlKVsxXTtcclxuICAgICAgICAgIHRoaXMucGhvbmVOdW1iZXIuZTE2NE51bWJlciA9IHZhbHVlLmUxNjROdW1iZXI7XHJcbiAgICAgICAgICAvLyB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5zZXROdW1iZXIodmFsdWUuZTE2NE51bWJlcik7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlBob25lOlwiLCAgdGhpcy5waG9uZUlucHV0KTsgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVBob25lTnVtYmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMucGhvbmVJbnB1dEluc3RhbmNlKSB7XHJcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnBob25lSW5wdXRJbnN0YW5jZS5pc1ZhbGlkTnVtYmVyKCkgfHwgdGhpcy5waG9uZU51bWJlcj8ubnVtYmVyPy5zdGFydHNXaXRoKCc1NTUnKTtcclxuICAgICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cInBob25lLWlucHV0LXdyYXBwZXIgdGVsLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPGlucHV0ICNwaG9uZUlucHV0IHR5cGU9XCJ0ZWxcIiBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyLm51bWJlclwiXHJcbiAgICAgICAgbmFtZT1cInBob25lTnVtYmVyXCIgW3JlcXVpcmVkXT1cInRydWVcIiAjcGhvbmU9XCJuZ01vZGVsXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOiAhdmFsaWRhdGVQaG9uZU51bWJlcigpICYmIHBob25lLnRvdWNoZWR9XCI+XHJcblxyXG4gICAgPCEtLSBWYWxpZGF0aW9uIGZlZWRiYWNrIC0tPlxyXG4gICAgPCEtLSA8ZGl2ICpuZ0lmPVwiIXZhbGlkYXRlUGhvbmVOdW1iZXIoKSAmJiBwaG9uZS50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgIEludmFsaWQgcGhvbmUgbnVtYmVyLlxyXG4gICAgPC9kaXY+IC0tPlxyXG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { AutolinkPipe } from './autolink.pipe';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AutolinkPipeModule {
|
|
6
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutolinkPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: AutolinkPipeModule, declarations: [AutolinkPipe], imports: [CommonModule], exports: [AutolinkPipe] });
|
|
8
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutolinkPipeModule, imports: [CommonModule] });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AutolinkPipeModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [
|
|
14
|
+
CommonModule
|
|
15
|
+
],
|
|
16
|
+
declarations: [AutolinkPipe],
|
|
17
|
+
exports: [AutolinkPipe]
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2xpbmsubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL3BpcGVzL2F1dG9saW5rL2F1dG9saW5rLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUy9DLE1BQU0sT0FBTyxrQkFBa0I7dUdBQWxCLGtCQUFrQjt3R0FBbEIsa0JBQWtCLGlCQUhaLFlBQVksYUFGdkIsWUFBWSxhQUdOLFlBQVk7d0dBRWIsa0JBQWtCLFlBTHZCLFlBQVk7OzJGQUtQLGtCQUFrQjtrQkFQOUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTtxQkFDZjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBdXRvbGlua1BpcGUgfSBmcm9tICcuL2F1dG9saW5rLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGVcclxuICAgIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtBdXRvbGlua1BpcGVdLFxyXG4gICAgZXhwb3J0czogW0F1dG9saW5rUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9saW5rUGlwZU1vZHVsZSB7fSJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { DateFormatPipe } from './date-format.pipe';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class DateFormatPipeModule {
|
|
6
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipeModule, declarations: [DateFormatPipe], imports: [CommonModule], exports: [DateFormatPipe] });
|
|
8
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipeModule, providers: [DateFormatPipe], imports: [CommonModule] });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipeModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [CommonModule],
|
|
14
|
+
declarations: [DateFormatPipe],
|
|
15
|
+
exports: [DateFormatPipe],
|
|
16
|
+
providers: [DateFormatPipe]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL3BpcGVzL2RhdGUtZm9ybWF0L2RhdGUtZm9ybWF0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUS9DLE1BQU0sT0FBTyxvQkFBb0I7dUdBQXBCLG9CQUFvQjt3R0FBcEIsb0JBQW9CLGlCQUpkLGNBQWMsYUFEbkIsWUFBWSxhQUVaLGNBQWM7d0dBR2Ysb0JBQW9CLGFBRmxCLENBQUMsY0FBYyxDQUFDLFlBSGpCLFlBQVk7OzJGQUtiLG9CQUFvQjtrQkFOaEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUN6QixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdFBpcGUgfSBmcm9tICcuL2RhdGUtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbRGF0ZUZvcm1hdFBpcGVdLFxyXG4gICAgZXhwb3J0czogW0RhdGVGb3JtYXRQaXBlXSxcclxuICAgIHByb3ZpZGVyczogW0RhdGVGb3JtYXRQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUZvcm1hdFBpcGVNb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { DatePipe } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DateFormatPipe {
|
|
5
|
+
transform(value, args) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
transformTofilterDate(value) {
|
|
9
|
+
const datePipe = new DatePipe('en-US');
|
|
10
|
+
value = datePipe.transform(value, 'yyyy-MM-dd');
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
transformTomciDate(value) {
|
|
14
|
+
const datePipe = new DatePipe('en-US');
|
|
15
|
+
value = datePipe.transform(value, 'yyyy/MM/dd');
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
transformToDIsplayFormat(value) {
|
|
19
|
+
const datePipe = new DatePipe('en-US');
|
|
20
|
+
value = datePipe.transform(value, 'dd/MM/y');
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
transformToMonthlyDate(value) {
|
|
24
|
+
const datePipe = new DatePipe('en-US');
|
|
25
|
+
value = datePipe.transform(value, 'MMM d, y');
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
transformToDateWithTime(value) {
|
|
29
|
+
const datePipe = new DatePipe('en-US');
|
|
30
|
+
value = datePipe.transform(value, 'dd/MM/yyyy HH:mm a');
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
34
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipe, name: "dateFormat" });
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateFormatPipe, decorators: [{
|
|
37
|
+
type: Pipe,
|
|
38
|
+
args: [{
|
|
39
|
+
name: 'dateFormat'
|
|
40
|
+
}]
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9waXBlcy9kYXRlLWZvcm1hdC9kYXRlLWZvcm1hdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGNBQWM7SUFFekIsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQVU7UUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELGtCQUFrQixDQUFDLEtBQVU7UUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELHdCQUF3QixDQUFDLEtBQVU7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELHNCQUFzQixDQUFDLEtBQVU7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDO0lBRWYsQ0FBQztJQUNELHVCQUF1QixDQUFDLEtBQVU7UUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VHQS9CVSxjQUFjO3FHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBSDFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2RhdGVGb3JtYXQnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlRm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgYXJncz86IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybVRvZmlsdGVyRGF0ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcclxuICAgIHZhbHVlID0gZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAneXl5eS1NTS1kZCcpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICB0cmFuc2Zvcm1Ub21jaURhdGUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuLVVTJyk7XHJcbiAgICB2YWx1ZSA9IGRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ3l5eXkvTU0vZGQnKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgdHJhbnNmb3JtVG9ESXNwbGF5Rm9ybWF0KHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpO1xyXG4gICAgdmFsdWUgPSBkYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95Jyk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG4gIHRyYW5zZm9ybVRvTW9udGhseURhdGUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuLVVTJyk7XHJcbiAgICB2YWx1ZSA9IGRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ01NTSBkLCB5Jyk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcblxyXG4gIH1cclxuICB0cmFuc2Zvcm1Ub0RhdGVXaXRoVGltZSh2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcclxuICAgIHZhbHVlID0gZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnZGQvTU0veXl5eSBISDptbSBhJyk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|