barsa-auth 2.3.22 → 2.3.25
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/fesm2022/barsa-auth.mjs +74 -61
- package/fesm2022/barsa-auth.mjs.map +1 -1
- package/index.d.ts +240 -5
- package/package.json +3 -3
- package/lib/barsa-auth/barsa-auth.component.d.ts +0 -18
- package/lib/barsa-auth.module.d.ts +0 -22
- package/lib/controllers/index.d.ts +0 -4
- package/lib/controllers/login-mobile-controller.d.ts +0 -21
- package/lib/controllers/login-userpass-controller.d.ts +0 -22
- package/lib/controllers/login-verification-controller.d.ts +0 -22
- package/lib/controllers/models.d.ts +0 -24
- package/lib/enter-mobile/enter-mobile.component.d.ts +0 -25
- package/lib/login/login.component.d.ts +0 -23
- package/lib/timer-countdown/timer-countdown.component.d.ts +0 -19
- package/lib/user-pass/user-pass.component.d.ts +0 -31
- package/lib/verification/verification.component.d.ts +0 -41
- package/public-api.d.ts +0 -8
package/fesm2022/barsa-auth.mjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Directive, signal, EventEmitter, Input, Output, ChangeDetectionStrategy, Component, NgZone, ViewChild, ViewChildren, input, TemplateRef, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, Directive, signal, EventEmitter, Input, Output, ChangeDetectionStrategy, Component, NgZone, ViewChild, ViewChildren, input, TemplateRef, ComponentFactoryResolver, NgModule } from '@angular/core';
|
|
3
3
|
import * as i3 from 'barsa-novin-ray-core';
|
|
4
|
-
import { BaseController, PortalService, BarsaApi, ViewBase, forbiddenValidator, mobile_regex, BaseComponent, getUniqueId, validateAllFormFields, BaseModule, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
|
|
5
|
-
import * as
|
|
4
|
+
import { BaseController, PortalService, BarsaApi, ViewBase, forbiddenValidator, mobile_regex, BaseComponent, getUniqueId, validateAllFormFields, BaseModule, DynamicComponentService, BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';
|
|
5
|
+
import * as i1 from '@angular/common';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
7
|
import { HttpClient } from '@angular/common/http';
|
|
8
8
|
import { finalize, catchError, throwError } from 'rxjs';
|
|
9
|
-
import * as
|
|
10
|
-
import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
9
|
+
import * as i2 from '@angular/forms';
|
|
10
|
+
import { FormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
11
11
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
12
12
|
|
|
13
13
|
class LoginMobileController extends BaseController {
|
|
14
|
-
constructor(
|
|
15
|
-
super(
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
16
|
this._portalService = inject(PortalService);
|
|
17
17
|
this._httpClient = inject(HttpClient);
|
|
18
18
|
}
|
|
@@ -51,23 +51,27 @@ class LoginMobileController extends BaseController {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
init() {
|
|
54
|
-
this.form.valueChanges.subscribe((_c) =>
|
|
54
|
+
this.form.valueChanges.subscribe((_c) => this.form.valid ? this.view.canSend(true) : this.view.canSend(false));
|
|
55
55
|
}
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
57
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginMobileController, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
57
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: LoginMobileController, isStandalone: false, usesInheritance: true, ngImport: i0 }); }
|
|
58
58
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginMobileController, decorators: [{
|
|
60
60
|
type: Directive,
|
|
61
61
|
args: [{
|
|
62
62
|
standalone: false
|
|
63
63
|
}]
|
|
64
|
-
}]
|
|
64
|
+
}] });
|
|
65
65
|
|
|
66
66
|
class LoginUserPassController extends BaseController {
|
|
67
|
-
constructor(
|
|
68
|
-
super(
|
|
67
|
+
constructor() {
|
|
68
|
+
super(...arguments);
|
|
69
69
|
this._portalService = inject(PortalService);
|
|
70
70
|
this._httpClient = inject(HttpClient);
|
|
71
|
+
}
|
|
72
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
73
|
+
setView(view) {
|
|
74
|
+
this.view = view;
|
|
71
75
|
if (BarsaApi.LoginFormData.ShowCaptcha === 'Show') {
|
|
72
76
|
this.view.visibleCaptcha(true);
|
|
73
77
|
}
|
|
@@ -107,19 +111,19 @@ class LoginUserPassController extends BaseController {
|
|
|
107
111
|
init() {
|
|
108
112
|
this.form.valueChanges.subscribe((_c) => this.view.setValid(this.form.valid));
|
|
109
113
|
}
|
|
110
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
111
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginUserPassController, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
115
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: LoginUserPassController, isStandalone: false, usesInheritance: true, ngImport: i0 }); }
|
|
112
116
|
}
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginUserPassController, decorators: [{
|
|
114
118
|
type: Directive,
|
|
115
119
|
args: [{
|
|
116
120
|
standalone: false
|
|
117
121
|
}]
|
|
118
|
-
}]
|
|
122
|
+
}] });
|
|
119
123
|
|
|
120
124
|
class LoginVerificationController extends BaseController {
|
|
121
|
-
constructor(
|
|
122
|
-
super(
|
|
125
|
+
constructor() {
|
|
126
|
+
super(...arguments);
|
|
123
127
|
this.canVerify = signal(false);
|
|
124
128
|
this._httpClient = inject(HttpClient);
|
|
125
129
|
}
|
|
@@ -177,23 +181,24 @@ class LoginVerificationController extends BaseController {
|
|
|
177
181
|
init() {
|
|
178
182
|
this.form.valueChanges.subscribe((_c) => this.form.valid ? this.canVerify.set(true) : this.canVerify.set(false));
|
|
179
183
|
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
181
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginVerificationController, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
185
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: LoginVerificationController, isStandalone: false, usesInheritance: true, ngImport: i0 }); }
|
|
182
186
|
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginVerificationController, decorators: [{
|
|
184
188
|
type: Directive,
|
|
185
189
|
args: [{
|
|
186
190
|
standalone: false
|
|
187
191
|
}]
|
|
188
|
-
}]
|
|
192
|
+
}] });
|
|
189
193
|
|
|
190
194
|
class EnterMobileComponent extends ViewBase {
|
|
191
|
-
constructor(
|
|
195
|
+
constructor() {
|
|
192
196
|
super();
|
|
193
|
-
this.fb = fb;
|
|
194
197
|
this.otpSent = new EventEmitter();
|
|
195
198
|
this.loading = signal(false);
|
|
196
199
|
this.isValid = signal(false);
|
|
200
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
201
|
+
this.fb = inject(FormBuilder);
|
|
197
202
|
this.form = this.fb.group({
|
|
198
203
|
mobile: [
|
|
199
204
|
'',
|
|
@@ -201,7 +206,8 @@ class EnterMobileComponent extends ViewBase {
|
|
|
201
206
|
],
|
|
202
207
|
updateOn: 'blur'
|
|
203
208
|
});
|
|
204
|
-
this.controller = new LoginMobileController(
|
|
209
|
+
this.controller = new LoginMobileController();
|
|
210
|
+
this.controller.setView(this);
|
|
205
211
|
}
|
|
206
212
|
get mobile() {
|
|
207
213
|
return this.form.get('mobile');
|
|
@@ -221,13 +227,13 @@ class EnterMobileComponent extends ViewBase {
|
|
|
221
227
|
onSendCode() {
|
|
222
228
|
this.controller.sendCode(this.otpProvider, this.form.value);
|
|
223
229
|
}
|
|
224
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
225
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EnterMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: EnterMobileComponent, isStandalone: false, selector: "ba-enter-mobile", inputs: { errorTemplate: "errorTemplate", otpProvider: "otpProvider", description: "description" }, outputs: { otpSent: "otpSent" }, usesInheritance: true, ngImport: i0, template: "<form class=\"tw-mt-2\" [formGroup]=\"form\">\r\n <div class=\"tw-mb-4\">\r\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\"> \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647 </label>\r\n @if(description){\r\n <div [innerHtml]=\"description | sanitizeText\" class=\"tw-text-gray-500 tw-mb-4\"></div>\r\n }\r\n <input\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"mobile\"\r\n formControlName=\"mobile\"\r\n placeholder=\"09121234567\"\r\n maxlength=\"11\"\r\n type=\"tel\"\r\n onkeypress=\"return event.charCode>=48 && event.charCode<=57\"\r\n [disabled]=\"loading()\"\r\n />\r\n <div\r\n *ngIf=\"mobile.invalid && (mobile.dirty || mobile.touched) && mobile?.errors.length\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\" \r\n >\r\n <div *ngIf=\"mobile.errors?.['required']\">\u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647 \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A</div>\r\n </div>\r\n </div>\r\n\r\n <!-- <app-form-captcha [capId]=\"capId()\" [showCaptcha]=\"showCaptcha()\" formControlName=\"cap\"></app-form-captcha> -->\r\n <div class=\"tw-flex tw-items-center tw-mb-4 tw-mt-2\">\r\n <bnrc-button-loading\r\n [text]=\"'\u0627\u0631\u0633\u0627\u0644 \u06A9\u062F \u062A\u0627\u06CC\u06CC\u062F'\"\r\n [valid]=\"isValid()\"\r\n [loading]=\"loading()\"\r\n (click)=\"onSendCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <ng-content select=\".form-footer\"></ng-content>\r\n <div\r\n class=\"tw-p-4 tw-mb-4 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text", "transparent"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.SanitizeTextPipe, name: "sanitizeText" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
226
232
|
}
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EnterMobileComponent, decorators: [{
|
|
228
234
|
type: Component,
|
|
229
235
|
args: [{ selector: 'ba-enter-mobile', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<form class=\"tw-mt-2\" [formGroup]=\"form\">\r\n <div class=\"tw-mb-4\">\r\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\"> \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647 </label>\r\n @if(description){\r\n <div [innerHtml]=\"description | sanitizeText\" class=\"tw-text-gray-500 tw-mb-4\"></div>\r\n }\r\n <input\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"mobile\"\r\n formControlName=\"mobile\"\r\n placeholder=\"09121234567\"\r\n maxlength=\"11\"\r\n type=\"tel\"\r\n onkeypress=\"return event.charCode>=48 && event.charCode<=57\"\r\n [disabled]=\"loading()\"\r\n />\r\n <div\r\n *ngIf=\"mobile.invalid && (mobile.dirty || mobile.touched) && mobile?.errors.length\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\" \r\n >\r\n <div *ngIf=\"mobile.errors?.['required']\">\u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647 \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A</div>\r\n </div>\r\n </div>\r\n\r\n <!-- <app-form-captcha [capId]=\"capId()\" [showCaptcha]=\"showCaptcha()\" formControlName=\"cap\"></app-form-captcha> -->\r\n <div class=\"tw-flex tw-items-center tw-mb-4 tw-mt-2\">\r\n <bnrc-button-loading\r\n [text]=\"'\u0627\u0631\u0633\u0627\u0644 \u06A9\u062F \u062A\u0627\u06CC\u06CC\u062F'\"\r\n [valid]=\"isValid()\"\r\n [loading]=\"loading()\"\r\n (click)=\"onSendCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <ng-content select=\".form-footer\"></ng-content>\r\n <div\r\n class=\"tw-p-4 tw-mb-4 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n" }]
|
|
230
|
-
}], ctorParameters: () => [
|
|
236
|
+
}], ctorParameters: () => [], propDecorators: { otpSent: [{
|
|
231
237
|
type: Output
|
|
232
238
|
}], errorTemplate: [{
|
|
233
239
|
type: Input
|
|
@@ -290,10 +296,10 @@ class TimerCountDownComponent extends BaseComponent {
|
|
|
290
296
|
this.showResend.set(true);
|
|
291
297
|
}
|
|
292
298
|
}
|
|
293
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
294
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TimerCountDownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
300
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TimerCountDownComponent, isStandalone: false, selector: "ba-timer-countdown", inputs: { minutes: "minutes", loading: "loading" }, outputs: { resend: "resend" }, usesInheritance: true, ngImport: i0, template: "@if(showResend()){\r\n<bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F'\"\r\n [valid]=\"true\"\r\n [loading]=\"loading\"\r\n [transparent]=\"true\"\r\n (click)=\"resend.emit()\"\r\n></bnrc-button-loading>\r\n}@else{\r\n<div class=\"tw-text-center\">\r\n <div\r\n id=\"timer\"\r\n class=\"tw-px-2 tw-flex tw-flex-row-reverse gap-2 tw-justify-center tw-uppercase\"\r\n style=\"align-items: center; color: var(--button-loading)\"\r\n [style.visibility]=\"minutesText() ? 'visible' : 'hidden'\"\r\n >\r\n <div>\r\n <span class=\"tw-text-xl\">{{ minutesText() }}</span>\r\n </div>\r\n <div class=\"tw-text-2xl\">:</div>\r\n <div>\r\n <span class=\"tw-text-xl\">{{ secondText() }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n}\r\n", styles: [":host{display:block;width:10rem}:host ::ng-deep button{padding:4px!important}:host ::ng-deep .button__text{font-weight:400!important}\n"], dependencies: [{ kind: "component", type: i3.ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text", "transparent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
295
301
|
}
|
|
296
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TimerCountDownComponent, decorators: [{
|
|
297
303
|
type: Component,
|
|
298
304
|
args: [{ selector: 'ba-timer-countdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if(showResend()){\r\n<bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u0627\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F'\"\r\n [valid]=\"true\"\r\n [loading]=\"loading\"\r\n [transparent]=\"true\"\r\n (click)=\"resend.emit()\"\r\n></bnrc-button-loading>\r\n}@else{\r\n<div class=\"tw-text-center\">\r\n <div\r\n id=\"timer\"\r\n class=\"tw-px-2 tw-flex tw-flex-row-reverse gap-2 tw-justify-center tw-uppercase\"\r\n style=\"align-items: center; color: var(--button-loading)\"\r\n [style.visibility]=\"minutesText() ? 'visible' : 'hidden'\"\r\n >\r\n <div>\r\n <span class=\"tw-text-xl\">{{ minutesText() }}</span>\r\n </div>\r\n <div class=\"tw-text-2xl\">:</div>\r\n <div>\r\n <span class=\"tw-text-xl\">{{ secondText() }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n}\r\n", styles: [":host{display:block;width:10rem}:host ::ng-deep button{padding:4px!important}:host ::ng-deep .button__text{font-weight:400!important}\n"] }]
|
|
299
305
|
}], propDecorators: { resend: [{
|
|
@@ -305,9 +311,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
|
|
|
305
311
|
}] } });
|
|
306
312
|
|
|
307
313
|
class VerificationComponent extends ViewBase {
|
|
308
|
-
|
|
314
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
315
|
+
constructor() {
|
|
309
316
|
super();
|
|
310
|
-
this.fb = fb;
|
|
311
317
|
this.otpVerified = new EventEmitter();
|
|
312
318
|
this.changeMobile = new EventEmitter();
|
|
313
319
|
this.capId = signal('-');
|
|
@@ -316,12 +322,14 @@ class VerificationComponent extends ViewBase {
|
|
|
316
322
|
this.showCaptcha = signal(false);
|
|
317
323
|
this._ngZone = inject(NgZone);
|
|
318
324
|
this.now = signal(getUniqueId(3));
|
|
325
|
+
this.fb = inject(FormBuilder);
|
|
319
326
|
this.form = this.fb.group({
|
|
320
327
|
in1: ['', Validators.compose([Validators.required, Validators.maxLength(6)])],
|
|
321
328
|
cap: [''],
|
|
322
329
|
capId: [this.capId(), Validators.required]
|
|
323
330
|
});
|
|
324
|
-
this.controller = new LoginVerificationController(
|
|
331
|
+
this.controller = new LoginVerificationController();
|
|
332
|
+
this.controller.setView(this);
|
|
325
333
|
}
|
|
326
334
|
get in1() {
|
|
327
335
|
return this.form.get('in1');
|
|
@@ -365,13 +373,13 @@ class VerificationComponent extends ViewBase {
|
|
|
365
373
|
get canVerify() {
|
|
366
374
|
return this.controller.canVerify();
|
|
367
375
|
}
|
|
368
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
369
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
376
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: VerificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
377
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: VerificationComponent, isStandalone: false, selector: "ba-verification", inputs: { mobile: "mobile", otpProvider: "otpProvider", errorTemplate: "errorTemplate" }, outputs: { otpVerified: "otpVerified", changeMobile: "changeMobile" }, viewQueries: [{ propertyName: "_timerCountDown", first: true, predicate: TimerCountDownComponent, descendants: true }, { propertyName: "_loadingBtn", first: true, predicate: ["loadingBtn"], descendants: true }, { propertyName: "_inputsEl", predicate: ["inputv"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\r\n \u06A9\u062F \u0627\u0631\u0633\u0627\u0644 \u0634\u062F\u0647 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 <strong>{{ mobile }}</strong> \u0631\u0627 \u0648\u0627\u0631\u062F \u0646\u0645\u0627\u06CC\u06CC\u062F.\r\n </label>\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-mb-4\"\r\n (click)=\"changeMobile.emit()\"\r\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\r\n <path\r\n d=\"M5,18H9.24a1,1,0,0,0,.71-.29l6.92-6.93h0L19.71,8a1,1,0,0,0,0-1.42L15.47,2.29a1,1,0,0,0-1.42,0L11.23,5.12h0L4.29,12.05a1,1,0,0,0-.29.71V17A1,1,0,0,0,5,18ZM14.76,4.41l2.83,2.83L16.17,8.66,13.34,5.83ZM6,13.17l5.93-5.93,2.83,2.83L8.83,16H6ZM21,20H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z\"\r\n fill=\"#316bec\"\r\n />\r\n </svg>\r\n </a>\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4\">\r\n <input\r\n #inputv\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n maxlength=\"6\"\r\n tabindex=\"0\"\r\n onkeypress=\"return event.charCode>=48 && event.charCode<=57\"\r\n name=\"in1\"\r\n [autoUpdate]=\"true\"\r\n appWebotp\r\n formControlName=\"in1\"\r\n />\r\n <ba-timer-countdown [minutes]=\"2\" (resend)=\"onResendOtp()\" [loading]=\"resendLoading()\"></ba-timer-countdown>\r\n </div>\r\n <div\r\n *ngIf=\"in1.invalid && (in1.dirty || in1.touched)\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n >\r\n <div *ngIf=\"in1.errors?.['required']\">\u06A9\u062F \u062A\u0627\u06CC\u06CC\u062F \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A</div>\r\n </div>\r\n <div class=\"tw-flex tw-items-center tw-mb-4 tw-mt-2\">\r\n <bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\r\n [valid]=\"canVerify\"\r\n [loading]=\"loading()\"\r\n (click)=\"onVerifyCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <div\r\n class=\"tw-p-4 tw-mb-4 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text", "transparent"] }, { kind: "directive", type: i3.WebOtpDirective, selector: "[appWebotp]", inputs: ["autoUpdate"], outputs: ["otpRecieved"] }, { kind: "component", type: TimerCountDownComponent, selector: "ba-timer-countdown", inputs: ["minutes", "loading"], outputs: ["resend"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
370
378
|
}
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: VerificationComponent, decorators: [{
|
|
372
380
|
type: Component,
|
|
373
381
|
args: [{ selector: 'ba-verification', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<form class=\"tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\r\n \u06A9\u062F \u0627\u0631\u0633\u0627\u0644 \u0634\u062F\u0647 \u0628\u0647 \u0634\u0645\u0627\u0631\u0647 <strong>{{ mobile }}</strong> \u0631\u0627 \u0648\u0627\u0631\u062F \u0646\u0645\u0627\u06CC\u06CC\u062F.\r\n </label>\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-mb-4\"\r\n (click)=\"changeMobile.emit()\"\r\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\r\n <path\r\n d=\"M5,18H9.24a1,1,0,0,0,.71-.29l6.92-6.93h0L19.71,8a1,1,0,0,0,0-1.42L15.47,2.29a1,1,0,0,0-1.42,0L11.23,5.12h0L4.29,12.05a1,1,0,0,0-.29.71V17A1,1,0,0,0,5,18ZM14.76,4.41l2.83,2.83L16.17,8.66,13.34,5.83ZM6,13.17l5.93-5.93,2.83,2.83L8.83,16H6ZM21,20H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z\"\r\n fill=\"#316bec\"\r\n />\r\n </svg>\r\n </a>\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4\">\r\n <input\r\n #inputv\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-4 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n maxlength=\"6\"\r\n tabindex=\"0\"\r\n onkeypress=\"return event.charCode>=48 && event.charCode<=57\"\r\n name=\"in1\"\r\n [autoUpdate]=\"true\"\r\n appWebotp\r\n formControlName=\"in1\"\r\n />\r\n <ba-timer-countdown [minutes]=\"2\" (resend)=\"onResendOtp()\" [loading]=\"resendLoading()\"></ba-timer-countdown>\r\n </div>\r\n <div\r\n *ngIf=\"in1.invalid && (in1.dirty || in1.touched)\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n >\r\n <div *ngIf=\"in1.errors?.['required']\">\u06A9\u062F \u062A\u0627\u06CC\u06CC\u062F \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A</div>\r\n </div>\r\n <div class=\"tw-flex tw-items-center tw-mb-4 tw-mt-2\">\r\n <bnrc-button-loading\r\n #loadingBtn\r\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\r\n [valid]=\"canVerify\"\r\n [loading]=\"loading()\"\r\n (click)=\"onVerifyCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <div\r\n class=\"tw-p-4 tw-mb-4 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n" }]
|
|
374
|
-
}], ctorParameters: () => [
|
|
382
|
+
}], ctorParameters: () => [], propDecorators: { _timerCountDown: [{
|
|
375
383
|
type: ViewChild,
|
|
376
384
|
args: [TimerCountDownComponent]
|
|
377
385
|
}], _inputsEl: [{
|
|
@@ -393,22 +401,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
|
|
|
393
401
|
}] } });
|
|
394
402
|
|
|
395
403
|
class UserPassComponent extends ViewBase {
|
|
396
|
-
constructor(
|
|
404
|
+
constructor() {
|
|
397
405
|
super();
|
|
398
|
-
this.fb = fb;
|
|
399
406
|
this.loggedIn = new EventEmitter();
|
|
400
407
|
this.canLogin = signal(false);
|
|
401
408
|
this.loading = signal(false);
|
|
402
409
|
this.capId = signal(getUniqueId(4));
|
|
403
410
|
this.now = signal(getUniqueId(3));
|
|
404
411
|
this.showCaptcha = signal(false);
|
|
412
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
413
|
+
this.fb = inject(FormBuilder);
|
|
405
414
|
this.form = this.fb.group({
|
|
406
415
|
username: ['', Validators.compose([Validators.required, Validators.minLength(1)])],
|
|
407
416
|
password: ['', Validators.compose([Validators.required, Validators.minLength(1)])],
|
|
408
417
|
cap: [''],
|
|
409
418
|
capId: [this.capId(), Validators.required]
|
|
410
419
|
});
|
|
411
|
-
this.controller = new LoginUserPassController(
|
|
420
|
+
this.controller = new LoginUserPassController();
|
|
421
|
+
this.controller.setView(this);
|
|
412
422
|
}
|
|
413
423
|
get username() {
|
|
414
424
|
return this.form.get('username');
|
|
@@ -447,13 +457,13 @@ class UserPassComponent extends ViewBase {
|
|
|
447
457
|
validateAllFormFields(this.form);
|
|
448
458
|
this.canLogin() && !this.loading() && this.controller.login(this.form.value);
|
|
449
459
|
}
|
|
450
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
451
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
460
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserPassComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
461
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: UserPassComponent, isStandalone: false, selector: "ba-user-pass", inputs: { errorTemplate: "errorTemplate", otpProvider: "otpProvider" }, outputs: { loggedIn: "loggedIn" }, usesInheritance: true, ngImport: i0, template: "<form class=\"tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <div class=\"tw-mb-2\">\r\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\"> \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC </label>\r\n <input\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-2 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"username\"\r\n formControlName=\"username\"\r\n placeholder=\"\"\r\n type=\"text\"\r\n [disabled]=\"loading()\"\r\n />\r\n <div\r\n *ngIf=\"username.invalid && (username.dirty || username.touched)\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n >\r\n <div *ngIf=\"username.errors?.['required']\">\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A.</div>\r\n </div>\r\n </div>\r\n <div class=\"tw-mb-2\">\r\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\"> \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 </label>\r\n <input\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-2 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"password\"\r\n formControlName=\"password\"\r\n placeholder=\"\"\r\n type=\"password\"\r\n [disabled]=\"loading()\"\r\n />\r\n <div\r\n *ngIf=\"password.invalid && (password.dirty || password.touched)\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n >\r\n <div *ngIf=\"password.errors?.['required']\">\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A.</div>\r\n </div>\r\n </div>\r\n @if(showCaptcha()){\r\n <div class=\"tw-mb-2\">\r\n <label class=\"tw-flex tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\">\r\n \u0639\u0628\u0627\u0631\u062A \u0627\u0645\u0646\u06CC\u062A\u06CC\r\n </label>\r\n <div class=\"tw-flex tw-items-center tw-gap-1\">\r\n <input\r\n class=\"tw-w-full tw-rounded-lg tw-border tw-w-full tw-py-2 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"cap\"\r\n formControlName=\"cap\"\r\n placeholder=\"\"\r\n type=\"text\"\r\n [disabled]=\"loading()\"\r\n />\r\n <img class=\"tw-w-36\" [src]=\"'/api/auth/captcha?capId=' + capId() + '&t=' + now()\" />\r\n <button\r\n class=\"btn btn-outline-primary btn-sm !tw-border-none tw-w-12 tw-h-8 tw-flex tw-items-center tw-justify-center\"\r\n type=\"button\"\r\n [disabled]=\"loading()\"\r\n (click)=\"onRefreshCaptcha()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"28\"\r\n height=\"28\"\r\n fill=\"currentColor\"\r\n class=\"bi bi-bootstrap-reboot\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.8 6.8 0 0 0 1.16 8z\"\r\n ></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n <!-- <app-form-captcha [capId]=\"capId()\" [showCaptcha]=\"showCaptcha()\" formControlName=\"cap\"></app-form-captcha> -->\r\n <div class=\"tw-flex tw-items-center tw-mb-4 tw-mt-4\">\r\n <bnrc-button-loading\r\n [text]=\"'Login' | bbbTranslate\"\r\n [valid]=\"canLogin()\"\r\n [loading]=\"loading()\"\r\n (click)=\"onSendCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <ng-content select=\".form-footer\"></ng-content>\r\n <div\r\n class=\"tw-p-2 tw-mb-4 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n", styles: [".btn-outline-primary:hover{background-color:transparent!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text", "transparent"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
452
462
|
}
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserPassComponent, decorators: [{
|
|
454
464
|
type: Component,
|
|
455
465
|
args: [{ selector: 'ba-user-pass', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<form class=\"tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\r\n <div class=\"tw-mb-2\">\r\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\"> \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC </label>\r\n <input\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-2 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"username\"\r\n formControlName=\"username\"\r\n placeholder=\"\"\r\n type=\"text\"\r\n [disabled]=\"loading()\"\r\n />\r\n <div\r\n *ngIf=\"username.invalid && (username.dirty || username.touched)\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n >\r\n <div *ngIf=\"username.errors?.['required']\">\u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A.</div>\r\n </div>\r\n </div>\r\n <div class=\"tw-mb-2\">\r\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\"> \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 </label>\r\n <input\r\n class=\"tw-rounded-lg tw-border tw-w-full tw-py-2 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"password\"\r\n formControlName=\"password\"\r\n placeholder=\"\"\r\n type=\"password\"\r\n [disabled]=\"loading()\"\r\n />\r\n <div\r\n *ngIf=\"password.invalid && (password.dirty || password.touched)\"\r\n class=\"tw-p-2 tw-mb-2 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n >\r\n <div *ngIf=\"password.errors?.['required']\">\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0636\u0631\u0648\u0631\u06CC \u0627\u0633\u062A.</div>\r\n </div>\r\n </div>\r\n @if(showCaptcha()){\r\n <div class=\"tw-mb-2\">\r\n <label class=\"tw-flex tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-2\" for=\"username\">\r\n \u0639\u0628\u0627\u0631\u062A \u0627\u0645\u0646\u06CC\u062A\u06CC\r\n </label>\r\n <div class=\"tw-flex tw-items-center tw-gap-1\">\r\n <input\r\n class=\"tw-w-full tw-rounded-lg tw-border tw-w-full tw-py-2 tw-px-3 tw-text-gray-700 tw-leading-tight tw-focus:tw-outline-none tw-focus:tw-shadow-outline\"\r\n name=\"cap\"\r\n formControlName=\"cap\"\r\n placeholder=\"\"\r\n type=\"text\"\r\n [disabled]=\"loading()\"\r\n />\r\n <img class=\"tw-w-36\" [src]=\"'/api/auth/captcha?capId=' + capId() + '&t=' + now()\" />\r\n <button\r\n class=\"btn btn-outline-primary btn-sm !tw-border-none tw-w-12 tw-h-8 tw-flex tw-items-center tw-justify-center\"\r\n type=\"button\"\r\n [disabled]=\"loading()\"\r\n (click)=\"onRefreshCaptcha()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"28\"\r\n height=\"28\"\r\n fill=\"currentColor\"\r\n class=\"bi bi-bootstrap-reboot\"\r\n viewBox=\"0 0 16 16\"\r\n >\r\n <path\r\n d=\"M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.8 6.8 0 0 0 1.16 8z\"\r\n ></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n <!-- <app-form-captcha [capId]=\"capId()\" [showCaptcha]=\"showCaptcha()\" formControlName=\"cap\"></app-form-captcha> -->\r\n <div class=\"tw-flex tw-items-center tw-mb-4 tw-mt-4\">\r\n <bnrc-button-loading\r\n [text]=\"'Login' | bbbTranslate\"\r\n [valid]=\"canLogin()\"\r\n [loading]=\"loading()\"\r\n (click)=\"onSendCode()\"\r\n ></bnrc-button-loading>\r\n </div>\r\n <ng-content select=\".form-footer\"></ng-content>\r\n <div\r\n class=\"tw-p-2 tw-mb-4 tw-mt-2 tw-text-xs tw-text-red-800 tw-rounded-lg tw-bg-red-50 dark:tw-bg-gray-800 dark:tw-text-red-400\"\r\n [style.visibility]=\"errorMessage() ? 'visible' : 'hidden'\"\r\n role=\"alert\"\r\n >\r\n <span class=\"tw-font-medium\">{{ 'Error' | bbbTranslate }}!</span> {{ errorMessage() }}\r\n </div>\r\n</form>\r\n", styles: [".btn-outline-primary:hover{background-color:transparent!important}\n"] }]
|
|
456
|
-
}], ctorParameters: () => [
|
|
466
|
+
}], ctorParameters: () => [], propDecorators: { loggedIn: [{
|
|
457
467
|
type: Output
|
|
458
468
|
}], errorTemplate: [{
|
|
459
469
|
type: Input
|
|
@@ -489,10 +499,10 @@ class BarsaAuthComponent {
|
|
|
489
499
|
.then(() => this.verified.emit())
|
|
490
500
|
.catch(() => this.loading.set(false));
|
|
491
501
|
}
|
|
492
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
493
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
502
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaAuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaAuthComponent, isStandalone: false, selector: "ba-auth", inputs: { appSettings: { classPropertyName: "appSettings", publicName: "appSettings", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { verified: "verified" }, ngImport: i0, template: "<ng-container\r\n *ngTemplateOutlet=\"appSettings() ? renderUi : missAppSettings; context: { $implicit: appSettings() }\"\r\n></ng-container>\r\n<ng-template #missAppSettings> Oops! </ng-template>\r\n<ng-template #renderUi let-appSettings>\r\n <div>\r\n @switch (state()) { @case ('enter-mobile') {\r\n <ba-enter-mobile\r\n (otpSent)=\"onOtpSent($event)\"\r\n [otpProvider]=\"appSettings.OtpProvider\"\r\n [description]=\"appSettings.MobileDescription\"\r\n >\r\n <div class=\"form-footer\">\r\n @if(appSettings.UserPassEnable){\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-mb-4 tw-cursor-pointer\"\r\n (click)=\"onChangeState('user-pass')\"\r\n >\u0648\u0631\u0648\u062F \u0628\u0627 \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC\r\n </a>\r\n }\r\n </div>\r\n </ba-enter-mobile>\r\n } @case ('verification') {\r\n <ba-verification\r\n [mobile]=\"mobile()\"\r\n [otpProvider]=\"appSettings.OtpProvider\"\r\n (changeMobile)=\"onChangeMobile()\"\r\n (otpVerified)=\"onLoggedIn()\"\r\n ></ba-verification>\r\n } @case ('user-pass') {\r\n <ba-user-pass (loggedIn)=\"onLoggedIn()\">\r\n <div class=\"form-footer tw-flex tw-justify-between\">\r\n @if(appSettings.UserPassEnable){\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-mb-4 tw-cursor-pointer\"\r\n (click)=\"onChangeState('enter-mobile')\"\r\n >\u0648\u0631\u0648\u062F \u0628\u0627 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n </a>\r\n }\r\n </div>\r\n </ba-user-pass>\r\n } }\r\n </div>\r\n <div class=\"tw-absolute tw-left-0 tw-right-0 tw-bottom-0 tw-pb-safe\">\r\n @if(appSettings.LoginFooter){\r\n <div [innerHTML]=\"appSettings.LoginFooter | sanitizeText\"></div>\r\n } @if(state()!=='verification' && !appSettings.HideGovSso){\r\n <div class=\"tw-relative tw-flex tw-py-3 tw-items-center tw-px-2\">\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n <span class=\"tw-font-[IRANYekan] tw-flex-shrink tw-mx-4 tw-text-gray-400\">\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647</span>\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n </div>\r\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\r\n <div class=\"tw-flex tw-items-center tw-text-center\">\r\n <a\r\n class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-cursor-pointer\"\r\n [attr.href]=\"appSettings.GovSSOHref\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\r\n </a>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.MobileDirective, selector: "[mobile]" }, { kind: "component", type: EnterMobileComponent, selector: "ba-enter-mobile", inputs: ["errorTemplate", "otpProvider", "description"], outputs: ["otpSent"] }, { kind: "component", type: VerificationComponent, selector: "ba-verification", inputs: ["mobile", "otpProvider", "errorTemplate"], outputs: ["otpVerified", "changeMobile"] }, { kind: "component", type: UserPassComponent, selector: "ba-user-pass", inputs: ["errorTemplate", "otpProvider"], outputs: ["loggedIn"] }, { kind: "pipe", type: i3.SanitizeTextPipe, name: "sanitizeText" }] }); }
|
|
494
504
|
}
|
|
495
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaAuthComponent, decorators: [{
|
|
496
506
|
type: Component,
|
|
497
507
|
args: [{ selector: 'ba-auth', standalone: false, template: "<ng-container\r\n *ngTemplateOutlet=\"appSettings() ? renderUi : missAppSettings; context: { $implicit: appSettings() }\"\r\n></ng-container>\r\n<ng-template #missAppSettings> Oops! </ng-template>\r\n<ng-template #renderUi let-appSettings>\r\n <div>\r\n @switch (state()) { @case ('enter-mobile') {\r\n <ba-enter-mobile\r\n (otpSent)=\"onOtpSent($event)\"\r\n [otpProvider]=\"appSettings.OtpProvider\"\r\n [description]=\"appSettings.MobileDescription\"\r\n >\r\n <div class=\"form-footer\">\r\n @if(appSettings.UserPassEnable){\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-mb-4 tw-cursor-pointer\"\r\n (click)=\"onChangeState('user-pass')\"\r\n >\u0648\u0631\u0648\u062F \u0628\u0627 \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631\u06CC\r\n </a>\r\n }\r\n </div>\r\n </ba-enter-mobile>\r\n } @case ('verification') {\r\n <ba-verification\r\n [mobile]=\"mobile()\"\r\n [otpProvider]=\"appSettings.OtpProvider\"\r\n (changeMobile)=\"onChangeMobile()\"\r\n (otpVerified)=\"onLoggedIn()\"\r\n ></ba-verification>\r\n } @case ('user-pass') {\r\n <ba-user-pass (loggedIn)=\"onLoggedIn()\">\r\n <div class=\"form-footer tw-flex tw-justify-between\">\r\n @if(appSettings.UserPassEnable){\r\n <a\r\n class=\"tw-inline-flex tw-flex tw-gap-3 tw-items-center tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-mb-4 tw-cursor-pointer\"\r\n (click)=\"onChangeState('enter-mobile')\"\r\n >\u0648\u0631\u0648\u062F \u0628\u0627 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\r\n </a>\r\n }\r\n </div>\r\n </ba-user-pass>\r\n } }\r\n </div>\r\n <div class=\"tw-absolute tw-left-0 tw-right-0 tw-bottom-0 tw-pb-safe\">\r\n @if(appSettings.LoginFooter){\r\n <div [innerHTML]=\"appSettings.LoginFooter | sanitizeText\"></div>\r\n } @if(state()!=='verification' && !appSettings.HideGovSso){\r\n <div class=\"tw-relative tw-flex tw-py-3 tw-items-center tw-px-2\">\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n <span class=\"tw-font-[IRANYekan] tw-flex-shrink tw-mx-4 tw-text-gray-400\">\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647</span>\r\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\r\n </div>\r\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\r\n <div class=\"tw-flex tw-items-center tw-text-center\">\r\n <a\r\n class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm tw-font-medium tw-cursor-pointer\"\r\n [attr.href]=\"appSettings.GovSSOHref\"\r\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\r\n </a>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n" }]
|
|
498
508
|
}], propDecorators: { verified: [{
|
|
@@ -531,10 +541,10 @@ class LoginComponent {
|
|
|
531
541
|
onVerified() {
|
|
532
542
|
this._router.navigate([this._portalService.DefaultPage?.Route || '/']);
|
|
533
543
|
}
|
|
534
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
535
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
544
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
545
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: LoginComponent, isStandalone: false, selector: "ba-login", viewQueries: [{ propertyName: "_errorTemplate", first: true, predicate: ["template"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "@switch (appSettings().Theme$Caption) { @case ('Side') {\r\n<ng-container *ngTemplateOutlet=\"side\"></ng-container>\r\n} @case ('Center') {\r\n<ng-container *ngTemplateOutlet=\"center\"></ng-container>\r\n} @default {\r\n<ng-container *ngTemplateOutlet=\"side\"></ng-container>\r\n} }\r\n<ng-template #center>\r\n <div class=\"tw-h-screen tw-flex tw-justify-center tw-items-center\">\r\n <section class=\"login-section tw-p-3 md:tw-p-4 xl:tw-p-5\">\r\n <div class=\"tw-container tw-mx-auto\">\r\n <div class=\"tw-bg-transparent tw-border-0\">\r\n <div class=\"tw-flex tw-flex-col md:tw-flex-row rtl:tw-flex-row-reverse\">\r\n <div class=\"tw-hidden md:tw-block md:tw-w-1/12\"></div>\r\n\r\n <div class=\"tw-hidden md:tw-block md:tw-w-6/12 tw-shadow-sm\">\r\n <img\r\n class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-s\"\r\n loading=\"lazy\"\r\n src=\"/Login/SystemThemes/Default/LoginFormPanel/right-pic.jpg\"\r\n alt=\"[LoginFrom_Title]\"\r\n />\r\n </div>\r\n\r\n <div class=\"tw-w-full md:tw-w-4/12 tw-relative tw-bg-white tw-shadow-sm tw-border\">\r\n <div class=\"tw-p-3 md:tw-p-4 xl:tw-p-5\">\r\n <div class=\"tw-mb-3 tw-text-center\">\r\n <a href=\"/\">\r\n <img\r\n src=\"/Login/SystemThemes/Default/LoginFormPanel/logo.jpg\"\r\n alt=\"[LoginFrom_Title]\"\r\n width=\"175\"\r\n height=\"175\"\r\n />\r\n </a>\r\n <div class=\"tw-mt-5\">\r\n <h3 class=\"tw-text-lg tw-font-semibold\">{{ appSettings().Section1Description}}</h3>\r\n </div>\r\n </div>\r\n\r\n <!-- \u0641\u0631\u0645 \u0648\u0631\u0648\u062F -->\r\n <ba-auth [appSettings]=\"appSettings()\" (verified)=\"onVerified()\"></ba-auth>\r\n\r\n <hr class=\"tw-border tw-border-gray-300 tw-my-4\" />\r\n\r\n <div\r\n class=\"tw-flex tw-flex-col md:tw-flex-row tw-gap-2 md:tw-gap-4 tw-justify-start tw-text-sm\"\r\n >\r\n <a\r\n id=\"forgetPassword\"\r\n class=\"tw-text-blue-600 hover:tw-underline tw-pt-2 tw-cursor-pointer\"\r\n tabindex=\"6\"\r\n onclick=\"LoginFormUi.ForgetPassword()\"\r\n >\r\n \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0641\u0631\u0627\u0645\u0648\u0634 \u06A9\u0631\u062F\u0647 \u0627\u0645\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tw-hidden md:tw-block md:tw-w-1/12\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</ng-template>\r\n<ng-template #side>\r\n <div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\r\n <div class=\"tw-flex tw-justify-center tw-h-screen tw-flex-row-reverse\">\r\n <div\r\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\r\n [style.background-image]=\"\r\n 'url(' +\r\n (appSettings().BackgroundPicture\r\n | picFieldSrc: 'ID':null:'':appSettings().WidthOfBackground:appSettings().HeightOfBackground) +\r\n ')'\r\n \"\r\n >\r\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\r\n <div>\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\r\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-w-full tw-max-w-md tw-px-6 tw-mx-auto lg:tw-w-2/6 tw-relative\">\r\n <div class=\"tw-flex-1 tw-h-[30rem]\">\r\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center tw-mb-10 tw--m-12\">\r\n <div\r\n class=\"tw-flex tw-items-center\"\r\n [class.tw-flex-col]=\"appSettings().LogoOnTop\"\r\n [class.tw-gap-2]=\"!appSettings().LogoOnTop\"\r\n [class.tw-gap-4]=\"appSettings().LogoOnTop\"\r\n >\r\n <img\r\n [src]=\"\r\n appSettings().Logo\r\n | picFieldSrc: 'ID':null:'':appSettings().WidthOfLogo:appSettings().HeightOfLogo\r\n \"\r\n />\r\n @if(appSettings().Title){\r\n <h2 class=\"tw-text-2xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\r\n {{ appSettings().Title }}\r\n </h2>\r\n }\r\n </div>\r\n @if(appSettings().Subtitle ){\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <p class=\"tw-text-xl tw-mt-1 tw-text-gray-500 dark:tw-text-gray-300\">\r\n {{ appSettings().Subtitle }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n <ba-auth [appSettings]=\"appSettings()\" (verified)=\"onVerified()\"></ba-auth>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-family:IRANYekanDigits}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BarsaAuthComponent, selector: "ba-auth", inputs: ["appSettings"], outputs: ["verified"] }, { kind: "pipe", type: i3.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
536
546
|
}
|
|
537
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
547
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LoginComponent, decorators: [{
|
|
538
548
|
type: Component,
|
|
539
549
|
args: [{ selector: 'ba-login', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@switch (appSettings().Theme$Caption) { @case ('Side') {\r\n<ng-container *ngTemplateOutlet=\"side\"></ng-container>\r\n} @case ('Center') {\r\n<ng-container *ngTemplateOutlet=\"center\"></ng-container>\r\n} @default {\r\n<ng-container *ngTemplateOutlet=\"side\"></ng-container>\r\n} }\r\n<ng-template #center>\r\n <div class=\"tw-h-screen tw-flex tw-justify-center tw-items-center\">\r\n <section class=\"login-section tw-p-3 md:tw-p-4 xl:tw-p-5\">\r\n <div class=\"tw-container tw-mx-auto\">\r\n <div class=\"tw-bg-transparent tw-border-0\">\r\n <div class=\"tw-flex tw-flex-col md:tw-flex-row rtl:tw-flex-row-reverse\">\r\n <div class=\"tw-hidden md:tw-block md:tw-w-1/12\"></div>\r\n\r\n <div class=\"tw-hidden md:tw-block md:tw-w-6/12 tw-shadow-sm\">\r\n <img\r\n class=\"tw-w-full tw-h-full tw-object-cover tw-rounded-s\"\r\n loading=\"lazy\"\r\n src=\"/Login/SystemThemes/Default/LoginFormPanel/right-pic.jpg\"\r\n alt=\"[LoginFrom_Title]\"\r\n />\r\n </div>\r\n\r\n <div class=\"tw-w-full md:tw-w-4/12 tw-relative tw-bg-white tw-shadow-sm tw-border\">\r\n <div class=\"tw-p-3 md:tw-p-4 xl:tw-p-5\">\r\n <div class=\"tw-mb-3 tw-text-center\">\r\n <a href=\"/\">\r\n <img\r\n src=\"/Login/SystemThemes/Default/LoginFormPanel/logo.jpg\"\r\n alt=\"[LoginFrom_Title]\"\r\n width=\"175\"\r\n height=\"175\"\r\n />\r\n </a>\r\n <div class=\"tw-mt-5\">\r\n <h3 class=\"tw-text-lg tw-font-semibold\">{{ appSettings().Section1Description}}</h3>\r\n </div>\r\n </div>\r\n\r\n <!-- \u0641\u0631\u0645 \u0648\u0631\u0648\u062F -->\r\n <ba-auth [appSettings]=\"appSettings()\" (verified)=\"onVerified()\"></ba-auth>\r\n\r\n <hr class=\"tw-border tw-border-gray-300 tw-my-4\" />\r\n\r\n <div\r\n class=\"tw-flex tw-flex-col md:tw-flex-row tw-gap-2 md:tw-gap-4 tw-justify-start tw-text-sm\"\r\n >\r\n <a\r\n id=\"forgetPassword\"\r\n class=\"tw-text-blue-600 hover:tw-underline tw-pt-2 tw-cursor-pointer\"\r\n tabindex=\"6\"\r\n onclick=\"LoginFormUi.ForgetPassword()\"\r\n >\r\n \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0641\u0631\u0627\u0645\u0648\u0634 \u06A9\u0631\u062F\u0647 \u0627\u0645\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tw-hidden md:tw-block md:tw-w-1/12\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</ng-template>\r\n<ng-template #side>\r\n <div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\r\n <div class=\"tw-flex tw-justify-center tw-h-screen tw-flex-row-reverse\">\r\n <div\r\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\r\n [style.background-image]=\"\r\n 'url(' +\r\n (appSettings().BackgroundPicture\r\n | picFieldSrc: 'ID':null:'':appSettings().WidthOfBackground:appSettings().HeightOfBackground) +\r\n ')'\r\n \"\r\n >\r\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\r\n <div>\r\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\r\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-w-full tw-max-w-md tw-px-6 tw-mx-auto lg:tw-w-2/6 tw-relative\">\r\n <div class=\"tw-flex-1 tw-h-[30rem]\">\r\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center tw-mb-10 tw--m-12\">\r\n <div\r\n class=\"tw-flex tw-items-center\"\r\n [class.tw-flex-col]=\"appSettings().LogoOnTop\"\r\n [class.tw-gap-2]=\"!appSettings().LogoOnTop\"\r\n [class.tw-gap-4]=\"appSettings().LogoOnTop\"\r\n >\r\n <img\r\n [src]=\"\r\n appSettings().Logo\r\n | picFieldSrc: 'ID':null:'':appSettings().WidthOfLogo:appSettings().HeightOfLogo\r\n \"\r\n />\r\n @if(appSettings().Title){\r\n <h2 class=\"tw-text-2xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\r\n {{ appSettings().Title }}\r\n </h2>\r\n }\r\n </div>\r\n @if(appSettings().Subtitle ){\r\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\r\n <p class=\"tw-text-xl tw-mt-1 tw-text-gray-500 dark:tw-text-gray-300\">\r\n {{ appSettings().Subtitle }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n <ba-auth [appSettings]=\"appSettings()\" (verified)=\"onVerified()\"></ba-auth>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-family:IRANYekanDigits}\n"] }]
|
|
540
550
|
}], propDecorators: { _errorTemplate: [{
|
|
@@ -551,14 +561,17 @@ const components = [
|
|
|
551
561
|
LoginComponent
|
|
552
562
|
];
|
|
553
563
|
class BarsaAuthModule extends BaseModule {
|
|
554
|
-
|
|
564
|
+
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
565
|
+
constructor() {
|
|
566
|
+
const dcm = inject(DynamicComponentService);
|
|
567
|
+
const componentFactoryResolver = inject(ComponentFactoryResolver);
|
|
555
568
|
super(dcm, componentFactoryResolver, 'BarsaAuthModule');
|
|
569
|
+
this.dynamicComponents = [...components];
|
|
556
570
|
this.dcm = dcm;
|
|
557
571
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
558
|
-
this.dynamicComponents = [...components];
|
|
559
572
|
}
|
|
560
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
561
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
573
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
574
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: BarsaAuthModule, declarations: [BarsaAuthComponent,
|
|
562
575
|
EnterMobileComponent,
|
|
563
576
|
VerificationComponent,
|
|
564
577
|
TimerCountDownComponent,
|
|
@@ -569,16 +582,16 @@ class BarsaAuthModule extends BaseModule {
|
|
|
569
582
|
TimerCountDownComponent,
|
|
570
583
|
UserPassComponent,
|
|
571
584
|
LoginComponent] }); }
|
|
572
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
585
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaAuthModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, BarsaNovinRayCoreModule] }); }
|
|
573
586
|
}
|
|
574
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
587
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaAuthModule, decorators: [{
|
|
575
588
|
type: NgModule,
|
|
576
589
|
args: [{
|
|
577
590
|
declarations: [...components],
|
|
578
591
|
imports: [CommonModule, FormsModule, ReactiveFormsModule, BarsaNovinRayCoreModule],
|
|
579
592
|
exports: [...components]
|
|
580
593
|
}]
|
|
581
|
-
}], ctorParameters: () => [
|
|
594
|
+
}], ctorParameters: () => [] });
|
|
582
595
|
|
|
583
596
|
/*
|
|
584
597
|
* Public API Surface of barsa-auth
|