barsa-novin-ray-core 2.3.101 → 2.3.103

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.
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, ComponentFactoryResolver, Injector, ApplicationRef, Compiler, DOCUMENT, NgModuleFactory, InjectionToken, NgZone, signal, effect, EventEmitter, ChangeDetectorRef, Renderer2, HostBinding, Output, HostListener, ViewContainerRef, ViewChild, Directive, TemplateRef, input, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, ErrorHandler } from '@angular/core';
3
- import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, combineLatest, withLatestFrom as withLatestFrom$1, fromEvent, forkJoin, takeUntil as takeUntil$1, filter as filter$1, throwError, merge, interval, lastValueFrom, take, debounceTime as debounceTime$1, skip, Observable, tap as tap$1, catchError as catchError$1, timer, mergeWith, Subscription } from 'rxjs';
2
+ import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, ComponentFactoryResolver, Injector, ApplicationRef, Compiler, DOCUMENT, NgModuleFactory, InjectionToken, NgZone, signal, ViewContainerRef, EventEmitter, ChangeDetectorRef, Renderer2, HostBinding, Output, HostListener, ViewChild, Directive, TemplateRef, input, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, ErrorHandler } from '@angular/core';
3
+ import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, combineLatest, withLatestFrom as withLatestFrom$1, fromEvent, forkJoin, throwError, merge, interval, filter as filter$1, lastValueFrom, timeout, catchError as catchError$1, takeUntil as takeUntil$1, take, debounceTime as debounceTime$1, skip, Observable, tap as tap$1, timer, mergeWith, Subscription } from 'rxjs';
4
4
  import * as i1 from '@angular/router';
5
- import { Router, NavigationEnd, ActivatedRoute, RouterEvent, NavigationStart, RouterModule } from '@angular/router';
5
+ import { Router, NavigationEnd, ActivatedRoute, RouterEvent, NavigationStart, RouterModule, RouteReuseStrategy } from '@angular/router';
6
6
  import { DomSanitizer, Title } from '@angular/platform-browser';
7
7
  import { filter, startWith, map, tap, takeUntil, withLatestFrom, delay, debounceTime, distinctUntilChanged, exhaustMap as exhaustMap$1, concatMap, finalize, publishReplay, refCount, shareReplay, switchMap, catchError, merge as merge$1, pluck, mergeWith as mergeWith$1 } from 'rxjs/operators';
8
8
  import moment from 'moment';
@@ -1344,6 +1344,7 @@ const _getSystem = () => {
1344
1344
  oSystem.desktop = !!((!oSystem.tablet && !oSystem.phone) || isWin8Upwards);
1345
1345
  oSystem.combi = oSystem.desktop && oSystem.tablet;
1346
1346
  oSystem.SYSTEMTYPE = SYSTEMTYPE;
1347
+ oSystem.phone = oSystem.phone && window.innerWidth < 768;
1347
1348
  return oSystem;
1348
1349
  };
1349
1350
  const _setSystem = () => {
@@ -4473,6 +4474,8 @@ class FormPanelService extends BaseComponent {
4473
4474
  this._headerDescriptionSource = new BehaviorSubject('');
4474
4475
  this._hideFooter$ = new BehaviorSubject(false);
4475
4476
  this._canSend$ = new BehaviorSubject(false);
4477
+ this._router = inject(Router);
4478
+ this._activatedRoute = inject(ActivatedRoute);
4476
4479
  this.context$ = this._contextSource.asObservable().pipe(tap((context) => this._prepareContext(context)), takeUntil(this._onDestroy$));
4477
4480
  this.searchPanelIsObject$ = this._searchPanelIsObjectSource.asObservable().pipe(takeUntil(this._onDestroy$));
4478
4481
  this.isSearchPanel$ = this._isSearchPanelSource.asObservable().pipe(takeUntil(this._onDestroy$));
@@ -4821,7 +4824,38 @@ class FormPanelService extends BaseComponent {
4821
4824
  }
4822
4825
  _refresh() {
4823
4826
  this._initialize(this._context);
4824
- // this._prepareView(this._context.Setting.View);
4827
+ const mo = this._moSource.getValue();
4828
+ if (!mo) {
4829
+ return;
4830
+ }
4831
+ const breadCrumb = this._headerLayoutSource.getValue();
4832
+ const mainChild = this._activatedRoute.children.find((c) => c.outlet === 'main');
4833
+ const currentParams = mainChild?.snapshot.params ?? {};
4834
+ const queryParamsToUpdate = {
4835
+ id: mo.$State === 'New' ? '0' : mo.Id,
4836
+ tyid: mo.$TypeDefId,
4837
+ tycp: mo.$Caption ? mo.$Caption : null,
4838
+ repid: mo.$ReportId,
4839
+ vid: this._viewSource.getValue()?.TypeViewId,
4840
+ bc: breadCrumb ? breadCrumb : mo.$State === 'New' ? mo.$TypeDefName : mo.$Caption
4841
+ };
4842
+ if (currentParams.id === queryParamsToUpdate.id &&
4843
+ currentParams.tyid === queryParamsToUpdate.tyid &&
4844
+ currentParams.repid === queryParamsToUpdate.repid &&
4845
+ currentParams.vid === queryParamsToUpdate.vid) {
4846
+ return;
4847
+ }
4848
+ const newParams = {
4849
+ ...currentParams,
4850
+ ...queryParamsToUpdate // پارامترهایی که می‌خواهی تغییر دهی
4851
+ };
4852
+ this._router.navigate([
4853
+ {
4854
+ outlets: {
4855
+ main: ['show', newParams]
4856
+ }
4857
+ }
4858
+ ], { relativeTo: this._activatedRoute.parent, skipLocationChange: false });
4825
4859
  }
4826
4860
  _forceClose() {
4827
4861
  this._forceCloseSource.next();
@@ -4871,6 +4905,128 @@ class FormService {
4871
4905
  }
4872
4906
  }
4873
4907
 
4908
+ class ContainerService {
4909
+ constructor() {
4910
+ this.detachParent = true;
4911
+ this.state = 'attach';
4912
+ this.addModules = new Subject();
4913
+ this._onDestroy$ = new Subject();
4914
+ this._parentService = inject(ContainerService, { skipSelf: true, optional: true });
4915
+ this._scrollTop = 0;
4916
+ this._el = inject(ElementRef);
4917
+ }
4918
+ /** Inserted by Angular inject() migration for backwards compatibility */
4919
+ ngOnDestroy() {
4920
+ this._onDestroy$.next();
4921
+ this._onDestroy$.complete();
4922
+ if (this._parentService && this.detachParent) {
4923
+ this._parentService.insert();
4924
+ }
4925
+ }
4926
+ setViewContainerRef(viewContainerRef) {
4927
+ this._viewContainerRef = viewContainerRef;
4928
+ this.state = 'attach';
4929
+ if (this._parentService && this.detachParent) {
4930
+ this._parentService.detach();
4931
+ }
4932
+ }
4933
+ detach() {
4934
+ this._setScrollPosition();
4935
+ this.state = 'detach';
4936
+ this._viewRef = this._viewContainerRef.detach();
4937
+ }
4938
+ _setScrollPosition() {
4939
+ const elDom = this._el.nativeElement;
4940
+ if (elDom) {
4941
+ const x1 = elDom.querySelector('fd-dynamic-page-content');
4942
+ const x2 = elDom.querySelector('.fd-scrollbar[fd-scrollbar]');
4943
+ const scrollTopPage = x1?.scrollTop;
4944
+ const scrollTopScrollbar = x2?.scrollTop;
4945
+ if (scrollTopPage && scrollTopPage > 0) {
4946
+ this._scrollTop = scrollTopPage;
4947
+ this._elDomScrollbar = x1;
4948
+ }
4949
+ else if (scrollTopScrollbar && scrollTopScrollbar > 0) {
4950
+ this._scrollTop = scrollTopScrollbar;
4951
+ this._elDomScrollbar = x2;
4952
+ }
4953
+ }
4954
+ }
4955
+ _restoreScrollPostion() {
4956
+ if (this._scrollTop && this._scrollTop > 0) {
4957
+ if (this._elDomScrollbar) {
4958
+ this._elDomScrollbar.scrollTop = this._scrollTop;
4959
+ }
4960
+ }
4961
+ }
4962
+ insert() {
4963
+ if (this._viewRef) {
4964
+ this._viewContainerRef.insert(this._viewRef);
4965
+ this._restoreScrollPostion();
4966
+ }
4967
+ else {
4968
+ this.addModules.next();
4969
+ }
4970
+ }
4971
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4972
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerService }); }
4973
+ }
4974
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerService, decorators: [{
4975
+ type: Injectable
4976
+ }] });
4977
+
4978
+ class HorizontalLayoutService {
4979
+ constructor() {
4980
+ this.controlFlexColumnSource = new BehaviorSubject({});
4981
+ this.displayTextFlexColumn$ = this.controlFlexColumnSource
4982
+ .asObservable()
4983
+ .pipe(map((controlFlexColumn) => Object.keys(controlFlexColumn).some((c) => controlFlexColumn[c])));
4984
+ }
4985
+ setFlexColumn(id, val) {
4986
+ const flexColumn = this.controlFlexColumnSource.getValue();
4987
+ flexColumn[id] = val;
4988
+ this.controlFlexColumnSource.next(flexColumn);
4989
+ }
4990
+ }
4991
+
4992
+ class LayoutService {
4993
+ constructor() {
4994
+ this.rendered = new BehaviorSubject(false);
4995
+ this.maxWidth = new BehaviorSubject(0);
4996
+ this.refreshLayoutSource = new Subject();
4997
+ this.horizontalSource = new Subject();
4998
+ this._listOfHorizontal = [];
4999
+ this.rootRendered$ = this.rendered.asObservable();
5000
+ this.maxWidth$ = this.maxWidth.asObservable();
5001
+ this.refreshLayout$ = this.refreshLayoutSource.asObservable();
5002
+ this.horizontal$ = this.horizontalSource.asObservable().pipe(distinctUntilChanged((a, b) => a === b));
5003
+ }
5004
+ setRendered(val) {
5005
+ this.rendered.next(val);
5006
+ }
5007
+ setMaxWidth(val) {
5008
+ if (this.maxWidth.value < val) {
5009
+ this.maxWidth.next(val);
5010
+ }
5011
+ }
5012
+ refreshLayout() {
5013
+ this.refreshLayoutSource.next();
5014
+ }
5015
+ addHorizontal(id) {
5016
+ this._listOfHorizontal = [...this._listOfHorizontal, id];
5017
+ this.horizontalSource.next(this._listOfHorizontal);
5018
+ }
5019
+ removeHorizontal(id) {
5020
+ this._listOfHorizontal = this._listOfHorizontal.filter((c) => c !== id);
5021
+ this.horizontalSource.next(this._listOfHorizontal);
5022
+ }
5023
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5024
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutService }); }
5025
+ }
5026
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutService, decorators: [{
5027
+ type: Injectable
5028
+ }], ctorParameters: () => [] });
5029
+
4874
5030
  class PortalPageResolver {
4875
5031
  /** Inserted by Angular inject() migration for backwards compatibility */
4876
5032
  constructor() {
@@ -5286,6 +5442,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
5286
5442
  type: Injectable
5287
5443
  }] });
5288
5444
 
5445
+ function reportRoutes(authGuard = false) {
5446
+ return {
5447
+ path: 'report/:id',
5448
+ canActivate: authGuard ? [AuthGuard] : [],
5449
+ loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-Bml7rVqA.mjs').then((m) => m.BarsaReportPageModule)
5450
+ };
5451
+ }
5452
+
5289
5453
  class PortalService {
5290
5454
  constructor() {
5291
5455
  this.offsetTop = 0;
@@ -5850,7 +6014,7 @@ class PortalService {
5850
6014
  ...cpage
5851
6015
  }
5852
6016
  },
5853
- children: cpage.ComponentName !== 'PortalPage' ? [formRoutes()] : []
6017
+ children: [reportRoutes(), formRoutes()]
5854
6018
  };
5855
6019
  children.push(newRoute);
5856
6020
  // Recursively process each MetaObjectModel inside MoDataList
@@ -6276,169 +6440,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
6276
6440
  }]
6277
6441
  }], ctorParameters: () => [] });
6278
6442
 
6279
- class ContainerService {
6280
- constructor() {
6281
- this.oldActiveSystem = null;
6282
- this.detachParent = true;
6283
- this.masterDetails = false;
6284
- this.state = 'attach';
6285
- this.isMobile = getDeviceIsMobile();
6286
- this.addModules = new Subject();
6287
- this._activatedRoute = inject(ActivatedRoute);
6288
- this._router = inject(Router);
6289
- this._portalService = inject(PortalService);
6290
- this._onDestroy$ = new Subject();
6291
- this._parentService = inject(ContainerService, { skipSelf: true, optional: true });
6292
- this._scrollTop = 0;
6293
- this._el = inject(ElementRef);
6294
- this.paramId$ = this._activatedRoute.paramMap.pipe(takeUntil$1(this._onDestroy$));
6295
- this.routeEvents$ = this._router.events.pipe(takeUntil$1(this._onDestroy$), filter$1((event) => event instanceof NavigationEnd && event instanceof RouterEvent));
6296
- }
6297
- /** Inserted by Angular inject() migration for backwards compatibility */
6298
- ngOnDestroy() {
6299
- this._onDestroy$.next();
6300
- this._onDestroy$.complete();
6301
- if (this._parentService && this.detachParent) {
6302
- this._parentService.insert();
6303
- }
6304
- }
6305
- setViewContainerRef(viewContainerRef) {
6306
- this._viewContainerRef = viewContainerRef;
6307
- this.state = 'attach';
6308
- if (this._parentService && this.detachParent) {
6309
- this._parentService.detach();
6310
- }
6311
- }
6312
- hideFormPage() {
6313
- const pageEl = this._el.nativeElement;
6314
- pageEl.classList.remove('absolute-page');
6315
- pageEl.classList.add('absolute-page-removed');
6316
- }
6317
- showFormPage() {
6318
- const pageEl = this._el.nativeElement;
6319
- pageEl.classList.remove('absolute-page-removed');
6320
- pageEl.classList.add('absolute-page');
6321
- }
6322
- navigate(navigation, isRelative, queryParams, state) {
6323
- if (this.masterDetails && !this.isMobile) {
6324
- this.navigateMasterDetails(navigation, isRelative, queryParams, state);
6325
- return;
6326
- }
6327
- this._router.navigate(navigation, {
6328
- relativeTo: isRelative ? this._activatedRoute : null,
6329
- queryParams,
6330
- preserveFragment: true,
6331
- state
6332
- });
6333
- }
6334
- navigateMasterDetails(navigation, isRelative, queryParams, data) {
6335
- if (this._portalService.deviceSize !== 's') {
6336
- navigation = [{ outlets: { details: [...navigation.filter((_c, index) => index > 0)] } }];
6337
- }
6338
- this._router.navigate(navigation, {
6339
- relativeTo: isRelative ? this._activatedRoute : null,
6340
- queryParams,
6341
- preserveFragment: true,
6342
- state: { ...data }
6343
- });
6344
- }
6345
- detach() {
6346
- this._setScrollPosition();
6347
- this.state = 'detach';
6348
- this._viewRef = this._viewContainerRef.detach();
6349
- }
6350
- _setScrollPosition() {
6351
- const elDom = this._el.nativeElement;
6352
- if (elDom) {
6353
- const x1 = elDom.querySelector('fd-dynamic-page-content');
6354
- const x2 = elDom.querySelector('.fd-scrollbar[fd-scrollbar]');
6355
- const scrollTopPage = x1?.scrollTop;
6356
- const scrollTopScrollbar = x2?.scrollTop;
6357
- if (scrollTopPage && scrollTopPage > 0) {
6358
- this._scrollTop = scrollTopPage;
6359
- this._elDomScrollbar = x1;
6360
- }
6361
- else if (scrollTopScrollbar && scrollTopScrollbar > 0) {
6362
- this._scrollTop = scrollTopScrollbar;
6363
- this._elDomScrollbar = x2;
6364
- }
6365
- }
6366
- }
6367
- _restoreScrollPostion() {
6368
- if (this._scrollTop && this._scrollTop > 0) {
6369
- if (this._elDomScrollbar) {
6370
- this._elDomScrollbar.scrollTop = this._scrollTop;
6371
- }
6372
- }
6373
- }
6374
- insert() {
6375
- if (this._viewRef) {
6376
- this._viewContainerRef.insert(this._viewRef);
6377
- this._restoreScrollPostion();
6378
- }
6379
- else {
6380
- this.addModules.next();
6381
- }
6382
- }
6383
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6384
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerService }); }
6385
- }
6386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerService, decorators: [{
6387
- type: Injectable
6388
- }], ctorParameters: () => [] });
6389
-
6390
- class HorizontalLayoutService {
6391
- constructor() {
6392
- this.controlFlexColumnSource = new BehaviorSubject({});
6393
- this.displayTextFlexColumn$ = this.controlFlexColumnSource
6394
- .asObservable()
6395
- .pipe(map((controlFlexColumn) => Object.keys(controlFlexColumn).some((c) => controlFlexColumn[c])));
6396
- }
6397
- setFlexColumn(id, val) {
6398
- const flexColumn = this.controlFlexColumnSource.getValue();
6399
- flexColumn[id] = val;
6400
- this.controlFlexColumnSource.next(flexColumn);
6401
- }
6402
- }
6403
-
6404
- class LayoutService {
6405
- constructor() {
6406
- this.rendered = new BehaviorSubject(false);
6407
- this.maxWidth = new BehaviorSubject(0);
6408
- this.refreshLayoutSource = new Subject();
6409
- this.horizontalSource = new Subject();
6410
- this._listOfHorizontal = [];
6411
- this.rootRendered$ = this.rendered.asObservable();
6412
- this.maxWidth$ = this.maxWidth.asObservable();
6413
- this.refreshLayout$ = this.refreshLayoutSource.asObservable();
6414
- this.horizontal$ = this.horizontalSource.asObservable().pipe(distinctUntilChanged((a, b) => a === b));
6415
- }
6416
- setRendered(val) {
6417
- this.rendered.next(val);
6418
- }
6419
- setMaxWidth(val) {
6420
- if (this.maxWidth.value < val) {
6421
- this.maxWidth.next(val);
6422
- }
6423
- }
6424
- refreshLayout() {
6425
- this.refreshLayoutSource.next();
6426
- }
6427
- addHorizontal(id) {
6428
- this._listOfHorizontal = [...this._listOfHorizontal, id];
6429
- this.horizontalSource.next(this._listOfHorizontal);
6430
- }
6431
- removeHorizontal(id) {
6432
- this._listOfHorizontal = this._listOfHorizontal.filter((c) => c !== id);
6433
- this.horizontalSource.next(this._listOfHorizontal);
6434
- }
6435
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6436
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutService }); }
6437
- }
6438
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutService, decorators: [{
6439
- type: Injectable
6440
- }], ctorParameters: () => [] });
6441
-
6442
6443
  class UiService {
6443
6444
  constructor() {
6444
6445
  this.tabSelected = new Subject();
@@ -8168,66 +8169,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8168
8169
  type: Injectable
8169
8170
  }], ctorParameters: () => [] });
8170
8171
 
8171
- class PushCheckService {
8172
- async checkPushReady() {
8173
- if (!this.baseSupport()) {
8174
- return 'مرورگر شما Push API را پشتیبانی نمی‌کند';
8175
- }
8176
- const iosCheck = this.iosSupport();
8177
- if (iosCheck !== true) {
8178
- return iosCheck;
8179
- }
8180
- if (Notification.permission === 'denied') {
8181
- return 'شما قبلاً اجازه نوتیفیکیشن را رد کرده‌اید. از تنظیمات مرورگر آن را فعال کنید';
8182
- }
8183
- const regs = await navigator.serviceWorker.getRegistrations();
8184
- if (!regs.length) {
8185
- return 'Service Worker ثبت نشده است';
8186
- }
8187
- return true;
8188
- }
8189
- getIosVersion() {
8190
- const ua = navigator.userAgent;
8191
- if (/iP(hone|od|ad)/.test(ua)) {
8192
- const v = ua.match(/OS (\d+)_/);
8193
- return v ? parseInt(v[1], 10) : null;
8194
- }
8195
- return null;
8196
- }
8197
- isIosStandalone() {
8198
- return 'standalone' in navigator && navigator.standalone === true;
8199
- }
8200
- isSafari() {
8201
- const ua = navigator.userAgent.toLowerCase();
8202
- return ua.includes('safari') && !ua.includes('chrome');
8203
- }
8204
- baseSupport() {
8205
- return 'Notification' in window && 'serviceWorker' in navigator && 'PushManager' in window;
8206
- }
8207
- iosSupport() {
8208
- const v = this.getIosVersion();
8209
- if (v && v < 16) {
8210
- return 'نسخه iOS کمتر از 16 است (Push پشتیبانی نمی‌شود)';
8211
- }
8212
- if (v && v < 16.4) {
8213
- return 'iOS باید حداقل نسخه 16.4 باشد تا Push فعال شود';
8214
- }
8215
- if (v && !this.isSafari()) {
8216
- return 'Push فقط در Safari iOS پشتیبانی می‌شود';
8217
- }
8218
- if (v && !this.isIosStandalone()) {
8219
- return 'برای فعال شدن Push، برنامه را با Add to Home Screen نصب کنید';
8220
- }
8221
- return true;
8222
- }
8223
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8224
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, providedIn: 'root' }); }
8225
- }
8226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, decorators: [{
8227
- type: Injectable,
8228
- args: [{ providedIn: 'root' }]
8229
- }] });
8230
-
8231
8172
  // src/app/services/idb.service.ts
8232
8173
  class IdbService {
8233
8174
  constructor() {
@@ -8347,7 +8288,9 @@ class PushNotificationService {
8347
8288
  }
8348
8289
  async unsubscribe() {
8349
8290
  try {
8350
- const sub = await lastValueFrom(this.swPush.subscription);
8291
+ const sub = await lastValueFrom(this.swPush.subscription.pipe(timeout(500), // اگر در 500ms چیزی نداد
8292
+ catchError$1(() => of(null)) // مقدار null برگردان
8293
+ ));
8351
8294
  if (!sub) {
8352
8295
  return;
8353
8296
  }
@@ -8438,7 +8381,6 @@ class ServiceWorkerCommuncationService {
8438
8381
  this._toastService = inject(TOAST_SERVICE, { optional: true });
8439
8382
  this._localStorage = inject(LocalStorageService);
8440
8383
  this._portalService = inject(PortalService);
8441
- this._pushCheckService = inject(PushCheckService);
8442
8384
  this._pushNotificatioService = inject(PushNotificationService);
8443
8385
  }
8444
8386
  get token2() {
@@ -8464,19 +8406,6 @@ class ServiceWorkerCommuncationService {
8464
8406
  BarsaApi.Ul.ApplicationCtrlr.on({
8465
8407
  UserLoggedout: (_, doReturn) => this._handlePushUnSubscription(doReturn)
8466
8408
  });
8467
- // automatic effect: update operationName based on subscription
8468
- effect(() => {
8469
- const sub = this._pushNotificatioService.push().isSubscribed;
8470
- // اینجا می‌تونی متغیر operationName یا UI رو اتوماتیک آپدیت کنی
8471
- console.log('Push subscription changed:', sub);
8472
- });
8473
- // automatic effect: show toast on errors
8474
- effect(() => {
8475
- const err = this._pushNotificatioService.push().errorMessage;
8476
- if (err) {
8477
- this.toast(err);
8478
- }
8479
- });
8480
8409
  }
8481
8410
  _subscribe() {
8482
8411
  this._portalService.userLoggedIn$.pipe().subscribe((isLoggedIn) => this._isLoggedIn(isLoggedIn));
@@ -8552,10 +8481,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8552
8481
  }] });
8553
8482
 
8554
8483
  class RoutingService {
8555
- /** Inserted by Angular inject() migration for backwards compatibility */
8556
8484
  constructor() {
8557
8485
  this.oldActiveSystem = null;
8558
- this._activatedRoute = inject(ActivatedRoute);
8559
8486
  this.router = inject(Router);
8560
8487
  this.isSidebar = false;
8561
8488
  this._Object = {
@@ -8591,11 +8518,84 @@ class RoutingService {
8591
8518
  }
8592
8519
  }
8593
8520
  };
8521
+ this.isFirstPage = true;
8522
+ this.masterDetails = false;
8523
+ this.isMobile = getDeviceIsMobile();
8524
+ this._activatedRoute = inject(ActivatedRoute);
8525
+ this._router = inject(Router);
8526
+ this._portalService = inject(PortalService);
8527
+ this._parentRoutingService = inject(RoutingService, { skipSelf: true, optional: true });
8528
+ this._onDestroy$ = new Subject();
8529
+ this._formDialogComponent = inject(FORM_DIALOG_COMPONENT, { optional: true });
8530
+ this._dialogService = inject(DIALOG_SERVICE, { optional: true });
8531
+ this._vcr = inject(ViewContainerRef);
8532
+ /* eslint-disable */
8533
+ this.ForceClose = () => {
8534
+ this.parentContainer.ForceCloseChild();
8535
+ };
8536
+ this.ShowFormPanelControl = (formpanelCtrlr) => {
8537
+ this.formpanelCtrlr = formpanelCtrlr;
8538
+ this._showFormPanel();
8539
+ };
8540
+ /* eslint-disable */
8541
+ this.ForceCloseChild = () => {
8542
+ this._router.navigate(['../'], { relativeTo: this._activatedRoute });
8543
+ };
8544
+ /* eslint-disable */
8545
+ this.RefreshFormPanelControl = (formpanelCtrlr) => {
8546
+ if (!this.formpanelCtrlr) {
8547
+ this.formpanelCtrlr = formpanelCtrlr;
8548
+ }
8549
+ else {
8550
+ formpanelCtrlr = this._portalService.formPanels[this.formpanelCtrlrId];
8551
+ }
8552
+ this._showFormPanel(true);
8553
+ };
8594
8554
  this.oldActiveSystem = BarsaApi.Bw.App.GetActiveSystem;
8555
+ this._activatedRoute.params.pipe(takeUntil$1(this._onDestroy$)).subscribe((_params) => {
8556
+ const state = this._router.getCurrentNavigation()?.extras.state;
8557
+ this.formpanelCtrlrId = state?.formPanelCtrlrId;
8558
+ });
8559
+ this.paramId$ = this._activatedRoute.paramMap.pipe(takeUntil$1(this._onDestroy$));
8560
+ this.routeEvents$ = this._router.events.pipe(takeUntil$1(this._onDestroy$), filter$1((event) => event instanceof NavigationEnd && event instanceof RouterEvent));
8595
8561
  BarsaApi.Bw.App.GetActiveSystem = () => this;
8562
+ this.parentContainer = BarsaApi.Bw.FormHandler;
8563
+ BarsaApi.Bw.FormHandler = this;
8564
+ this.oldNavigation = BarsaApi.Bw.Navigate;
8565
+ BarsaApi.Bw.Navigate = (navigation, isRelative, queryParams, data) => {
8566
+ this._parentRoutingService?.navigate(navigation, isRelative, queryParams, data);
8567
+ };
8596
8568
  }
8597
8569
  ngOnDestroy() {
8598
8570
  BarsaApi.Bw.App.GetActiveSystem = this.oldActiveSystem;
8571
+ BarsaApi.Bw.Navigate = this.oldNavigation;
8572
+ BarsaApi.Bw.FormHandler = this.parentContainer;
8573
+ }
8574
+ _showFormPanel(refreshOnly = false) {
8575
+ this._portalService.ShowFormPanelControl(this.formpanelCtrlr, this._router, this._activatedRoute, this._formDialogComponent, this.isFirstPage, this._vcr, refreshOnly);
8576
+ }
8577
+ navigate(navigation, isRelative, queryParams, state) {
8578
+ if (this.masterDetails && !this.isMobile) {
8579
+ this.navigateMasterDetails(navigation, isRelative, queryParams, state);
8580
+ return;
8581
+ }
8582
+ this._router.navigate(navigation, {
8583
+ relativeTo: isRelative ? this._activatedRoute : null,
8584
+ queryParams,
8585
+ preserveFragment: true,
8586
+ state
8587
+ });
8588
+ }
8589
+ navigateMasterDetails(navigation, isRelative, queryParams, data) {
8590
+ if (this._portalService.deviceSize !== 's') {
8591
+ navigation = [{ outlets: { details: [...navigation.filter((_c, index) => index > 0)] } }];
8592
+ }
8593
+ this._router.navigate(navigation, {
8594
+ relativeTo: isRelative ? this._activatedRoute : null,
8595
+ queryParams,
8596
+ preserveFragment: true,
8597
+ state: { ...data }
8598
+ });
8599
8599
  }
8600
8600
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RoutingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8601
8601
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RoutingService }); }
@@ -8694,6 +8694,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8694
8694
  args: [{ providedIn: 'root' }]
8695
8695
  }], ctorParameters: () => [] });
8696
8696
 
8697
+ class PushCheckService {
8698
+ async checkPushReady() {
8699
+ if (!this.baseSupport()) {
8700
+ return 'مرورگر شما Push API را پشتیبانی نمی‌کند';
8701
+ }
8702
+ const iosCheck = this.iosSupport();
8703
+ if (iosCheck !== true) {
8704
+ return iosCheck;
8705
+ }
8706
+ if (Notification.permission === 'denied') {
8707
+ return 'شما قبلاً اجازه نوتیفیکیشن را رد کرده‌اید. از تنظیمات مرورگر آن را فعال کنید';
8708
+ }
8709
+ const regs = await navigator.serviceWorker.getRegistrations();
8710
+ if (!regs.length) {
8711
+ return 'Service Worker ثبت نشده است';
8712
+ }
8713
+ return true;
8714
+ }
8715
+ getIosVersion() {
8716
+ const ua = navigator.userAgent;
8717
+ if (/iP(hone|od|ad)/.test(ua)) {
8718
+ const v = ua.match(/OS (\d+)_/);
8719
+ return v ? parseInt(v[1], 10) : null;
8720
+ }
8721
+ return null;
8722
+ }
8723
+ isIosStandalone() {
8724
+ return 'standalone' in navigator && navigator.standalone === true;
8725
+ }
8726
+ isSafari() {
8727
+ const ua = navigator.userAgent.toLowerCase();
8728
+ return ua.includes('safari') && !ua.includes('chrome');
8729
+ }
8730
+ baseSupport() {
8731
+ return 'Notification' in window && 'serviceWorker' in navigator && 'PushManager' in window;
8732
+ }
8733
+ iosSupport() {
8734
+ const v = this.getIosVersion();
8735
+ if (v && v < 16) {
8736
+ return 'نسخه iOS کمتر از 16 است (Push پشتیبانی نمی‌شود)';
8737
+ }
8738
+ if (v && v < 16.4) {
8739
+ return 'iOS باید حداقل نسخه 16.4 باشد تا Push فعال شود';
8740
+ }
8741
+ if (v && !this.isSafari()) {
8742
+ return 'Push فقط در Safari iOS پشتیبانی می‌شود';
8743
+ }
8744
+ if (v && !this.isIosStandalone()) {
8745
+ return 'برای فعال شدن Push، برنامه را با Add to Home Screen نصب کنید';
8746
+ }
8747
+ return true;
8748
+ }
8749
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8750
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, providedIn: 'root' }); }
8751
+ }
8752
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, decorators: [{
8753
+ type: Injectable,
8754
+ args: [{ providedIn: 'root' }]
8755
+ }] });
8756
+
8757
+ class CardViewService {
8758
+ constructor() {
8759
+ this._maxHeaderTitleHeight$ = new BehaviorSubject(0);
8760
+ this._ulvMainService = inject(UlvMainService);
8761
+ }
8762
+ get maxHeaderTitleHeight$() {
8763
+ return this._maxHeaderTitleHeight$.asObservable();
8764
+ }
8765
+ setHeaderHeight(height) {
8766
+ const currHeight = this._maxHeaderTitleHeight$.getValue();
8767
+ if (currHeight < height) {
8768
+ this._maxHeaderTitleHeight$.next(height);
8769
+ }
8770
+ }
8771
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8772
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardViewService }); }
8773
+ }
8774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardViewService, decorators: [{
8775
+ type: Injectable
8776
+ }] });
8777
+
8697
8778
  class FieldBaseComponent extends BaseComponent {
8698
8779
  get customFieldInfo() {
8699
8780
  return this.context.Setting.CustomFieldInfo;
@@ -9613,7 +9694,7 @@ class ContainerComponent extends BaseComponent {
9613
9694
  this._cdr = inject(ChangeDetectorRef);
9614
9695
  this._renderer2 = inject(Renderer2);
9615
9696
  this._dialogService = inject(DIALOG_SERVICE, { optional: true });
9616
- this._containerServiceParent = inject(ContainerService, { self: false, optional: true });
9697
+ this._parentContainerService = inject(ContainerService, { self: false, optional: true });
9617
9698
  this._containerService = inject(ContainerService, { self: true, optional: true });
9618
9699
  this._formDialogComponent = inject(FORM_DIALOG_COMPONENT, { optional: true });
9619
9700
  this.oldContainerContainer = this._barsaDialogService.containerComponent;
@@ -9630,20 +9711,12 @@ class ContainerComponent extends BaseComponent {
9630
9711
  return this.containerRef;
9631
9712
  }
9632
9713
  ngOnInit() {
9633
- this.parentContainer = BarsaApi.Bw.FormHandler;
9634
- BarsaApi.Bw.FormHandler = this;
9635
- this.oldNavigation = BarsaApi.Bw.Navigate;
9636
- BarsaApi.Bw.Navigate = (navigation, isRelative, queryParams, data) => {
9637
- this._containerServiceParent?.navigate(navigation, isRelative, queryParams, data);
9638
- };
9639
9714
  super.ngOnInit();
9640
9715
  this._containerService?.setViewContainerRef(this.containerRef);
9641
9716
  }
9642
9717
  ngOnDestroy() {
9643
- BarsaApi.Bw.FormHandler = this.parentContainer;
9644
9718
  super.ngOnDestroy();
9645
9719
  this._barsaDialogService.containerComponent = this.oldContainerContainer;
9646
- BarsaApi.Bw.Navigate = this.oldNavigation;
9647
9720
  }
9648
9721
  detach() {
9649
9722
  this._viewRef = this.containerRef.detach();
@@ -9680,6 +9753,8 @@ class PageBaseComponent extends ContainerComponent {
9680
9753
  this.hasRoute = true;
9681
9754
  this.fullscreen = true;
9682
9755
  this.componentsAddedToPage = false;
9756
+ this._parentRoutingService = inject(RoutingService, { skipSelf: true, optional: true });
9757
+ this._routingService = inject(RoutingService, { self: true, optional: true });
9683
9758
  }
9684
9759
  ngAfterViewInit() {
9685
9760
  super.ngAfterViewInit();
@@ -9740,8 +9815,8 @@ class PageBaseComponent extends ContainerComponent {
9740
9815
  controlUi.instance.settings = module.Component.Settings;
9741
9816
  controlUi.instance.activatedRoute = this._activatedRoute;
9742
9817
  let containerRef = this.containerRef;
9743
- if (module.ContainerRef && this[module.ContainerRef]) {
9744
- containerRef = this[module.ContainerRef];
9818
+ if (module.PlaceholderName && this[module.PlaceholderName]) {
9819
+ containerRef = this[module.PlaceholderName];
9745
9820
  } // توسط ماژول مشخص شده کامپوننت در کدام کانتینر پیج قرار گیرد
9746
9821
  if (containerRef) {
9747
9822
  containerRef.insert(controlUi.hostView);
@@ -11013,34 +11088,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
11013
11088
  class FormPageBaseComponent extends ContainerComponent {
11014
11089
  constructor() {
11015
11090
  super(...arguments);
11091
+ this._routingService = inject(RoutingService, { self: true, optional: true });
11016
11092
  this._containerServiceParent = inject(ContainerService, { skipSelf: true, optional: true });
11017
- /* eslint-disable */
11018
- this.ShowFormPanelControl = (formpanelCtrlr) => {
11019
- this._portalService.ShowFormPanelControl(formpanelCtrlr, this._router, this._activatedRoute, this._formDialogComponent, false, this._vcr);
11020
- };
11021
- /* eslint-disable */
11022
- this.RefreshFormPanelControl = () => {
11023
- const formpanelCtrlr = this._portalService.formPanels[this.formpanelCtrlrId];
11024
- this.parentContainer.RefreshFormPanelControl(formpanelCtrlr);
11025
- };
11026
- /* eslint-disable */
11027
- this.ForceCloseChild = () => {
11028
- this._router.navigate([{ outlets: { popup: null } }], {
11029
- relativeTo: this._activatedRoute
11030
- });
11031
- };
11032
- /* eslint-disable */
11033
- this.ForceClose = () => {
11034
- this.parentContainer.ForceCloseChild();
11035
- };
11036
11093
  }
11037
11094
  ngOnInit() {
11038
11095
  super.ngOnInit();
11096
+ this._routingService && (this._routingService.isFirstPage = false);
11039
11097
  this._activatedRoute.params.pipe(takeUntil(this._onDestroy$)).subscribe((params) => {
11040
11098
  const state = this._router.getCurrentNavigation()?.extras.state;
11041
11099
  this.prepareIds(state?.formPanelCtrlrId, params);
11042
11100
  });
11043
- this.hideAllPageContent();
11044
11101
  }
11045
11102
  ngAfterViewInit() {
11046
11103
  super.ngAfterViewInit();
@@ -11056,16 +11113,6 @@ class FormPageBaseComponent extends ContainerComponent {
11056
11113
  ngOnDestroy() {
11057
11114
  super.ngOnDestroy();
11058
11115
  this._portalService.formPanels[this.formpanelCtrlrId] = null;
11059
- this.removeLastHidePage();
11060
- }
11061
- _resize() {
11062
- this.hideAllPageContent();
11063
- }
11064
- hideAllPageContent() {
11065
- this._containerServiceParent?.hideFormPage();
11066
- }
11067
- removeLastHidePage() {
11068
- this._containerServiceParent?.showFormPage();
11069
11116
  }
11070
11117
  onFormClose() {
11071
11118
  if (this._activatedRoute.snapshot.params.isFirst &&
@@ -11085,12 +11132,6 @@ class FormPageBaseComponent extends ContainerComponent {
11085
11132
  replaceUrl: true
11086
11133
  });
11087
11134
  }
11088
- return;
11089
- const outlet = this._activatedRoute.outlet;
11090
- // let outlets = {};
11091
- // outlets[outlet] = null;
11092
- // if(this.location.getState())
11093
- this._router.navigate([{ outlets: { main: null } }]);
11094
11135
  }
11095
11136
  prepareIds(formpanelCtrlrId, params) {
11096
11137
  this.formpanelCtrlrId = formpanelCtrlrId || params.formPanelCtrlrId;
@@ -11105,7 +11146,7 @@ class FormPageBaseComponent extends ContainerComponent {
11105
11146
  this._cdr.detectChanges();
11106
11147
  }
11107
11148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FormPageBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FormPageBaseComponent, isStandalone: false, selector: "bnrc-form-page-base", inputs: { formPanelCtrlr: "formPanelCtrlr", ShowFormPanelControl: "ShowFormPanelControl", RefreshFormPanelControl: "RefreshFormPanelControl", ForceCloseChild: "ForceCloseChild", ForceClose: "ForceClose" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FormPageBaseComponent, isStandalone: false, selector: "bnrc-form-page-base", inputs: { formPanelCtrlr: "formPanelCtrlr" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11109
11150
  }
11110
11151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FormPageBaseComponent, decorators: [{
11111
11152
  type: Component,
@@ -11117,14 +11158,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
11117
11158
  }]
11118
11159
  }], propDecorators: { formPanelCtrlr: [{
11119
11160
  type: Input
11120
- }], ShowFormPanelControl: [{
11121
- type: Input
11122
- }], RefreshFormPanelControl: [{
11123
- type: Input
11124
- }], ForceCloseChild: [{
11125
- type: Input
11126
- }], ForceClose: [{
11127
- type: Input
11128
11161
  }] } });
11129
11162
 
11130
11163
  class FormComponent extends BaseComponent {
@@ -11146,6 +11179,7 @@ class FormComponent extends BaseComponent {
11146
11179
  this._activatedRoute = inject(ActivatedRoute);
11147
11180
  this._router = inject(Router);
11148
11181
  this._containerService = inject(ContainerService, { self: false, optional: true });
11182
+ this._routingService = inject(RoutingService, { skipSelf: true, optional: true });
11149
11183
  el.nativeElement.id = this.uniqueId = getUniqueId(4);
11150
11184
  }
11151
11185
  ngOnInit() {
@@ -11162,8 +11196,8 @@ class FormComponent extends BaseComponent {
11162
11196
  const currVal = JSON.stringify(params.currentValue);
11163
11197
  const prevVal = JSON.stringify(params.previousValue);
11164
11198
  if (currVal !== prevVal) {
11165
- this.vcr.clear();
11166
- this.appendForm(currVal);
11199
+ // this.vcr.clear();
11200
+ // this.appendForm(currVal);
11167
11201
  }
11168
11202
  }
11169
11203
  }
@@ -11227,9 +11261,9 @@ class FormComponent extends BaseComponent {
11227
11261
  formpanelCtrlr.UlvMainCtrlr = this.UlvMainCtrlr;
11228
11262
  formpanelCtrlr.Setting = formSetting;
11229
11263
  formpanelCtrlr.InlineEditInReport = this.inlineEditInReport;
11230
- if (this._containerService) {
11231
- this._containerService.FormPanelCtrlr = formpanelCtrlr;
11232
- formpanelCtrlr.Page = this._containerService;
11264
+ if (this._routingService) {
11265
+ this._routingService.FormPanelCtrlr = formpanelCtrlr;
11266
+ formpanelCtrlr.Page = this._routingService;
11233
11267
  }
11234
11268
  const nav = this._router.getCurrentNavigation();
11235
11269
  formpanelCtrlr.FormRequestParams.state = nav?.extras.state;
@@ -11434,7 +11468,7 @@ class FormPageComponent extends FormPageBaseComponent {
11434
11468
  super.ngOnInit();
11435
11469
  }
11436
11470
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FormPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11437
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FormPageComponent, isStandalone: false, selector: "bnrc-form-page", inputs: { formPanelCtrlr: "formPanelCtrlr" }, host: { properties: { "class.section": "this.sectionClass", "class.absolute-page": "this.absolutePageClass" } }, providers: [FormService, ContainerService], viewQueries: [{ propertyName: "_placeHolderTemplate", first: true, predicate: ["placeHolderTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
11471
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FormPageComponent, isStandalone: false, selector: "bnrc-form-page", inputs: { formPanelCtrlr: "formPanelCtrlr" }, host: { properties: { "class.section": "this.sectionClass", "class.absolute-page": "this.absolutePageClass" } }, providers: [FormService, RoutingService, ContainerService], viewQueries: [{ propertyName: "_placeHolderTemplate", first: true, predicate: ["placeHolderTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
11438
11472
  <ng-template #placeHolderTemplate>
11439
11473
  <bnrc-form
11440
11474
  [formPanelCtrl]="formPanelCtrlr"
@@ -11460,7 +11494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
11460
11494
  </ng-template>
11461
11495
  <ng-container #containerRef> </ng-container>
11462
11496
  <router-outlet></router-outlet>
11463
- `, providers: [FormService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;background:var(--sapBackgroundColor)}\n"] }]
11497
+ `, providers: [FormService, RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;background:var(--sapBackgroundColor)}\n"] }]
11464
11498
  }], propDecorators: { _placeHolderTemplate: [{
11465
11499
  type: ViewChild,
11466
11500
  args: ['placeHolderTemplate', { static: true }]
@@ -11665,8 +11699,8 @@ class EmptyPageComponent extends PageWithFormHandlerBaseComponent {
11665
11699
  const isModal = this.settings?.IsModal;
11666
11700
  const isRelativePage = this._activatedRoute.snapshot.data?.pageData?.Component?.Settings?.IsRelativePage;
11667
11701
  if (isRelativePage || isModal) {
11668
- if (this._containerServiceParent) {
11669
- this._containerServiceParent.detachParent = false;
11702
+ if (this._parentContainerService) {
11703
+ this._parentContainerService.detachParent = false;
11670
11704
  }
11671
11705
  else {
11672
11706
  this._log.error(nullOrUndefinedString('EmptyPageComponent=> _containerService'));
@@ -11685,7 +11719,7 @@ class EmptyPageComponent extends PageWithFormHandlerBaseComponent {
11685
11719
  }
11686
11720
  }
11687
11721
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EmptyPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: EmptyPageComponent, isStandalone: false, selector: "bnrc-empty-page", host: { properties: { "style.position": "this._position", "class.section": "this.sectionClass", "class.absolute-page": "this.absolutePageClass", "class.modal": "this.ismodal" } }, providers: [ContainerService], usesInheritance: true, ngImport: i0, template: `<ng-container #containerRef></ng-container>
11722
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: EmptyPageComponent, isStandalone: false, selector: "bnrc-empty-page", host: { properties: { "style.position": "this._position", "class.section": "this.sectionClass", "class.absolute-page": "this.absolutePageClass", "class.modal": "this.ismodal" } }, providers: [RoutingService, ContainerService], usesInheritance: true, ngImport: i0, template: `<ng-container #containerRef></ng-container>
11689
11723
  <router-outlet></router-outlet>
11690
11724
  <router-outlet name="dialog"></router-outlet>`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11691
11725
  }
@@ -11693,7 +11727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
11693
11727
  type: Component,
11694
11728
  args: [{ selector: 'bnrc-empty-page', template: `<ng-container #containerRef></ng-container>
11695
11729
  <router-outlet></router-outlet>
11696
- <router-outlet name="dialog"></router-outlet>`, providers: [ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block}\n"] }]
11730
+ <router-outlet name="dialog"></router-outlet>`, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block}\n"] }]
11697
11731
  }], propDecorators: { _position: [{
11698
11732
  type: HostBinding,
11699
11733
  args: ['style.position']
@@ -11720,8 +11754,8 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
11720
11754
  this.settings = BarsaApi.Common.Util.TryGetValue(this._activatedRoute, 'data._value.pageData.Component.Settings', null);
11721
11755
  const isModal = this.settings?.IsModal;
11722
11756
  if (isModal) {
11723
- if (this._containerServiceParent) {
11724
- this._containerServiceParent.detachParent = false;
11757
+ if (this._parentContainerService) {
11758
+ this._parentContainerService.detachParent = false;
11725
11759
  }
11726
11760
  else {
11727
11761
  this._log.error(nullOrUndefinedString('EmptyPageComponent=> _containerService'));
@@ -11730,7 +11764,7 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
11730
11764
  this.ismodal = true;
11731
11765
  }
11732
11766
  super.ngOnInit();
11733
- this._containerServiceParent && (this._containerServiceParent.masterDetails = true);
11767
+ this._routingService && (this._routingService.masterDetails = true);
11734
11768
  // if (!BarsaApi.LoginFormData.IsServiceDesk && !isModal) {
11735
11769
  // this._position = 'initial';
11736
11770
  // }
@@ -11739,7 +11773,7 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
11739
11773
  }
11740
11774
  }
11741
11775
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MasterDetailsPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11742
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MasterDetailsPageComponent, isStandalone: false, selector: "bnrc-master-details-page", host: { properties: { "style.position": "this._position", "class.section": "this.sectionClass", "class.absolute-page": "this.absolutePageClass", "class.modal": "this.ismodal" } }, providers: [ContainerService], usesInheritance: true, ngImport: i0, template: `
11776
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: MasterDetailsPageComponent, isStandalone: false, selector: "bnrc-master-details-page", host: { properties: { "style.position": "this._position", "class.section": "this.sectionClass", "class.absolute-page": "this.absolutePageClass", "class.modal": "this.ismodal" } }, providers: [RoutingService, ContainerService], usesInheritance: true, ngImport: i0, template: `
11743
11777
  <div class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row">
11744
11778
  <!-- لیست -->
11745
11779
  <div
@@ -11775,7 +11809,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
11775
11809
  </div>
11776
11810
  <router-outlet></router-outlet>
11777
11811
  <router-outlet name="dialog"></router-outlet>
11778
- `, providers: [ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block}\n"] }]
11812
+ `, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block}\n"] }]
11779
11813
  }], propDecorators: { _position: [{
11780
11814
  type: HostBinding,
11781
11815
  args: ['style.position']
@@ -11790,20 +11824,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
11790
11824
  args: ['class.modal']
11791
11825
  }] } });
11792
11826
 
11793
- class RedirectReportNavigatorCommandComponent extends BaseComponent {
11794
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RedirectReportNavigatorCommandComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11795
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: RedirectReportNavigatorCommandComponent, isStandalone: false, selector: "bnrc-redirect-report-navigator-command", usesInheritance: true, ngImport: i0, template: "", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11796
- }
11797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RedirectReportNavigatorCommandComponent, decorators: [{
11798
- type: Component,
11799
- args: [{ selector: 'bnrc-redirect-report-navigator-command', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "" }]
11800
- }] });
11801
-
11802
11827
  class PortalPageComponent extends PageWithFormHandlerBaseComponent {
11803
- constructor() {
11804
- super(...arguments);
11805
- this._routingService = inject(RoutingService);
11806
- }
11807
11828
  ngOnInit() {
11808
11829
  super.ngOnInit();
11809
11830
  this.addModulesToDom();
@@ -12107,7 +12128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12107
12128
 
12108
12129
  class DynamicItemComponent extends BaseDynamicComponent {
12109
12130
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: DynamicItemComponent, isStandalone: false, selector: "bnrc-dynamic-item-component", inputs: { mo: "mo", allColumns: "allColumns", moDataList: "moDataList", columns: "columns", column: "column", index: "index", last: "last", hideOpenIcon: "hideOpenIcon", deviceName: "deviceName", deviceSize: "deviceSize", rtl: "rtl", editMode: "editMode", setting: "setting", parameters: "parameters", contextMenuItems: "contextMenuItems", canView: "canView", showRowNumber: "showRowNumber", rowNumber: "rowNumber", formSetting: "formSetting", conditionalFormats: "conditionalFormats", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", isCheckList: "isCheckList", fields: "fields", isChecked: "isChecked", layout94$: "layout94$", inlineEditMode: "inlineEditMode", isNewInlineMo: "isNewInlineMo", allowInlineEdit: "allowInlineEdit", typeDefId: "typeDefId", rowIndicator: "rowIndicator", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr" }, usesInheritance: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: DynamicItemComponent, isStandalone: false, selector: "bnrc-dynamic-item-component", inputs: { mo: "mo", allColumns: "allColumns", moDataList: "moDataList", columns: "columns", column: "column", index: "index", last: "last", hideOpenIcon: "hideOpenIcon", deviceName: "deviceName", deviceSize: "deviceSize", rtl: "rtl", editMode: "editMode", setting: "setting", parameters: "parameters", contextMenuItems: "contextMenuItems", canView: "canView", showRowNumber: "showRowNumber", rowNumber: "rowNumber", formSetting: "formSetting", conditionalFormats: "conditionalFormats", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", isCheckList: "isCheckList", maxHeightHeader: "maxHeightHeader", fields: "fields", isChecked: "isChecked", layout94$: "layout94$", inlineEditMode: "inlineEditMode", isNewInlineMo: "isNewInlineMo", allowInlineEdit: "allowInlineEdit", typeDefId: "typeDefId", rowIndicator: "rowIndicator", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr" }, usesInheritance: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12111
12132
  }
12112
12133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicItemComponent, decorators: [{
12113
12134
  type: Component,
@@ -12158,6 +12179,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12158
12179
  type: Input
12159
12180
  }], isCheckList: [{
12160
12181
  type: Input
12182
+ }], maxHeightHeader: [{
12183
+ type: Input
12161
12184
  }], fields: [{
12162
12185
  type: Input
12163
12186
  }], isChecked: [{
@@ -12346,7 +12369,7 @@ class BaseViewContentPropsComponent extends BaseViewPropsComponent {
12346
12369
  this.actionListClick = new EventEmitter();
12347
12370
  }
12348
12371
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewContentPropsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12349
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewContentPropsComponent, isStandalone: false, selector: "bnrc-base-view-content-props", inputs: { moDataList: "moDataList", setting: "setting" }, outputs: { actionListClick: "actionListClick" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12372
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewContentPropsComponent, isStandalone: false, selector: "bnrc-base-view-content-props", inputs: { moDataList: "moDataList", maxHeightHeader: "maxHeightHeader", setting: "setting" }, outputs: { actionListClick: "actionListClick" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12350
12373
  }
12351
12374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewContentPropsComponent, decorators: [{
12352
12375
  type: Component,
@@ -12358,6 +12381,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12358
12381
  }]
12359
12382
  }], propDecorators: { moDataList: [{
12360
12383
  type: Input
12384
+ }], maxHeightHeader: [{
12385
+ type: Input
12361
12386
  }], setting: [{
12362
12387
  type: Input
12363
12388
  }], actionListClick: [{
@@ -12803,7 +12828,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
12803
12828
  });
12804
12829
  }
12805
12830
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewItemPropsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12806
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewItemPropsComponent, isStandalone: false, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", isslider: "isslider", attachmentViewType: "attachmentViewType", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12831
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewItemPropsComponent, isStandalone: false, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", isslider: "isslider", attachmentViewType: "attachmentViewType", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", maxHeightHeader: "maxHeightHeader", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12807
12832
  }
12808
12833
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
12809
12834
  type: Component,
@@ -12882,6 +12907,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12882
12907
  type: Input
12883
12908
  }], rowIndicatorColor: [{
12884
12909
  type: Input
12910
+ }], maxHeightHeader: [{
12911
+ type: Input
12885
12912
  }], UlvMainCtrlr: [{
12886
12913
  type: Input
12887
12914
  }], fieldDict: [{
@@ -12907,9 +12934,26 @@ class BaseItemContentPropsComponent extends BaseComponent {
12907
12934
  this._cdr = inject(ChangeDetectorRef);
12908
12935
  this._el = inject(ElementRef);
12909
12936
  this._renderer2 = inject(Renderer2);
12937
+ this._ulvMainService = inject(UlvMainService);
12938
+ }
12939
+ ngOnChanges(changes) {
12940
+ super.ngOnChanges(changes);
12941
+ let detectChanges = false;
12942
+ Object.keys(changes).forEach((key) => {
12943
+ if (!changes[key].firstChange) {
12944
+ this[key] = changes[key].currentValue;
12945
+ detectChanges = true;
12946
+ }
12947
+ });
12948
+ if (detectChanges) {
12949
+ this.detectChanges();
12950
+ }
12951
+ }
12952
+ detectChanges() {
12953
+ this._cdr.detectChanges();
12910
12954
  }
12911
12955
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseItemContentPropsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12912
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseItemContentPropsComponent, isStandalone: false, selector: "bnrc-base-item-content-props", inputs: { mo: "mo", allColumns: "allColumns", column: "column", index: "index", styleIndex: "styleIndex", deviceName: "deviceName", deviceSize: "deviceSize", rtl: "rtl", editMode: "editMode", setting: "setting", parameters: "parameters", contextMenuItems: "contextMenuItems", canView: "canView", conditionalFormats: "conditionalFormats", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", isCheckList: "isCheckList", fields: "fields", isChecked: "isChecked", hideOpenIcon: "hideOpenIcon", layout94$: "layout94$", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", isNewInlineMo: "isNewInlineMo", formSetting: "formSetting", typeDefId: "typeDefId", UlvMainCtrlr: "UlvMainCtrlr" }, outputs: { events: "events" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12956
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseItemContentPropsComponent, isStandalone: false, selector: "bnrc-base-item-content-props", inputs: { mo: "mo", allColumns: "allColumns", column: "column", index: "index", styleIndex: "styleIndex", deviceName: "deviceName", deviceSize: "deviceSize", rtl: "rtl", editMode: "editMode", setting: "setting", parameters: "parameters", contextMenuItems: "contextMenuItems", canView: "canView", conditionalFormats: "conditionalFormats", disableOverflowContextMenu: "disableOverflowContextMenu", navigationArrow: "navigationArrow", isCheckList: "isCheckList", fields: "fields", isChecked: "isChecked", hideOpenIcon: "hideOpenIcon", layout94$: "layout94$", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", isNewInlineMo: "isNewInlineMo", formSetting: "formSetting", typeDefId: "typeDefId", maxHeightHeader: "maxHeightHeader", UlvMainCtrlr: "UlvMainCtrlr" }, outputs: { events: "events" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12913
12957
  }
12914
12958
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseItemContentPropsComponent, decorators: [{
12915
12959
  type: Component,
@@ -12973,6 +13017,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12973
13017
  type: Input
12974
13018
  }], typeDefId: [{
12975
13019
  type: Input
13020
+ }], maxHeightHeader: [{
13021
+ type: Input
12976
13022
  }], UlvMainCtrlr: [{
12977
13023
  type: Input
12978
13024
  }] } });
@@ -13326,6 +13372,7 @@ class RootPortalComponent extends PageBaseComponent {
13326
13372
  }
13327
13373
  ngOnInit() {
13328
13374
  super.ngOnInit();
13375
+ this.addModulesToDom();
13329
13376
  this.inLocalMode = isInLocalMode();
13330
13377
  this._portalService.rtl$.subscribe((c) => {
13331
13378
  this._dir = c ? 'rtl' : 'ltr';
@@ -13402,7 +13449,7 @@ class RootPortalComponent extends PageBaseComponent {
13402
13449
  }
13403
13450
  }
13404
13451
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RootPortalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13405
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: RootPortalComponent, isStandalone: false, selector: "bnrc-root-portal", host: { properties: { "attr.dir": "this._dir", "attr.devicesize": "this._deviceSize" } }, providers: [ContainerService], viewQueries: [{ propertyName: "sectionRef", first: true, predicate: ["sectionRef"], descendants: true }, { propertyName: "footerRefVcr", first: true, predicate: ["footerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: `
13452
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: RootPortalComponent, isStandalone: false, selector: "bnrc-root-portal", host: { properties: { "attr.dir": "this._dir", "attr.devicesize": "this._deviceSize" } }, viewQueries: [{ propertyName: "sectionRef", first: true, predicate: ["sectionRef"], descendants: true }, { propertyName: "footerRefVcr", first: true, predicate: ["footerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: `
13406
13453
  <div
13407
13454
  class="tw-hidden grid-cols-0 tw-grid-cols-1 tw-grid-cols-2 tw-grid-cols-3 tw-grid-cols-4 tw-grid-cols-5
13408
13455
  tw-grid-cols-6 tw-grid-cols-7 tw-grid-cols-8 tw-grid-cols-9 tw-grid-cols-10 tw-grid-cols-11 tw-grid-cols-12"
@@ -13457,7 +13504,7 @@ class RootPortalComponent extends PageBaseComponent {
13457
13504
  </div>
13458
13505
  </div>
13459
13506
  }
13460
- <section loadExternalFiles class="section" id="mainpage" #sectionRef>
13507
+ <section loadExternalFiles class="tw-invisible section" id="mainpage" #sectionRef>
13461
13508
  <div #containerRef></div>
13462
13509
  </section>
13463
13510
  <div class="page-wrapper">
@@ -13530,7 +13577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
13530
13577
  </div>
13531
13578
  </div>
13532
13579
  }
13533
- <section loadExternalFiles class="section" id="mainpage" #sectionRef>
13580
+ <section loadExternalFiles class="tw-invisible section" id="mainpage" #sectionRef>
13534
13581
  <div #containerRef></div>
13535
13582
  </section>
13536
13583
  <div class="page-wrapper">
@@ -13544,7 +13591,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
13544
13591
  <bnrc-push-banner></bnrc-push-banner>
13545
13592
  `,
13546
13593
  changeDetection: ChangeDetectionStrategy.OnPush,
13547
- providers: [ContainerService],
13548
13594
  standalone: false
13549
13595
  }]
13550
13596
  }], propDecorators: { sectionRef: [{
@@ -16445,6 +16491,102 @@ var barsaSapUiFormPage_module = /*#__PURE__*/Object.freeze({
16445
16491
  BarsaSapUiFormPageModule: BarsaSapUiFormPageModule
16446
16492
  });
16447
16493
 
16494
+ class ReportNavigatorComponent extends BaseComponent {
16495
+ /** Inserted by Angular inject() migration for backwards compatibility */
16496
+ constructor() {
16497
+ super();
16498
+ this.minheight = '100svh';
16499
+ this._activatedRoute = inject(ActivatedRoute);
16500
+ this._portalService = inject(PortalService);
16501
+ this._applicationCtrlService = inject(ApplicationCtrlrService);
16502
+ this._injector = inject(Injector);
16503
+ this._cdr = inject(ChangeDetectorRef);
16504
+ this._loadingSource = new BehaviorSubject(false);
16505
+ this.loading$ = this._loadingSource.asObservable().pipe(takeUntil(this._onDestroy$), debounceTime(200));
16506
+ }
16507
+ ngOnInit() {
16508
+ super.ngOnInit();
16509
+ this._activatedRoute.params
16510
+ .pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => ({
16511
+ Id: params.id.split('__')[0],
16512
+ ReportId: params.id.split('__').length > 2 ? params.id.split('__')[2] : '',
16513
+ ReportId2: params.id.split('__').length > 1 ? params.id.split('__')[1] : '',
16514
+ isReportPage: params.id.split('__').length > 3 ? params.id.split('__')[3] : null
16515
+ })), tap((c) => (c.isReportPage ? (this.minheight = 'auto') : '100vh')), tap((c) => (c.ReportId = !c.ReportId ? c.ReportId2 : c.ReportId)), tap((_c) => this.containerRef.clear()), tap((navItem) => this._applicationCtrlService.selectNavGroupItem(navItem.Id)), tap((navItem) => this._applicationCtrlService.selectedReportId(navItem.ReportId || navItem.ReportId2)), switchMap((navItem) => this._portalService
16516
+ .renderUlvMainUi(navItem, this.containerRef, this._injector, navItem.isReportPage ? false : true)
16517
+ .pipe(catchError((_err) =>
16518
+ // this._location.back();
16519
+ // return throwError(() => new Error(err));
16520
+ of(true)))), tap((ulv) => this._setActiveReport(ulv)), finalize(() => {
16521
+ this._setLoading(false);
16522
+ }))
16523
+ .subscribe(() => {
16524
+ this._setLoading(false);
16525
+ });
16526
+ }
16527
+ ngOnDestroy() {
16528
+ super.ngOnDestroy();
16529
+ // this._applicationCtrlService.selectNavGroupItem('');
16530
+ this._setActiveReport(null);
16531
+ }
16532
+ _setLoading(val) {
16533
+ this._loadingSource.next(val);
16534
+ this._cdr.detectChanges();
16535
+ }
16536
+ _setActiveReport(ulv) {
16537
+ BarsaApi.Bw.App.GetActiveReport = () => {
16538
+ if (ulv === null) {
16539
+ return ulv;
16540
+ }
16541
+ return BarsaApi.Bw._wrap(ulv);
16542
+ };
16543
+ }
16544
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportNavigatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16545
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ReportNavigatorComponent, isStandalone: false, selector: "bnrc-report-navigator", host: { properties: { "style.min-height": "this.minheight" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `<ng-container #containerRef></ng-container>`, isInline: true, styles: [":host{display:block;width:100%;background:var(--sapBaseColor)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16546
+ }
16547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportNavigatorComponent, decorators: [{
16548
+ type: Component,
16549
+ args: [{ selector: 'bnrc-report-navigator', template: `<ng-container #containerRef></ng-container>`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;width:100%;background:var(--sapBaseColor)}\n"] }]
16550
+ }], ctorParameters: () => [], propDecorators: { containerRef: [{
16551
+ type: ViewChild,
16552
+ args: ['containerRef', { static: true, read: ViewContainerRef }]
16553
+ }], minheight: [{
16554
+ type: HostBinding,
16555
+ args: ['style.min-height']
16556
+ }] } });
16557
+
16558
+ class ReportEmptyPageComponent extends PageWithFormHandlerBaseComponent {
16559
+ constructor() {
16560
+ super(...arguments);
16561
+ this._injecotr = inject(Injector);
16562
+ }
16563
+ ngOnInit() {
16564
+ this.containerRef.insert(this.blockTemplate.createEmbeddedView(this, this._injecotr));
16565
+ super.ngOnInit();
16566
+ }
16567
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportEmptyPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16568
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ReportEmptyPageComponent, isStandalone: false, selector: "bnrc-report-empty-page", providers: [RoutingService, ContainerService], viewQueries: [{ propertyName: "blockTemplate", first: true, predicate: ["block"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
16569
+ <ng-template #block>
16570
+ <bnrc-report-navigator></bnrc-report-navigator>
16571
+ </ng-template>
16572
+ <ng-container #containerRef></ng-container>
16573
+ <router-outlet></router-outlet>
16574
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ReportNavigatorComponent, selector: "bnrc-report-navigator" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16575
+ }
16576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportEmptyPageComponent, decorators: [{
16577
+ type: Component,
16578
+ args: [{ selector: 'bnrc-report-empty-page', template: `
16579
+ <ng-template #block>
16580
+ <bnrc-report-navigator></bnrc-report-navigator>
16581
+ </ng-template>
16582
+ <ng-container #containerRef></ng-container>
16583
+ <router-outlet></router-outlet>
16584
+ `, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block}\n"] }]
16585
+ }], propDecorators: { blockTemplate: [{
16586
+ type: ViewChild,
16587
+ args: ['block', { static: true }]
16588
+ }] } });
16589
+
16448
16590
  class BaseController {
16449
16591
  /**
16450
16592
  *
@@ -16533,35 +16675,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
16533
16675
  args: ['class.mobile']
16534
16676
  }] } });
16535
16677
 
16536
- class CustomRouteReuseStategy {
16537
- constructor() {
16538
- this.handlers = {};
16539
- }
16678
+ // دیکشنری برای نگهداری کامپوننت‌های Detach شده
16679
+ const routeStorage = {};
16680
+ const REUSE_PROPERTY = 'ReuseRoute';
16681
+ class CustomRouteReuseStrategy {
16682
+ // تصمیم می‌گیرد که آیا یک روَت باید Detach و ذخیره شود یا نه.
16683
+ // ما فقط روَت‌هایی را که در data مشخص شده‌اند، Detach می‌کنیم.
16540
16684
  shouldDetach(route) {
16541
- return route.data.shouldReuse || false;
16685
+ // برای روَت‌های اصلی که می‌خواهید حفظ شوند
16686
+ const isReuse = !!BarsaApi.Common.Util.TryGetValue(route, `data.pageData.${REUSE_PROPERTY}`);
16687
+ return isReuse;
16542
16688
  }
16689
+ // کامپوننت Detach شده را ذخیره می‌کند.
16543
16690
  store(route, handle) {
16544
- if (route.data.shouldReuse && route?.routeConfig?.path) {
16545
- this.handlers[route.routeConfig.path] = handle;
16691
+ const isReuse = !!BarsaApi.Common.Util.TryGetValue(route, `data.pageData.${REUSE_PROPERTY}`);
16692
+ if (route.routeConfig && isReuse) {
16693
+ const keyPath = this._getKeyOfPath(route);
16694
+ routeStorage[keyPath] = handle;
16546
16695
  }
16547
16696
  }
16697
+ // تصمیم می‌گیرد که آیا کامپوننت ذخیره شده باید بازیابی (Attach) شود یا نه.
16548
16698
  shouldAttach(route) {
16549
- if (route.routeConfig?.path) {
16550
- return !!this.handlers[route.routeConfig.path];
16551
- }
16552
- // return !!route.routeConfig && !!this.handlers[route.routeConfig.path];
16553
- return false;
16699
+ // اگر روَت در حافظه ذخیره شده و قرار بوده حفظ شود
16700
+ const keyPath = this._getKeyOfPath(route);
16701
+ return !!route.routeConfig && !!routeStorage[keyPath];
16554
16702
  }
16703
+ // کامپوننت ذخیره شده را بازیابی می‌کند.
16555
16704
  retrieve(route) {
16556
- if (!route.routeConfig?.path) {
16705
+ const isReuse = !!BarsaApi.Common.Util.TryGetValue(route, `data.pageData.${REUSE_PROPERTY}`);
16706
+ if (!route.routeConfig || !isReuse) {
16557
16707
  return null;
16558
16708
  }
16559
- return this.handlers[route.routeConfig.path];
16709
+ const keyPath = this._getKeyOfPath(route);
16710
+ return routeStorage[keyPath] || null;
16560
16711
  }
16561
- shouldReuseRoute(future
16562
- // curr: ActivatedRouteSnapshot
16563
- ) {
16564
- return future.data.shouldReuse || false;
16712
+ // مهم‌ترین بخش: تصمیم می‌گیرد که آیا روَت فعلی باید برای روَت آینده بازاستفاده شود یا نه.
16713
+ // اگر از یک روَت به روَت دیگری برویم (مثل 'Page1' به 'Page2')، این باید 'false' باشد تا بتواند Detach شود.
16714
+ // اما اگر پارامترها و Query Params یکسان باشند، شاید بخواهید 'true' باشد.
16715
+ // برای حالت شما (نویگیشن بین روَت‌های اصلی)، معمولاً 'false' است مگر اینکه روَت‌ها کاملاً یکسان باشند.
16716
+ shouldReuseRoute(future, curr) {
16717
+ // این کار باعث می‌شود روَت‌های خواهر (sibling) به عنوان روَت‌های جدید در نظر گرفته شوند
16718
+ // تا بتوانند Detach و Attach شوند.
16719
+ return future.routeConfig === curr.routeConfig;
16720
+ }
16721
+ _getKeyOfPath(route) {
16722
+ const x = BarsaApi.Common.Util.TryGetValue(route, `data.pageData.ParentRoute`);
16723
+ const y = BarsaApi.Common.Util.TryGetValue(route, `data.pageData.Route`);
16724
+ const keyPath = `${x}${y}`;
16725
+ return keyPath;
16565
16726
  }
16566
16727
  }
16567
16728
 
@@ -16572,11 +16733,11 @@ class RootPageComponent extends BaseComponent {
16572
16733
  this.viewContainerRef = inject(ViewContainerRef);
16573
16734
  }
16574
16735
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RootPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16575
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: RootPageComponent, isStandalone: false, selector: "bnrc-root-page", host: { properties: { "class.page-content": "this._pageContent" } }, usesInheritance: true, ngImport: i0, template: "<router-outlet></router-outlet>\r\n<router-outlet name=\"main\"></router-outlet>\r\n", styles: [":host{position:relative;display:block}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16736
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: RootPageComponent, isStandalone: false, selector: "bnrc-root-page", host: { properties: { "class.page-content": "this._pageContent" } }, providers: [RoutingService], usesInheritance: true, ngImport: i0, template: `<router-outlet></router-outlet><router-outlet name="main"></router-outlet>`, isInline: true, styles: [":host{position:relative;display:block}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16576
16737
  }
16577
16738
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RootPageComponent, decorators: [{
16578
16739
  type: Component,
16579
- args: [{ selector: 'bnrc-root-page', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<router-outlet></router-outlet>\r\n<router-outlet name=\"main\"></router-outlet>\r\n", styles: [":host{position:relative;display:block}\n"] }]
16740
+ args: [{ selector: 'bnrc-root-page', template: `<router-outlet></router-outlet><router-outlet name="main"></router-outlet>`, changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, styles: [":host{position:relative;display:block}\n"] }]
16580
16741
  }], propDecorators: { _pageContent: [{
16581
16742
  type: HostBinding,
16582
16743
  args: ['class.page-content']
@@ -17047,7 +17208,6 @@ const components = [
17047
17208
  ModalRootComponent,
17048
17209
  PortalPageComponent,
17049
17210
  PortalPageSidebarComponent,
17050
- RedirectReportNavigatorCommandComponent,
17051
17211
  EmptyPageWithRouterAndRouterOutletComponent,
17052
17212
  DynamicItemComponent,
17053
17213
  DynamicFormComponent,
@@ -17055,13 +17215,15 @@ const components = [
17055
17215
  DynamicFormToolbaritemComponent,
17056
17216
  DynamicLayoutComponent,
17057
17217
  EmptyPageComponent,
17218
+ ReportEmptyPageComponent,
17058
17219
  MasterDetailsPageComponent,
17059
17220
  FormPageComponent,
17060
17221
  FormFieldReportPageComponent,
17061
17222
  ButtonLoadingComponent,
17062
17223
  UnlimitSessionComponent,
17063
17224
  DynamicTileGroupComponent,
17064
- PushBannerComponent
17225
+ PushBannerComponent,
17226
+ ReportNavigatorComponent
17065
17227
  ];
17066
17228
  const directives = [
17067
17229
  PlaceHolderDirective,
@@ -17292,6 +17454,10 @@ class BarsaNovinRayCoreModule extends BaseModule {
17292
17454
  })(inject(NotificationService));
17293
17455
  return initializerFn();
17294
17456
  }),
17457
+ {
17458
+ provide: RouteReuseStrategy,
17459
+ useClass: CustomRouteReuseStrategy
17460
+ },
17295
17461
  ...pipes,
17296
17462
  ...services
17297
17463
  ]
@@ -17308,7 +17474,6 @@ class BarsaNovinRayCoreModule extends BaseModule {
17308
17474
  ModalRootComponent,
17309
17475
  PortalPageComponent,
17310
17476
  PortalPageSidebarComponent,
17311
- RedirectReportNavigatorCommandComponent,
17312
17477
  EmptyPageWithRouterAndRouterOutletComponent,
17313
17478
  DynamicItemComponent,
17314
17479
  DynamicFormComponent,
@@ -17316,13 +17481,15 @@ class BarsaNovinRayCoreModule extends BaseModule {
17316
17481
  DynamicFormToolbaritemComponent,
17317
17482
  DynamicLayoutComponent,
17318
17483
  EmptyPageComponent,
17484
+ ReportEmptyPageComponent,
17319
17485
  MasterDetailsPageComponent,
17320
17486
  FormPageComponent,
17321
17487
  FormFieldReportPageComponent,
17322
17488
  ButtonLoadingComponent,
17323
17489
  UnlimitSessionComponent,
17324
17490
  DynamicTileGroupComponent,
17325
- PushBannerComponent, NumeralPipe,
17491
+ PushBannerComponent,
17492
+ ReportNavigatorComponent, NumeralPipe,
17326
17493
  CanUploadFilePipe,
17327
17494
  RemoveNewlinePipe,
17328
17495
  ConvertToStylePipe,
@@ -17445,7 +17612,6 @@ class BarsaNovinRayCoreModule extends BaseModule {
17445
17612
  ModalRootComponent,
17446
17613
  PortalPageComponent,
17447
17614
  PortalPageSidebarComponent,
17448
- RedirectReportNavigatorCommandComponent,
17449
17615
  EmptyPageWithRouterAndRouterOutletComponent,
17450
17616
  DynamicItemComponent,
17451
17617
  DynamicFormComponent,
@@ -17453,13 +17619,15 @@ class BarsaNovinRayCoreModule extends BaseModule {
17453
17619
  DynamicFormToolbaritemComponent,
17454
17620
  DynamicLayoutComponent,
17455
17621
  EmptyPageComponent,
17622
+ ReportEmptyPageComponent,
17456
17623
  MasterDetailsPageComponent,
17457
17624
  FormPageComponent,
17458
17625
  FormFieldReportPageComponent,
17459
17626
  ButtonLoadingComponent,
17460
17627
  UnlimitSessionComponent,
17461
17628
  DynamicTileGroupComponent,
17462
- PushBannerComponent, NumeralPipe,
17629
+ PushBannerComponent,
17630
+ ReportNavigatorComponent, NumeralPipe,
17463
17631
  CanUploadFilePipe,
17464
17632
  RemoveNewlinePipe,
17465
17633
  ConvertToStylePipe,
@@ -17597,5 +17765,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
17597
17765
  * Generated bundle index. Do not edit.
17598
17766
  */
17599
17767
 
17600
- export { APP_VERSION, AbsoluteDivBodyDirective, AddDynamicFormStyles, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, ApplicationCtrlrService, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaReadonlyDirective, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, CardMediaSizePipe, ChangeLayoutInfoCustomUi, ChunkArrayPipe, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValueDirective, ColumnValueOfParametersPipe, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicDarkColorPipe, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicRootVariableDirective, DynamicStyleDirective, DynamicTileGroupComponent, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterInlineActionListPipe, 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, GetAllHorizontalFromLayout94, GetDefaultMoObjectInfo, GetImgTags, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, GroupByService, HeaderFacetValuePipe, HideAcceptCancelButtonsPipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, HorizontalResponsiveDirective, IconControlInfoModel, IdbService, ImageLazyDirective, ImageMimeType, ImagetoPrint, InMemoryStorageService, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsDarkMode, IsExpandedNodePipe, IsImagePipe, ItemsRendererDirective, LabelStarTrimPipe, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutMainContentService, LayoutPanelBaseComponent, LayoutService, LeafletLongPressDirective, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, LoginSettingsResolver, MapToChatMessagePipe, MasterDetailsPageComponent, MeasureFormTitleWidthDirective, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoForReportModelBase, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, OverflowTextDirective, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PrintFilesDirective, PrintImage, PromptUpdateService, PushBannerComponent, PushCheckService, PushNotificationService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveDynamicFormStyles, RemoveNewlinePipe, RenderUlvDirective, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ResizeHandlerDirective, ResizeObserverDirective, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SafeBottomDirective, SanitizeTextPipe, SaveImageDirective, SaveImageToFile, SaveScrollPositionService, ScrollPersistDirective, ScrollToSelectedDirective, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, ShellbarHeightService, ShortcutHandlerDirective, ShortcutRegisterDirective, SimplebarDirective, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, SplideSliderDirective, SplitPipe, StopPropagationDirective, StringControlInfoModel, StringToNumberPipe, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, TabpageService, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, ToolbarSettingsPipe, TooltipDirective, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UnlimitSessionComponent, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WebOtpDirective, WordMimeType, WorfkflowwChoiceCommandDirective, addCssVariableToRoot, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, flattenTree, forbiddenValidator, formRoutes, formatBytes, fromEntries, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFocusableTagNames, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, measureText2, measureTextBy, mobile_regex, nullOrUndefinedString, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, validateAllFormFields };
17768
+ export { APP_VERSION, AbsoluteDivBodyDirective, AddDynamicFormStyles, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, ApplicationCtrlrService, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaReadonlyDirective, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, CardMediaSizePipe, CardViewService, ChangeLayoutInfoCustomUi, ChunkArrayPipe, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValueDirective, ColumnValueOfParametersPipe, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStrategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicDarkColorPipe, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicRootVariableDirective, DynamicStyleDirective, DynamicTileGroupComponent, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterInlineActionListPipe, 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, GetAllHorizontalFromLayout94, GetDefaultMoObjectInfo, GetImgTags, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, GroupByService, HeaderFacetValuePipe, HideAcceptCancelButtonsPipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, HorizontalResponsiveDirective, IconControlInfoModel, IdbService, ImageLazyDirective, ImageMimeType, ImagetoPrint, InMemoryStorageService, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsDarkMode, IsExpandedNodePipe, IsImagePipe, ItemsRendererDirective, LabelStarTrimPipe, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutMainContentService, LayoutPanelBaseComponent, LayoutService, LeafletLongPressDirective, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, LoginSettingsResolver, MapToChatMessagePipe, MasterDetailsPageComponent, MeasureFormTitleWidthDirective, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoForReportModelBase, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, OverflowTextDirective, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PrintFilesDirective, PrintImage, PromptUpdateService, PushBannerComponent, PushCheckService, PushNotificationService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveDynamicFormStyles, RemoveNewlinePipe, RenderUlvDirective, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportEmptyPageComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportNavigatorComponent, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ResizeHandlerDirective, ResizeObserverDirective, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SafeBottomDirective, SanitizeTextPipe, SaveImageDirective, SaveImageToFile, SaveScrollPositionService, ScrollPersistDirective, ScrollToSelectedDirective, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, ShellbarHeightService, ShortcutHandlerDirective, ShortcutRegisterDirective, SimplebarDirective, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, SplideSliderDirective, SplitPipe, StopPropagationDirective, StringControlInfoModel, StringToNumberPipe, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, TabpageService, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, ToolbarSettingsPipe, TooltipDirective, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UnlimitSessionComponent, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WebOtpDirective, WordMimeType, WorfkflowwChoiceCommandDirective, addCssVariableToRoot, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, flattenTree, forbiddenValidator, formRoutes, formatBytes, fromEntries, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFocusableTagNames, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, measureText2, measureTextBy, mobile_regex, nullOrUndefinedString, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, validateAllFormFields };
17601
17769
  //# sourceMappingURL=barsa-novin-ray-core.mjs.map