barsa-novin-ray-core 2.0.125 → 2.0.127

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.
Files changed (29) hide show
  1. package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +8 -1
  2. package/esm2022/lib/barsa-novin-ray-core.module.mjs +35 -12
  3. package/esm2022/lib/button-loading/button-loading.component.mjs +18 -0
  4. package/esm2022/lib/constants.mjs +9 -1
  5. package/esm2022/lib/controllers/base-controller.mjs +30 -0
  6. package/esm2022/lib/controllers/index.mjs +5 -0
  7. package/esm2022/lib/controllers/login-controller.mjs +54 -0
  8. package/esm2022/lib/controllers/login-verification-controller.mjs +54 -0
  9. package/esm2022/lib/controllers/models.mjs +2 -0
  10. package/esm2022/lib/login-enter-mobile/login-enter-mobile.component.mjs +64 -0
  11. package/esm2022/lib/login-verification/login-verification.component.mjs +79 -0
  12. package/esm2022/lib/login2/login2.component.mjs +60 -0
  13. package/esm2022/lib/services/form-panel.service.mjs +2 -2
  14. package/esm2022/public-api.mjs +6 -1
  15. package/fesm2022/barsa-novin-ray-core.mjs +364 -11
  16. package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
  17. package/lib/barsa-novin-ray-core.module.d.ts +92 -83
  18. package/lib/button-loading/button-loading.component.d.ts +8 -0
  19. package/lib/constants.d.ts +4 -0
  20. package/lib/controllers/base-controller.d.ts +29 -0
  21. package/lib/controllers/index.d.ts +4 -0
  22. package/lib/controllers/login-controller.d.ts +22 -0
  23. package/lib/controllers/login-verification-controller.d.ts +19 -0
  24. package/lib/controllers/models.d.ts +6 -0
  25. package/lib/login-enter-mobile/login-enter-mobile.component.d.ts +24 -0
  26. package/lib/login-verification/login-verification.component.d.ts +31 -0
  27. package/lib/login2/login2.component.d.ts +34 -0
  28. package/package.json +1 -1
  29. package/public-api.d.ts +5 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, InjectionToken, Injectable, Optional, inject, ElementRef, SkipSelf, NgModuleFactory, Inject, Pipe, EventEmitter, Self, Output, HostBinding, ChangeDetectorRef, HostListener, ViewContainerRef, ViewChild, Directive, Renderer2, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, APP_INITIALIZER, ErrorHandler } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Input, InjectionToken, Injectable, Optional, inject, ElementRef, SkipSelf, NgModuleFactory, Inject, Pipe, EventEmitter, Self, Output, HostBinding, ChangeDetectorRef, HostListener, ViewContainerRef, ViewChild, Directive, Renderer2, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, signal, NgZone, ViewChildren, APP_INITIALIZER, ErrorHandler } from '@angular/core';
3
3
  import { Subject, from, BehaviorSubject, of, combineLatest, fromEvent, forkJoin, throwError, merge, interval, filter as filter$1, tap as tap$1, concatMap as concatMap$1, catchError as catchError$1, finalize as finalize$1, Observable, takeUntil as takeUntil$1, debounceTime as debounceTime$1, switchMap as switchMap$1, timer, mergeWith } from 'rxjs';
4
4
  import * as i1 from '@angular/router';
5
5
  import { NavigationEnd, ActivatedRoute, Router, NavigationStart, RouterEvent, RouterModule } from '@angular/router';
@@ -11,14 +11,16 @@ import 'moment/locale/ar-SA';
11
11
  import moment$2 from 'moment-jalaali';
12
12
  import 'moment/locale/fa';
13
13
  import * as i1$1 from '@angular/common/http';
14
- import { HttpEventType, HttpErrorResponse, HttpHeaders, HttpClientModule } from '@angular/common/http';
14
+ import { HttpEventType, HttpErrorResponse, HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http';
15
15
  import * as i2 from '@angular/common';
16
16
  import { DOCUMENT, CommonModule } from '@angular/common';
17
17
  import * as i4 from '@angular/platform-browser';
18
18
  import { Title } from '@angular/platform-browser';
19
19
  import RecordRTC from 'recordrtc';
20
20
  import * as i2$1 from '@angular/service-worker';
21
- import { FormsModule } from '@angular/forms';
21
+ import * as i1$2 from '@angular/forms';
22
+ import { FormsModule, Validators, ReactiveFormsModule } from '@angular/forms';
23
+ import { MessageToastService, ToastBottomCenterPosition } from '@fundamental-ngx/core';
22
24
 
23
25
  class BarsaApi {
24
26
  static { this.idGenerator = -10000; }
@@ -2278,6 +2280,14 @@ const AudioMimeType = 'audio/*';
2278
2280
  function ChangeLayoutInfoCustomUi(layoutInfo, componentUi) {
2279
2281
  layoutInfo.FieldUi.Setting.CustomUi = componentUi;
2280
2282
  }
2283
+ const mobile_regex = new RegExp('^(\\+98|0)?9\\d{9}$');
2284
+ const number_only = new RegExp('^[0-9]+$');
2285
+ function forbiddenValidator(nameRe) {
2286
+ return (control) => {
2287
+ const forbidden = nameRe.test(control.value);
2288
+ return !forbidden ? { forbiddenName: { value: control.value } } : null;
2289
+ };
2290
+ }
2281
2291
 
2282
2292
  class ApiService {
2283
2293
  constructor(httpClient) {
@@ -2687,7 +2697,7 @@ class FormPanelService extends BaseComponent {
2687
2697
  btn.handler(btn, this._context);
2688
2698
  }
2689
2699
  wfChoice(btn) {
2690
- this._context.WorkflowPanelUi.fireEvent('ChoiceSelect', btn, this._context);
2700
+ this._context.fireEvent('TransitionSelect', this._context, btn);
2691
2701
  }
2692
2702
  changeSidebarState(state) {
2693
2703
  this._sidebarState$.next(state);
@@ -13621,6 +13631,325 @@ var barsaSapUiFormPage_module = /*#__PURE__*/Object.freeze({
13621
13631
  BarsaSapUiFormPageModule: BarsaSapUiFormPageModule
13622
13632
  });
13623
13633
 
13634
+ class BaseController {
13635
+ /**
13636
+ *
13637
+ */
13638
+ constructor(view) {
13639
+ this.view = view;
13640
+ }
13641
+ }
13642
+ class ViewBase {
13643
+ constructor() {
13644
+ this.errorMessage = signal('');
13645
+ this.errorCode = signal(-1);
13646
+ }
13647
+ ngOnInit() {
13648
+ this.controller.init();
13649
+ }
13650
+ showError(message, code) {
13651
+ this.errorMessage.set(message);
13652
+ this.errorCode.set(code);
13653
+ }
13654
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ViewBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13655
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: ViewBase, ngImport: i0 }); }
13656
+ }
13657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ViewBase, decorators: [{
13658
+ type: Directive,
13659
+ args: [{}]
13660
+ }] });
13661
+
13662
+ class LoginController extends BaseController {
13663
+ constructor(view) {
13664
+ super(view);
13665
+ this.loading = signal(false);
13666
+ this.canSend = signal(false);
13667
+ this._portalService = inject(PortalService);
13668
+ this._httpClient = inject(HttpClient);
13669
+ }
13670
+ get form() {
13671
+ return this.view.form;
13672
+ }
13673
+ sendCode(e) {
13674
+ const { mobile, cap, capId } = e;
13675
+ this.form.valid && this.loading.set(true);
13676
+ // const x = (): void => {
13677
+ // this.loading.set(false);
13678
+ // };
13679
+ this._httpClient
13680
+ .get(`/api/openid/signin?provider=BarsaOtpLogin&mobile=${mobile}&capId=${capId}&captchaCode=${cap}`)
13681
+ .pipe(finalize$1(() => {
13682
+ this.loading.set(false);
13683
+ }), catchError$1((err) => {
13684
+ if (typeof err === 'object' && err.status === 403) {
13685
+ this.view.showError(err.error.Message, err.error.Code);
13686
+ }
13687
+ return throwError(() => new Error(err));
13688
+ }))
13689
+ .subscribe((c) => {
13690
+ if (c?.otpId) {
13691
+ localStorage.setItem('otpId', c.otpId);
13692
+ this.view.codeSent();
13693
+ }
13694
+ else if (!e.succeed) {
13695
+ // debugger;
13696
+ }
13697
+ });
13698
+ }
13699
+ init() {
13700
+ this.form.valueChanges.subscribe((c) => (this.form.valid ? this.canSend.set(true) : this.canSend.set(false)));
13701
+ }
13702
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginController, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
13703
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: LoginController, usesInheritance: true, ngImport: i0 }); }
13704
+ }
13705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginController, decorators: [{
13706
+ type: Directive,
13707
+ args: [{}]
13708
+ }], ctorParameters: () => [{ type: undefined }] });
13709
+
13710
+ class LoginVerificationController extends BaseController {
13711
+ constructor(view) {
13712
+ super(view);
13713
+ this.loading = signal(false);
13714
+ this.canVerify = signal(false);
13715
+ this._httpClient = inject(HttpClient);
13716
+ }
13717
+ get form() {
13718
+ return this.view.form;
13719
+ }
13720
+ verifyCode(e) {
13721
+ this.form.valid && this.loading.set(true);
13722
+ const { code, cap, capId } = e;
13723
+ this.form.valid && this.loading.set(true);
13724
+ this._httpClient
13725
+ .post(`/api/openid/callback?provider=BarsaOtpLogin`, {
13726
+ otpId: localStorage.getItem('otpId'),
13727
+ otpCode: code,
13728
+ captchaCode: cap,
13729
+ capId
13730
+ })
13731
+ .pipe(finalize$1(() => {
13732
+ this.loading.set(false);
13733
+ }), catchError$1((err) => {
13734
+ if (typeof err === 'object' && err.status === 403) {
13735
+ this.view.showError(err.error.Message, err.error.Code);
13736
+ }
13737
+ return throwError(() => new Error(err));
13738
+ }))
13739
+ .subscribe((c) => {
13740
+ if (c?.Sth) {
13741
+ localStorage.removeItem('otpId');
13742
+ window.localStorage.setItem(BarsaApi.LoginAction.token2StorageKey, c.Sth);
13743
+ this.view.codeVerified();
13744
+ }
13745
+ });
13746
+ }
13747
+ init() {
13748
+ this.form.valueChanges.subscribe((c) => this.form.valid ? this.canVerify.set(true) : this.canVerify.set(false));
13749
+ }
13750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginVerificationController, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
13751
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: LoginVerificationController, usesInheritance: true, ngImport: i0 }); }
13752
+ }
13753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginVerificationController, decorators: [{
13754
+ type: Directive,
13755
+ args: [{}]
13756
+ }], ctorParameters: () => [{ type: undefined }] });
13757
+
13758
+ class ButtonLoadingComponent {
13759
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ButtonLoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: { valid: "valid", loading: "loading", text: "text" }, ngImport: i0, template: "<!-- <button class=\"button\" [disabled]=\"loading\">\n <i [class.!tw-hidden]=\"!loading\" class=\"fa fa-circle-o-notch fa-spin\"></i\n >{{ (loading ? 'Wait' : text) | bbbTranslate }}\n</button> -->\n<button type=\"button\" class=\"button\" [class.button--loading]=\"loading\" [disabled]=\"loading\">\n <span class=\"button__text\">{{ text | bbbTranslate }}</span>\n</button>\n", styles: [":host{display:block;width:100%}.button{width:100%;position:relative;padding:8px 16px;background:#009579;border:none;outline:none;border-radius:2px;cursor:pointer}.button:active{background:#007a63}.button__text{font:700 1rem IranYekanDigits,BarsaFont;color:#fff;transition:all .2s}.button--loading .button__text{visibility:hidden;opacity:0}.button--loading:after{content:\"\";position:absolute;width:16px;height:16px;inset:0;margin:auto;border:4px solid transparent;border-top-color:#fff;border-radius:50%;animation:button-loading-spinner 1s ease infinite}@keyframes button-loading-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}\n"], dependencies: [{ kind: "pipe", type: BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13761
+ }
13762
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ButtonLoadingComponent, decorators: [{
13763
+ type: Component,
13764
+ args: [{ selector: 'bnrc-button-loading', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <button class=\"button\" [disabled]=\"loading\">\n <i [class.!tw-hidden]=\"!loading\" class=\"fa fa-circle-o-notch fa-spin\"></i\n >{{ (loading ? 'Wait' : text) | bbbTranslate }}\n</button> -->\n<button type=\"button\" class=\"button\" [class.button--loading]=\"loading\" [disabled]=\"loading\">\n <span class=\"button__text\">{{ text | bbbTranslate }}</span>\n</button>\n", styles: [":host{display:block;width:100%}.button{width:100%;position:relative;padding:8px 16px;background:#009579;border:none;outline:none;border-radius:2px;cursor:pointer}.button:active{background:#007a63}.button__text{font:700 1rem IranYekanDigits,BarsaFont;color:#fff;transition:all .2s}.button--loading .button__text{visibility:hidden;opacity:0}.button--loading:after{content:\"\";position:absolute;width:16px;height:16px;inset:0;margin:auto;border:4px solid transparent;border-top-color:#fff;border-radius:50%;animation:button-loading-spinner 1s ease infinite}@keyframes button-loading-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}\n"] }]
13765
+ }], propDecorators: { valid: [{
13766
+ type: Input
13767
+ }], loading: [{
13768
+ type: Input
13769
+ }], text: [{
13770
+ type: Input
13771
+ }] } });
13772
+
13773
+ class LoginEnterMobileComponent extends ViewBase {
13774
+ constructor(fb) {
13775
+ super();
13776
+ this.fb = fb;
13777
+ this.otpSent = new EventEmitter();
13778
+ this.capId = signal('-');
13779
+ this.showCaptcha = signal(false);
13780
+ this.messageToastService = inject(MessageToastService);
13781
+ this.showCaptcha.set(false);
13782
+ this.form = this.fb.group({
13783
+ mobile: [
13784
+ '',
13785
+ Validators.compose([Validators.required, Validators.maxLength(11), forbiddenValidator(mobile_regex)])
13786
+ ],
13787
+ cap: [''],
13788
+ capId: [this.capId(), Validators.required]
13789
+ });
13790
+ this.controller = new LoginController(this);
13791
+ }
13792
+ showError(message, code) {
13793
+ super.showError(message, code);
13794
+ this.messageToastService.open(this.errorTemplate, {
13795
+ duration: 5000,
13796
+ positionStrategy: ToastBottomCenterPosition,
13797
+ data: {
13798
+ message
13799
+ }
13800
+ });
13801
+ }
13802
+ codeSent() {
13803
+ this.otpSent.emit(this.form.value.mobile);
13804
+ }
13805
+ ngOnInit() {
13806
+ super.ngOnInit();
13807
+ }
13808
+ get loading() {
13809
+ return this.controller.loading();
13810
+ }
13811
+ get canSend() {
13812
+ return this.controller.canSend();
13813
+ }
13814
+ onSendCode() {
13815
+ this.controller.sendCode(this.form.value);
13816
+ }
13817
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginEnterMobileComponent, deps: [{ token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
13818
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: LoginEnterMobileComponent, selector: "bnrc-login-enter-mobile", inputs: { errorTemplate: "errorTemplate" }, outputs: { otpSent: "otpSent" }, usesInheritance: true, ngImport: i0, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\n <div class=\"tw-mb-4\">\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4\" for=\"username\"> \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647 </label>\n <input\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\"\n name=\"mobile\"\n formControlName=\"mobile\"\n placeholder=\"09121234567\"\n maxlength=\"11\"\n type=\"tel\"\n [disabled]=\"loading\"\n />\n </div>\n <!-- <app-form-captcha [capId]=\"capId()\" [showCaptcha]=\"showCaptcha()\" formControlName=\"cap\"></app-form-captcha> -->\n <div class=\"tw-flex tw-items-center\">\n <bnrc-button-loading\n [text]=\"'\u0627\u0631\u0633\u0627\u0644 \u06A9\u062F \u062A\u0627\u06CC\u06CC\u062F'\"\n [valid]=\"canSend\"\n [loading]=\"loading\"\n (click)=\"onSendCode()\"\n ></bnrc-button-loading>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13819
+ }
13820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginEnterMobileComponent, decorators: [{
13821
+ type: Component,
13822
+ args: [{ selector: 'bnrc-login-enter-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\n <div class=\"tw-mb-4\">\n <label class=\"tw-block tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4\" for=\"username\"> \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647 </label>\n <input\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\"\n name=\"mobile\"\n formControlName=\"mobile\"\n placeholder=\"09121234567\"\n maxlength=\"11\"\n type=\"tel\"\n [disabled]=\"loading\"\n />\n </div>\n <!-- <app-form-captcha [capId]=\"capId()\" [showCaptcha]=\"showCaptcha()\" formControlName=\"cap\"></app-form-captcha> -->\n <div class=\"tw-flex tw-items-center\">\n <bnrc-button-loading\n [text]=\"'\u0627\u0631\u0633\u0627\u0644 \u06A9\u062F \u062A\u0627\u06CC\u06CC\u062F'\"\n [valid]=\"canSend\"\n [loading]=\"loading\"\n (click)=\"onSendCode()\"\n ></bnrc-button-loading>\n </div>\n</form>\n" }]
13823
+ }], ctorParameters: () => [{ type: i1$2.FormBuilder }], propDecorators: { otpSent: [{
13824
+ type: Output
13825
+ }], errorTemplate: [{
13826
+ type: Input
13827
+ }] } });
13828
+
13829
+ class LoginVerificationComponent extends ViewBase {
13830
+ constructor(fb) {
13831
+ super();
13832
+ this.fb = fb;
13833
+ this.otpVerified = new EventEmitter();
13834
+ this.changeMobile = new EventEmitter();
13835
+ this.capId = signal('-');
13836
+ this.showCaptcha = signal(false);
13837
+ this._ngZone = inject(NgZone);
13838
+ this.messageToastService = inject(MessageToastService);
13839
+ this.showCaptcha.set(false);
13840
+ this.form = this.fb.group({
13841
+ in1: ['', Validators.compose([Validators.required, Validators.maxLength(6)])],
13842
+ cap: [''],
13843
+ capId: [this.capId(), Validators.required]
13844
+ });
13845
+ this.controller = new LoginVerificationController(this);
13846
+ }
13847
+ ngOnInit() {
13848
+ super.ngOnInit();
13849
+ }
13850
+ codeVerified() {
13851
+ this.otpVerified.emit();
13852
+ }
13853
+ showError(message, code) {
13854
+ super.showError(message, code);
13855
+ this.messageToastService.open(this.errorTemplate, {
13856
+ duration: 5000,
13857
+ positionStrategy: ToastBottomCenterPosition,
13858
+ data: {
13859
+ message
13860
+ }
13861
+ });
13862
+ }
13863
+ onVerifyCode() {
13864
+ this._verifyCode();
13865
+ }
13866
+ _verifyCode() {
13867
+ const { in1, capId, cap } = this.form.value;
13868
+ this.controller.verifyCode({ code: `${in1}`, capId, cap });
13869
+ }
13870
+ get invArr() {
13871
+ return this._inputsEl.toArray();
13872
+ }
13873
+ get loading() {
13874
+ return this.controller.loading();
13875
+ }
13876
+ get canVerify() {
13877
+ return this.controller.canVerify();
13878
+ }
13879
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginVerificationComponent, deps: [{ token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
13880
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: LoginVerificationComponent, selector: "bnrc-login-verification", inputs: { mobile: "mobile", errorTemplate: "errorTemplate" }, outputs: { otpVerified: "otpVerified", changeMobile: "changeMobile" }, viewQueries: [{ propertyName: "_loadingBtn", first: true, predicate: ["loadingBtn"], descendants: true }, { propertyName: "_inputsEl", predicate: ["inputv"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\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.\n </label>\n <a\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-extrabold tw-mb-4\"\n (click)=\"changeMobile.emit()\"\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\n <path\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\"\n fill=\"#316bec\"\n />\n </svg>\n </a>\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4 tw-flex-row-reverse\">\n <input\n #inputv\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\"\n maxlength=\"6\"\n tabindex=\"0\"\n name=\"in1\"\n formControlName=\"in1\"\n />\n </div>\n <div class=\"tw-flex tw-items-center\">\n <bnrc-button-loading\n #loadingBtn\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\n [valid]=\"canVerify\"\n [loading]=\"loading\"\n (click)=\"onVerifyCode()\"\n ></bnrc-button-loading>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ButtonLoadingComponent, selector: "bnrc-button-loading", inputs: ["valid", "loading", "text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13881
+ }
13882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: LoginVerificationComponent, decorators: [{
13883
+ type: Component,
13884
+ args: [{ selector: 'bnrc-login-verification', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"tw-px-8 tw-pt-6 tw-pb-8 tw-mb-2 tw-mt-2\" [formGroup]=\"form\">\n <label class=\"tw-block tw-w-full tw-text-gray-500 tw-text-md tw-font-bold tw-mb-4 tw-text-sm\">\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.\n </label>\n <a\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-extrabold tw-mb-4\"\n (click)=\"changeMobile.emit()\"\n >\u0648\u06CC\u0631\u0627\u06CC\u0634 \u0634\u0645\u0627\u0631\u0647 \u0647\u0645\u0631\u0627\u0647\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tw-w-6\">\n <path\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\"\n fill=\"#316bec\"\n />\n </svg>\n </a>\n <div class=\"tw-flex tw-items-center tw-justify-center tw-gap-3 tw-mb-4 tw-flex-row-reverse\">\n <input\n #inputv\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\"\n maxlength=\"6\"\n tabindex=\"0\"\n name=\"in1\"\n formControlName=\"in1\"\n />\n </div>\n <div class=\"tw-flex tw-items-center\">\n <bnrc-button-loading\n #loadingBtn\n [text]=\"'\u062A\u0627\u06CC\u06CC\u062F \u06A9\u062F'\"\n [valid]=\"canVerify\"\n [loading]=\"loading\"\n (click)=\"onVerifyCode()\"\n ></bnrc-button-loading>\n </div>\n</form>\n" }]
13885
+ }], ctorParameters: () => [{ type: i1$2.FormBuilder }], propDecorators: { _inputsEl: [{
13886
+ type: ViewChildren,
13887
+ args: ['inputv']
13888
+ }], _loadingBtn: [{
13889
+ type: ViewChild,
13890
+ args: ['loadingBtn']
13891
+ }], otpVerified: [{
13892
+ type: Output
13893
+ }], changeMobile: [{
13894
+ type: Output
13895
+ }], mobile: [{
13896
+ type: Input
13897
+ }], errorTemplate: [{
13898
+ type: Input
13899
+ }] } });
13900
+
13901
+ class Login2Component {
13902
+ constructor() {
13903
+ this.mobile = signal('');
13904
+ this.loading = signal(false);
13905
+ this._router = inject(Router);
13906
+ this._portalService = inject(PortalService);
13907
+ this.state = signal('enter-mobile');
13908
+ this.appSettings = signal({
13909
+ BackgroundUrl: '',
13910
+ LogoUrl: '',
13911
+ HideGovSso: true,
13912
+ Section1Title: 'برسانوین‌رای',
13913
+ Section1Description: 'سیستم ساز',
13914
+ Subtitle: 'ورود به سامانه',
13915
+ Title: 'برسانوین‌رای'
13916
+ });
13917
+ this.logoUrl = '';
13918
+ this.backgroundUrl = '';
13919
+ this.title = '';
13920
+ this.hideGovSso = false;
13921
+ }
13922
+ ngOnInit() {
13923
+ fetch(`/assets/login2.json?x=${BarsaApi.LoginFormData.ChangeKeyVersion}`)
13924
+ .then((res) => res.json())
13925
+ .then((res) => this.appSettings.set(res));
13926
+ }
13927
+ onOtpSent(mobile) {
13928
+ this.mobile.set(mobile);
13929
+ this.state.set('verification');
13930
+ }
13931
+ onChangeMobile() {
13932
+ this.state.set('enter-mobile');
13933
+ }
13934
+ onOtpVerfied() {
13935
+ this.loading.set(true);
13936
+ this._portalService
13937
+ .loadServerStartupData()
13938
+ .then(() => this._portalService.loadSystem())
13939
+ .then(() => this._portalService.loadUserPortalSetting())
13940
+ .then(() => {
13941
+ this._router.navigate([this._portalService.DefaultPage?.Route || '/']);
13942
+ })
13943
+ .catch(() => this.loading.set(false));
13944
+ }
13945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: Login2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13946
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: Login2Component, selector: "bnrc-login2", ngImport: i0, template: "<div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\n <div class=\"tw-flex tw-justify-center tw-h-screen\">\n <div\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\n [style.background-image]=\"'url(' + appSettings().BackgroundUrl + ')'\"\n >\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\n <div>\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\n\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\n </div>\n </div>\n </div>\n\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\">\n <div class=\"tw-flex-1\">\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center\">\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\n <img [src]=\"appSettings().LogoUrl\" />\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\n {{ appSettings().Title }}\n </h2>\n </div>\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\n <img [src]=\"appSettings().LogoUrl\" class=\"tw-invisible\" />\n <p class=\"tw-mt-3 tw-text-gray-500 dark:tw-text-gray-300\">{{ appSettings().Subtitle }}</p>\n </div>\n </div>\n <div>\n @if(state()==='enter-mobile'){\n <bnrc-login-enter-mobile\n (otpSent)=\"onOtpSent($event)\"\n [errorTemplate]=\"template\"\n ></bnrc-login-enter-mobile>\n }@else{\n <bnrc-login-verification\n [mobile]=\"mobile()\"\n (changeMobile)=\"onChangeMobile()\"\n (otpVerified)=\"onOtpVerfied()\"\n [errorTemplate]=\"template\"\n ></bnrc-login-verification>\n }\n </div>\n @if(state()==='enter-mobile' && !appSettings().HideGovSso){\n <div class=\"tw-relative tw-flex tw-py-5 tw-items-center tw-px-2\">\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\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>\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\n </div>\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\n <div class=\"tw-flex tw-items-center tw-text-center\">\n <a class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm\" href=\"\"\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\n </a>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template let-messageToast #template>\n <p class=\"error\" [dismissible]=\"true\">{{ messageToast.data.message }}</p>\n</ng-template>\n", styles: [":host{font-family:IRANYekanDigits}\n"], dependencies: [{ kind: "component", type: LoginEnterMobileComponent, selector: "bnrc-login-enter-mobile", inputs: ["errorTemplate"], outputs: ["otpSent"] }, { kind: "component", type: LoginVerificationComponent, selector: "bnrc-login-verification", inputs: ["mobile", "errorTemplate"], outputs: ["otpVerified", "changeMobile"] }, { kind: "directive", type: MobileDirective, selector: "[mobile]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13947
+ }
13948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: Login2Component, decorators: [{
13949
+ type: Component,
13950
+ args: [{ selector: 'bnrc-login2', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tw-bg-white dark:tw-bg-gray-900 tw-w-full tw-h-full\">\n <div class=\"tw-flex tw-justify-center tw-h-screen\">\n <div\n class=\"tw-hidden tw-bg-cover lg:tw-block lg:tw-w-2/3\"\n [style.background-image]=\"'url(' + appSettings().BackgroundUrl + ')'\"\n >\n <div class=\"tw-flex tw-items-center tw-h-full tw-px-20 tw-bg-gray-900 tw-bg-opacity-40\">\n <div>\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-white\">{{ appSettings().Section1Title }}</h2>\n\n <p class=\"tw-max-w-xl tw-mt-3 tw-text-gray-300\">{{ appSettings().Section1Description }}</p>\n </div>\n </div>\n </div>\n\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\">\n <div class=\"tw-flex-1\">\n <div class=\"tw-text-center tw-flex tw-flex-col tw-items-center\">\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\n <img [src]=\"appSettings().LogoUrl\" />\n <h2 class=\"tw-text-4xl tw-font-bold tw-text-center tw-text-gray-700 dark:tw-text-white\">\n {{ appSettings().Title }}\n </h2>\n </div>\n <div class=\"tw-flex tw-gap-2 tw-items-center\">\n <img [src]=\"appSettings().LogoUrl\" class=\"tw-invisible\" />\n <p class=\"tw-mt-3 tw-text-gray-500 dark:tw-text-gray-300\">{{ appSettings().Subtitle }}</p>\n </div>\n </div>\n <div>\n @if(state()==='enter-mobile'){\n <bnrc-login-enter-mobile\n (otpSent)=\"onOtpSent($event)\"\n [errorTemplate]=\"template\"\n ></bnrc-login-enter-mobile>\n }@else{\n <bnrc-login-verification\n [mobile]=\"mobile()\"\n (changeMobile)=\"onChangeMobile()\"\n (otpVerified)=\"onOtpVerfied()\"\n [errorTemplate]=\"template\"\n ></bnrc-login-verification>\n }\n </div>\n @if(state()==='enter-mobile' && !appSettings().HideGovSso){\n <div class=\"tw-relative tw-flex tw-py-5 tw-items-center tw-px-2\">\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\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>\n <div class=\"tw-flex-grow tw-border-t tw-border-gray-400\"></div>\n </div>\n <div class=\"tw-rounded-lg back-box-color tw-w-full tw-py-3\">\n <div class=\"tw-flex tw-items-center tw-text-center\">\n <a class=\"tw-w-full tw-text-blue-600 tw-visited:tw-text-purple-600 tw-text-sm\" href=\"\"\n >\u0648\u0631\u0648\u062F \u0627\u0632 \u0637\u0631\u06CC\u0642 \u062F\u0631\u06AF\u0627\u0647 \u062F\u0648\u0644\u062A \u0645\u0646\n </a>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template let-messageToast #template>\n <p class=\"error\" [dismissible]=\"true\">{{ messageToast.data.message }}</p>\n</ng-template>\n", styles: [":host{font-family:IRANYekanDigits}\n"] }]
13951
+ }], ctorParameters: () => [] });
13952
+
13624
13953
  class BaseUlvSettingComponent extends BaseComponent {
13625
13954
  constructor() {
13626
13955
  super(...arguments);
@@ -13871,6 +14200,12 @@ const routesDefault = [
13871
14200
  canActivate: [RedirectHomeGuard],
13872
14201
  children: [formRoutes(true)]
13873
14202
  },
14203
+ {
14204
+ path: 'login2',
14205
+ component: Login2Component,
14206
+ data: { pageData: { Route: '/login2', Module: 'BarsaLoginPage' } },
14207
+ canActivate: [RedirectHomeGuard]
14208
+ },
13874
14209
  {
13875
14210
  path: 'resetpassword',
13876
14211
  component: EmptyPageComponent,
@@ -14176,7 +14511,11 @@ const components = [
14176
14511
  DynamicLayoutComponent,
14177
14512
  EmptyPageComponent,
14178
14513
  FormPageComponent,
14179
- FormFieldReportPageComponent
14514
+ FormFieldReportPageComponent,
14515
+ Login2Component,
14516
+ LoginEnterMobileComponent,
14517
+ LoginVerificationComponent,
14518
+ ButtonLoadingComponent
14180
14519
  ];
14181
14520
  const directives = [
14182
14521
  PlaceHolderDirective,
@@ -14392,7 +14731,11 @@ class BarsaNovinRayCoreModule extends BaseModule {
14392
14731
  DynamicLayoutComponent,
14393
14732
  EmptyPageComponent,
14394
14733
  FormPageComponent,
14395
- FormFieldReportPageComponent, NumeralPipe,
14734
+ FormFieldReportPageComponent,
14735
+ Login2Component,
14736
+ LoginEnterMobileComponent,
14737
+ LoginVerificationComponent,
14738
+ ButtonLoadingComponent, NumeralPipe,
14396
14739
  CanUploadFilePipe,
14397
14740
  RemoveNewlinePipe,
14398
14741
  ConvertToStylePipe,
@@ -14470,7 +14813,9 @@ class BarsaNovinRayCoreModule extends BaseModule {
14470
14813
  HttpClientModule,
14471
14814
  BarsaNovinRayCoreRoutingModule,
14472
14815
  BarsaSapUiFormPageModule,
14473
- ResizableModule], exports: [FormComponent,
14816
+ ResizableModule,
14817
+ FormsModule,
14818
+ ReactiveFormsModule], exports: [FormComponent,
14474
14819
  FieldUiComponent,
14475
14820
  NotFoundComponent,
14476
14821
  RootPageComponent,
@@ -14489,7 +14834,11 @@ class BarsaNovinRayCoreModule extends BaseModule {
14489
14834
  DynamicLayoutComponent,
14490
14835
  EmptyPageComponent,
14491
14836
  FormPageComponent,
14492
- FormFieldReportPageComponent, NumeralPipe,
14837
+ FormFieldReportPageComponent,
14838
+ Login2Component,
14839
+ LoginEnterMobileComponent,
14840
+ LoginVerificationComponent,
14841
+ ButtonLoadingComponent, NumeralPipe,
14493
14842
  CanUploadFilePipe,
14494
14843
  RemoveNewlinePipe,
14495
14844
  ConvertToStylePipe,
@@ -14568,7 +14917,9 @@ class BarsaNovinRayCoreModule extends BaseModule {
14568
14917
  HttpClientModule,
14569
14918
  BarsaNovinRayCoreRoutingModule,
14570
14919
  BarsaSapUiFormPageModule,
14571
- ResizableModule] }); }
14920
+ ResizableModule,
14921
+ FormsModule,
14922
+ ReactiveFormsModule] }); }
14572
14923
  }
14573
14924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaNovinRayCoreModule, decorators: [{
14574
14925
  type: NgModule,
@@ -14579,7 +14930,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
14579
14930
  HttpClientModule,
14580
14931
  BarsaNovinRayCoreRoutingModule,
14581
14932
  BarsaSapUiFormPageModule,
14582
- ResizableModule
14933
+ ResizableModule,
14934
+ FormsModule,
14935
+ ReactiveFormsModule
14583
14936
  ],
14584
14937
  exports: [...components, ...pipes, ...directives],
14585
14938
  schemas: [NO_ERRORS_SCHEMA]
@@ -14590,5 +14943,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
14590
14943
  * Generated bundle index. Do not edit.
14591
14944
  */
14592
14945
 
14593
- export { APP_VERSION, AbsoluteDivBodyDirective, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, CalculateControlInfoModel, CanUploadFilePipe, ChangeLayoutInfoCustomUi, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DateTimeToCaptionPipe, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicStyleDirective, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterPipe, FilterStringPipe, FilterTabPipe, FilterToolbarControlPipe, FilterWorkflowInMobilePipe, FindColumnByDbNamePipe, FindGroup, FindLayoutSettingFromLayout94, FindPreviewColumnPipe, FindToolbarItem, FioriIconPipe, FormBaseComponent, FormCloseDirective, FormComponent, FormFieldReportPageComponent, FormNewComponent, FormPageBaseComponent, FormPageComponent, FormPanelService, FormPropsBaseComponent, FormService, FormToolbarBaseComponent, GaugeControlInfoModel, GeneralControlInfoModel, GetAllColumnsSorted, GetDefaultMoObjectInfo, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, HeaderFacetValuePipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, IconControlInfoModel, ImageLazyDirective, ImageMimeType, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsExpandedNodePipe, ItemsRendererDirective, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutPanelBaseComponent, LayoutService, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PromptUpdateService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveNewlinePipe, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SanitizeTextPipe, SaveScrollPositionService, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, StopPropagationDirective, StringControlInfoModel, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, VisibleValuePipe, WordMimeType, WorfkflowwChoiceCommandDirective, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, formRoutes, formatBytes, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber };
14946
+ export { APP_VERSION, AbsoluteDivBodyDirective, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, ChangeLayoutInfoCustomUi, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DateTimeToCaptionPipe, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicStyleDirective, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterPipe, FilterStringPipe, FilterTabPipe, FilterToolbarControlPipe, FilterWorkflowInMobilePipe, FindColumnByDbNamePipe, FindGroup, FindLayoutSettingFromLayout94, FindPreviewColumnPipe, FindToolbarItem, FioriIconPipe, FormBaseComponent, FormCloseDirective, FormComponent, FormFieldReportPageComponent, FormNewComponent, FormPageBaseComponent, FormPageComponent, FormPanelService, FormPropsBaseComponent, FormService, FormToolbarBaseComponent, GaugeControlInfoModel, GeneralControlInfoModel, GetAllColumnsSorted, GetDefaultMoObjectInfo, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, HeaderFacetValuePipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, IconControlInfoModel, ImageLazyDirective, ImageMimeType, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsExpandedNodePipe, ItemsRendererDirective, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutPanelBaseComponent, LayoutService, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, Login2Component, LoginController, LoginEnterMobileComponent, LoginVerificationComponent, LoginVerificationController, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PromptUpdateService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveNewlinePipe, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SanitizeTextPipe, SaveScrollPositionService, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, StopPropagationDirective, StringControlInfoModel, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WordMimeType, WorfkflowwChoiceCommandDirective, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, forbiddenValidator, formRoutes, formatBytes, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, mobile_regex, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber };
14594
14947
  //# sourceMappingURL=barsa-novin-ray-core.mjs.map