barsa-novin-ray-core 2.3.103 → 2.3.107

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,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
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';
3
+ import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, combineLatest, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, forkJoin, shareReplay, withLatestFrom as withLatestFrom$1, tap as tap$1, fromEvent, throwError, merge, interval, filter as filter$1, lastValueFrom, timeout, catchError as catchError$1, takeUntil as takeUntil$1, take, skip, Observable, timer, mergeWith, Subscription } from 'rxjs';
4
4
  import * as i1 from '@angular/router';
5
5
  import { Router, NavigationEnd, ActivatedRoute, RouterEvent, NavigationStart, RouterModule, RouteReuseStrategy } from '@angular/router';
6
6
  import { DomSanitizer, Title } from '@angular/platform-browser';
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';
7
+ import { filter, startWith, map, tap, takeUntil, withLatestFrom, delay, debounceTime, distinctUntilChanged, exhaustMap as exhaustMap$1, concatMap, finalize, publishReplay, refCount, shareReplay as shareReplay$1, switchMap as switchMap$1, catchError, merge as merge$1, pluck, mergeWith as mergeWith$1 } from 'rxjs/operators';
8
8
  import moment from 'moment';
9
9
  import moment$1 from 'moment-hijri';
10
10
  import 'moment/locale/ar';
@@ -1532,6 +1532,36 @@ function calcContextMenuWidth(contextMenuItems, disableContextMenuOverflow) {
1532
1532
  }
1533
1533
  return contextMenuWidth;
1534
1534
  }
1535
+ function RotateImage(imgEl, media, renderer2) {
1536
+ const direction = 1;
1537
+ const angle = 90 * direction;
1538
+ if (media.RotationAngle) {
1539
+ media.RotationAngle = (media.RotationAngle + angle) % 360;
1540
+ }
1541
+ else {
1542
+ media.RotationAngle = angle;
1543
+ }
1544
+ const w = imgEl.offsetWidth;
1545
+ const h = imgEl.offsetHeight;
1546
+ let margin = (w - h) / 2;
1547
+ let scaleFactor = w / h;
1548
+ if (media.scaleFactor) {
1549
+ scaleFactor = 1;
1550
+ media.scaleFactor = null;
1551
+ margin = 0;
1552
+ }
1553
+ else {
1554
+ media.scaleFactor = scaleFactor;
1555
+ }
1556
+ if (scaleFactor < 1) {
1557
+ renderer2.setStyle(imgEl, 'transform', `rotate(${media.RotationAngle}deg) scale(${scaleFactor})`);
1558
+ }
1559
+ else {
1560
+ renderer2.setStyle(imgEl, 'transform', `rotate(${media.RotationAngle}deg)`);
1561
+ }
1562
+ renderer2.setStyle(imgEl, 'margin-bottom', margin + 'px');
1563
+ renderer2.setStyle(imgEl, 'margin-top', margin + 'px');
1564
+ }
1535
1565
  function isInLocalMode() {
1536
1566
  const offlinceActive = BarsaApi.Common.Util.TryGetValue(BarsaApi.Offline, 'Settings.IsActive', false);
1537
1567
  const offlineTrue = BarsaApi.Common.Util.TryGetValue(BarsaApi.Offline, 'Settings.IsOffline', false);
@@ -1630,6 +1660,55 @@ function enumValueToStringSize(value, defaultValue) {
1630
1660
  return defaultValue;
1631
1661
  }
1632
1662
  }
1663
+ function isVersionBiggerThan(inputVersion) {
1664
+ const result = compareVersions(inputVersion, BarsaApi.LoginFormData.Version);
1665
+ if (result > 0) {
1666
+ return true;
1667
+ }
1668
+ else {
1669
+ return false;
1670
+ }
1671
+ }
1672
+ function compareVersions(v1, v2) {
1673
+ // ۱. تابع کمکی برای تبدیل رشته به عدد نهایی بر اساس فرمول شما
1674
+ const getVersionScore = (v) => {
1675
+ const parts = v
1676
+ .split('.')
1677
+ .filter((x) => x !== '')
1678
+ .map(Number);
1679
+ const major = (parts[0] || 0) * 1000; // بخش اول * 1000
1680
+ const minor = (parts[1] || 0) * 100; // بخش دوم * 100
1681
+ // بخش‌های باقی‌مانده (بخش سوم به بعد) با هم جمع می‌شوند
1682
+ const remaining = parts.slice(2).reduce((sum, current) => sum + current, 0);
1683
+ return major + minor + remaining;
1684
+ };
1685
+ // ۲. محاسبه امتیاز برای هر دو نسخه
1686
+ const score1 = getVersionScore(v1);
1687
+ const score2 = getVersionScore(v2);
1688
+ // ۳. مقایسه اعداد نهایی
1689
+ if (score1 > score2)
1690
+ return 1;
1691
+ if (score1 < score2)
1692
+ return -1;
1693
+ return 0;
1694
+ }
1695
+ function scrollToElement(target) {
1696
+ if (!target)
1697
+ return;
1698
+ const rect = target.getBoundingClientRect();
1699
+ // بررسی اینکه آیا المنت در محدوده پنجره مرورگر قرار دارد
1700
+ const isVisible = rect.top >= 0 &&
1701
+ rect.left >= 0 &&
1702
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
1703
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth);
1704
+ if (!isVisible) {
1705
+ // اگر قابل مشاهده نبود، به سمت آن اسکرول کن
1706
+ target.scrollIntoView({ behavior: 'smooth', block: 'center' });
1707
+ }
1708
+ else {
1709
+ console.log('المنت همین الان هم قابل مشاهده است.');
1710
+ }
1711
+ }
1633
1712
  function executeUlvCommandHandler(button, options) {
1634
1713
  if (button.Command && button.Command.Handler) {
1635
1714
  button.Command.Handler(button, options);
@@ -4192,39 +4271,60 @@ class BreadcrumbService {
4192
4271
  .subscribe((root) => {
4193
4272
  // Construct the breadcrumb hierarchy
4194
4273
  // const root = this.router.routerState.snapshot.root;
4195
- const breadcrumbs = [];
4196
- this.addBreadcrumb(root, breadcrumbs);
4274
+ this.ReBuild(root);
4197
4275
  // Emit the new hierarchy
4198
- this._breadcrumbs$.next(breadcrumbs);
4199
4276
  });
4200
4277
  }
4201
- addBreadcrumb(route, breadcrumbs) {
4278
+ ReBuild(route) {
4279
+ const breadcrumbs = [];
4280
+ this.addBreadcrumb('', route, breadcrumbs);
4281
+ this._breadcrumbs$.next(breadcrumbs);
4282
+ }
4283
+ addBreadcrumb(lastPathWidthoutUrl, route, breadcrumbs) {
4202
4284
  if (route) {
4203
4285
  // Add an element for the current route part
4204
- if (route.snapshot.data?.breadcrumb || route.snapshot.data?.pageData?.BreadCrumb) {
4286
+ if (route.snapshot.data?.hideBreadCrumb !== true &&
4287
+ (route.snapshot.data?.breadcrumb ||
4288
+ (typeof route.snapshot.data?.pageData?.BreadCrumb !== 'undefined' && route.snapshot.url.length))) {
4205
4289
  let url = '';
4206
- const routeURL = route.snapshot.url
4207
- .map((segment) => `${segment.path}${segment.parameters
4208
- ? `;${Object.keys(segment.parameters).map((c) => `${c}=${segment.parameters[c]}`)}`
4290
+ let routeURL = route.snapshot.url
4291
+ .map((segment) => `${segment.path}${Object.keys(segment.parameters).length
4292
+ ? ';' +
4293
+ Object.keys(segment.parameters)
4294
+ .map((c) => `${c}=${segment.parameters[c]}`)
4295
+ .join(';')
4209
4296
  : ''}`)
4210
4297
  .join('/');
4298
+ if (route.snapshot.routeConfig?.outlet) {
4299
+ routeURL = `${lastPathWidthoutUrl}(${route.snapshot.routeConfig?.outlet}:${routeURL} ${!route.firstChild ? ')' : ''}`;
4300
+ }
4211
4301
  if (routeURL !== '') {
4212
4302
  url += `/${routeURL}`;
4213
4303
  }
4304
+ const params2 = routeURL !== ''
4305
+ ? ''
4306
+ : Object.keys(route.snapshot.params).map((c) => '/' + route.snapshot.params[c]);
4307
+ const label = this.getLabel(route.snapshot.data);
4214
4308
  const breadcrumb = {
4215
- label: this.getLabel(route.snapshot.data),
4216
- url,
4309
+ label,
4310
+ url: url + params2,
4217
4311
  route
4218
4312
  };
4219
4313
  breadcrumbs.push(breadcrumb);
4314
+ lastPathWidthoutUrl = '';
4315
+ }
4316
+ else if (route.snapshot.url.length && route.snapshot.routeConfig?.path) {
4317
+ lastPathWidthoutUrl = !lastPathWidthoutUrl
4318
+ ? `${route.snapshot.routeConfig?.path}/`
4319
+ : `${lastPathWidthoutUrl}${route.snapshot.routeConfig?.path}/`;
4220
4320
  }
4221
4321
  // Add another element for the next route part
4222
- this.addBreadcrumb(route.firstChild, breadcrumbs);
4322
+ this.addBreadcrumb(lastPathWidthoutUrl, route.firstChild, breadcrumbs);
4223
4323
  }
4224
4324
  }
4225
4325
  getLabel(data) {
4226
4326
  // The breadcrumb can be defined as a static string or as a function to construct the breadcrumb element out of the route data
4227
- const breadcrumb = data.breadcrumb || data.pageData.BreadCrumb;
4327
+ const breadcrumb = data.breadcrumb || BarsaApi.Common.Util.TryGetValue(data, 'pageData.BreadCrumb', '');
4228
4328
  return typeof breadcrumb === 'function' ? data.breadcrumb(data) : breadcrumb;
4229
4329
  }
4230
4330
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -5135,10 +5235,137 @@ function formRoutes(authGuard = false) {
5135
5235
  };
5136
5236
  }
5137
5237
 
5238
+ class MultiAppCommandSearchProvider {
5239
+ constructor(apps) {
5240
+ this.apps = apps;
5241
+ this.key = 'command';
5242
+ this.priority = 5;
5243
+ }
5244
+ search(term) {
5245
+ return of(!this.apps ? [] : Object.values(this.apps).flatMap((app) => searchCommandsInApp(app, term)));
5246
+ }
5247
+ }
5248
+ function searchCommandsInApp(app, keyword) {
5249
+ const results = [];
5250
+ const term = keyword.toLowerCase();
5251
+ const groups = app?.ExtraData?.CommandGroups || [];
5252
+ const appTitle = app.ExtraData?.Navigator?.Root?.Caption;
5253
+ for (const group of groups) {
5254
+ for (const command of group.Commands || []) {
5255
+ if (command.Caption && command.Caption.toLowerCase().includes(term)) {
5256
+ results.push({
5257
+ appId: app.Id,
5258
+ appTitle,
5259
+ source: 'Command',
5260
+ id: command.Name || command.Key,
5261
+ caption: command.Caption,
5262
+ path: `${group.Caption || group.Name}`,
5263
+ original: command,
5264
+ hidden: false,
5265
+ depth: 0
5266
+ });
5267
+ }
5268
+ for (const menu of command.Menu || []) {
5269
+ if (menu.Caption && menu.Caption.toLowerCase().includes(term)) {
5270
+ results.push({
5271
+ appId: app.Id,
5272
+ appTitle,
5273
+ source: 'Command',
5274
+ id: menu.CommandId,
5275
+ caption: menu.Caption,
5276
+ path: `${group.Caption || group.Name} > ${command.Caption}`,
5277
+ original: menu,
5278
+ hidden: false,
5279
+ depth: 0
5280
+ });
5281
+ }
5282
+ }
5283
+ }
5284
+ }
5285
+ return results;
5286
+ }
5287
+
5288
+ class MultiAppNavigatorSearchProvider {
5289
+ constructor(apps) {
5290
+ this.apps = apps;
5291
+ this.key = 'navigator';
5292
+ this.priority = 10;
5293
+ }
5294
+ search(term) {
5295
+ return of(!this.apps ? [] : Object.values(this.apps).flatMap((app) => searchNavigatorInApp(app, term)));
5296
+ }
5297
+ }
5298
+ function searchNavigatorInApp(app, keyword) {
5299
+ const results = [];
5300
+ const root = app?.ExtraData?.Navigator?.Root;
5301
+ if (!root) {
5302
+ return results;
5303
+ }
5304
+ function walk(node, path, depth = 0) {
5305
+ const currentPath = path ? `${path} > ${node.Caption || node.Name}` : node.Caption || node.Name || '';
5306
+ if (node.Caption && node.Caption.toLowerCase().includes(keyword.toLowerCase())) {
5307
+ let url = '';
5308
+ if (!node.IsRoot && node.ReportId && node.ReportId !== '0') {
5309
+ url = `#/application/${app.Id}/report/${node.FolderId}__${node.Caption}__${node.ReportId}`;
5310
+ }
5311
+ else if (node.IsRoot) {
5312
+ url = `#/application/${app.Id}`;
5313
+ }
5314
+ results.push({
5315
+ appId: app.Id,
5316
+ appTitle: root.Caption,
5317
+ source: 'Navigator',
5318
+ id: node.Id,
5319
+ url,
5320
+ caption: node.Caption,
5321
+ path: currentPath,
5322
+ original: node,
5323
+ hidden: depth === 1,
5324
+ depth
5325
+ });
5326
+ }
5327
+ node.Items?.forEach((child) => walk(child, currentPath, depth + 1));
5328
+ }
5329
+ walk(root, '');
5330
+ return results;
5331
+ }
5332
+
5333
+ class SearchService {
5334
+ /**
5335
+ *
5336
+ */
5337
+ constructor() {
5338
+ this.providers = [];
5339
+ this.search$ = new Subject();
5340
+ this.results$ = this.search$.pipe(debounceTime$1(250), distinctUntilChanged$1(), switchMap((term) => {
5341
+ if (!term || term.length < 2) {
5342
+ return of([]);
5343
+ }
5344
+ return forkJoin(this.providers.map((p) => p.search(term))).pipe(map$1((groups) => groups.flat()));
5345
+ }), shareReplay(1));
5346
+ }
5347
+ register(provider) {
5348
+ this.providers.push(provider);
5349
+ this.providers.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
5350
+ }
5351
+ search(term) {
5352
+ this.search$.next(term);
5353
+ }
5354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5355
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SearchService, providedIn: 'root' }); }
5356
+ }
5357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SearchService, decorators: [{
5358
+ type: Injectable,
5359
+ args: [{
5360
+ providedIn: 'root'
5361
+ }]
5362
+ }], ctorParameters: () => [] });
5363
+
5138
5364
  class ApplicationCtrlrService {
5139
5365
  constructor() {
5140
5366
  this._selectedNavGroupItemId$ = new BehaviorSubject({});
5141
5367
  this._selectedReportId$ = new BehaviorSubject({});
5368
+ this._selectedReportCaption$ = new BehaviorSubject({});
5142
5369
  this._selectedNavGroupId$ = new BehaviorSubject({});
5143
5370
  this._sidebarToggle$ = new BehaviorSubject(false);
5144
5371
  this._selectedAppTileGroup$ = new BehaviorSubject('');
@@ -5148,9 +5375,13 @@ class ApplicationCtrlrService {
5148
5375
  this._selectedSystemNavUi$ = new BehaviorSubject(null);
5149
5376
  this._selectedCommandId$ = new BehaviorSubject({});
5150
5377
  this._isCommandGroupsSelected$ = new BehaviorSubject({});
5378
+ this._searchNavigators$ = new BehaviorSubject({});
5379
+ this._selectedSystemTitle$ = new Subject();
5151
5380
  this._isMobile = getDeviceIsMobile();
5152
5381
  this._document = inject(DOCUMENT);
5153
5382
  this._router = inject(Router);
5383
+ this._searchService = inject(SearchService);
5384
+ this._titleService = inject(Title);
5154
5385
  }
5155
5386
  get appMenuItems$() {
5156
5387
  return this._appMenuItems$.asObservable();
@@ -5198,12 +5429,21 @@ class ApplicationCtrlrService {
5198
5429
  get selectedSystemId() {
5199
5430
  return this._selectedSystemId$.getValue();
5200
5431
  }
5432
+ get searchResults$() {
5433
+ return this._searchService.results$;
5434
+ }
5435
+ get systemCaption$() {
5436
+ return this._selectedSystemTitle$.asObservable();
5437
+ }
5201
5438
  getSelectedNavGroupItemId(systemId) {
5202
5439
  return this._selectedNavGroupItemId$.getValue()[systemId];
5203
5440
  }
5204
5441
  getSelectedReportId(systemId) {
5205
5442
  return this._selectedReportId$.getValue()[systemId];
5206
5443
  }
5444
+ getSelectedReportCaption(systemId) {
5445
+ return this._selectedReportCaption$.getValue()[systemId];
5446
+ }
5207
5447
  initialize(callback) {
5208
5448
  BarsaApi.Ul.ApplicationCtrlr.on({
5209
5449
  'MetaEventTopics.System_BeforeApplicationStart': () => {
@@ -5215,6 +5455,10 @@ class ApplicationCtrlrService {
5215
5455
  callback && callback(true);
5216
5456
  });
5217
5457
  this._document.documentElement.setAttribute('data-layout', 'vertical');
5458
+ this._selectedSystemTitle$
5459
+ .asObservable()
5460
+ .pipe(tap$1((c) => this._titleService.setTitle(c)))
5461
+ .subscribe();
5218
5462
  }
5219
5463
  systemChange(systemId) {
5220
5464
  const systemData = BarsaApi.Ul.ApplicationCtrlr.SystemDict[systemId]?.SystemData;
@@ -5223,6 +5467,7 @@ class ApplicationCtrlrService {
5223
5467
  // console.error(`system data for systemid ${systemId} not found.`);
5224
5468
  return;
5225
5469
  }
5470
+ this._selectedSystemTitle$.next(systemData.Caption);
5226
5471
  this._customApplicationMenuBodyUi.fireEvent('SelectedSystemChanged', this._customApplicationMenuBodyUi, systemData);
5227
5472
  }
5228
5473
  selectAppTileGroup(id) {
@@ -5245,7 +5490,7 @@ class ApplicationCtrlrService {
5245
5490
  selectSystemCommand(command) {
5246
5491
  this.selectSystemCommandId(command.Key);
5247
5492
  new Promise((resolve, _reject) => {
5248
- this._router.navigate(['application', this._selectedSystemId$.getValue()]);
5493
+ this._routeToSelectedSystem();
5249
5494
  if (command.DynamicCommand) {
5250
5495
  BarsaApi.Common.CustomCodeManager.RunDynamicCommand(command.Key, {}, resolve);
5251
5496
  }
@@ -5287,6 +5532,13 @@ class ApplicationCtrlrService {
5287
5532
  sidebarToggled(value) {
5288
5533
  this._sidebarToggle$.next(value);
5289
5534
  }
5535
+ selectReportCaption(caption) {
5536
+ const selectedReportCaption = this._selectedReportCaption$.getValue();
5537
+ const selectedSystemId = this._selectedSystemId$.getValue();
5538
+ const systemId = selectedSystemId;
5539
+ selectedReportCaption[systemId] = caption;
5540
+ this._selectedReportCaption$.next(selectedReportCaption);
5541
+ }
5290
5542
  selectedReportId(reportId) {
5291
5543
  const selectedReport = this._selectedReportId$.getValue();
5292
5544
  const selectedSystemId = this._selectedSystemId$.getValue();
@@ -5301,6 +5553,64 @@ class ApplicationCtrlrService {
5301
5553
  reject(err);
5302
5554
  });
5303
5555
  }
5556
+ loadSearchNavigators() {
5557
+ let canSupport = false;
5558
+ if (BarsaApi.LoginFormData.Version.startsWith('5')) {
5559
+ canSupport = isVersionBiggerThan('5.1.37');
5560
+ }
5561
+ else {
5562
+ canSupport = isVersionBiggerThan('4.1.178');
5563
+ }
5564
+ if (Object.keys(this._searchNavigators$.getValue()).length || canSupport) {
5565
+ return;
5566
+ }
5567
+ BarsaApi.Common.Ajax.GetServerData('System94.Search', { term: '' }, (e) => {
5568
+ this._searchService.register(new MultiAppNavigatorSearchProvider(e));
5569
+ this._searchService.register(new MultiAppCommandSearchProvider(e));
5570
+ }, (e) => console.error(e), null, this);
5571
+ }
5572
+ search(e) {
5573
+ this._searchService.search(e.text);
5574
+ }
5575
+ searchItemClick(data) {
5576
+ if (data.original.IsRoot) {
5577
+ this._routeToSystem(data.appId);
5578
+ }
5579
+ else if (data.source === 'Command') {
5580
+ this.selectSystemCommand(data.original);
5581
+ }
5582
+ else if (data.source === 'Navigator') {
5583
+ if (data.original.ReportId === '0') {
5584
+ this._routeToSystem(data.appId);
5585
+ this.selectNavGroup(data.id, false);
5586
+ }
5587
+ else {
5588
+ this._routeToReport(data.id, data.original.Caption, data.original.ReportId);
5589
+ }
5590
+ }
5591
+ }
5592
+ _routeToSystem(systemId) {
5593
+ this.selectedSystem(systemId);
5594
+ this._routeToSelectedSystem();
5595
+ }
5596
+ getLastActivatedRoute() {
5597
+ let route = this._router.routerState.root;
5598
+ while (route.firstChild) {
5599
+ route = route.firstChild;
5600
+ }
5601
+ return route;
5602
+ }
5603
+ _routeToReport(navGroupId, caption, reportId) {
5604
+ this._router.navigate([
5605
+ 'application',
5606
+ this._selectedSystemId$.getValue(),
5607
+ 'report',
5608
+ navGroupId + '__' + caption + '__' + reportId
5609
+ ]);
5610
+ }
5611
+ _routeToSelectedSystem() {
5612
+ this._router.navigate(['application', this._selectedSystemId$.getValue()]);
5613
+ }
5304
5614
  flattenLeafCommands(commands) {
5305
5615
  const result = [];
5306
5616
  for (const cmd of commands) {
@@ -5361,19 +5671,11 @@ class ApplicationCtrlrService {
5361
5671
  });
5362
5672
  this._appMenuItems$.next([...items]);
5363
5673
  }
5364
- _addSystemUi(_systemUi) {
5365
- // this._selectedSystemId$.next(systemUi.SystemData.Id);
5366
- // console.log('_addSystemUi', systemUi);
5367
- }
5368
- _addToMainTabPanel(_customSystemUi) {
5369
- // console.log('AddToMainTabPanel', customSystemUi);
5370
- }
5674
+ _addSystemUi(_systemUi) { }
5675
+ _addToMainTabPanel(_customSystemUi) { }
5371
5676
  _selectedSystemChanged(systemId, _forceRelayout = false) {
5372
5677
  const x = this._customApplicationUi._systemsUi.find((c) => c.SystemData.Id === systemId);
5373
5678
  this._selectSystem(x);
5374
- // console.log('SelectedSystemChanged', systemId, forceRelayout);
5375
- // console.log('selected navgroup ', this._selectedNavGroupId$.getValue());
5376
- // console.log('selected navgroup Item ', this._selectedNavGroupItemId$.getValue());
5377
5679
  }
5378
5680
  _selectSystem(system) {
5379
5681
  if (!system) {
@@ -5382,12 +5684,8 @@ class ApplicationCtrlrService {
5382
5684
  this.selectedSystem(system.SystemData.Id);
5383
5685
  this._selectedSystemNavUi$.next(system.SystemNavUi);
5384
5686
  }
5385
- _setStatusBarValues(_statusbarValues) {
5386
- // console.log('SetStatusBarValues', statusbarValues);
5387
- }
5388
- _showReleaseNoteWindow(_releaseNoteData) {
5389
- // console.log('ShowReleaseNoteWindow', releaseNoteData);
5390
- }
5687
+ _setStatusBarValues(_statusbarValues) { }
5688
+ _showReleaseNoteWindow(_releaseNoteData) { }
5391
5689
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ApplicationCtrlrService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5392
5690
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ApplicationCtrlrService, providedIn: 'root' }); }
5393
5691
  }
@@ -5442,11 +5740,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
5442
5740
  type: Injectable
5443
5741
  }] });
5444
5742
 
5743
+ class ReportBreadcrumbResolver {
5744
+ resolve(route) {
5745
+ const x = this._extractIds(route.params);
5746
+ // برگرداندن شیء مورد نظر شما
5747
+ return x.ReportId2;
5748
+ }
5749
+ _extractIds(params) {
5750
+ return {
5751
+ Id: params.id.split('__')[0],
5752
+ ReportId: params.id.split('__').length > 2 ? params.id.split('__')[2] : '',
5753
+ ReportId2: params.id.split('__').length > 1 ? params.id.split('__')[1] : '',
5754
+ isReportPage: params.id.split('__').length > 3 ? params.id.split('__')[3] : null
5755
+ };
5756
+ }
5757
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportBreadcrumbResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5758
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportBreadcrumbResolver, providedIn: 'root' }); }
5759
+ }
5760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportBreadcrumbResolver, decorators: [{
5761
+ type: Injectable,
5762
+ args: [{ providedIn: 'root' }]
5763
+ }] });
5764
+
5445
5765
  function reportRoutes(authGuard = false) {
5446
5766
  return {
5447
5767
  path: 'report/:id',
5448
5768
  canActivate: authGuard ? [AuthGuard] : [],
5449
- loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-Bml7rVqA.mjs').then((m) => m.BarsaReportPageModule)
5769
+ loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-52O0tR5U.mjs').then((m) => m.BarsaReportPageModule),
5770
+ resolve: {
5771
+ breadcrumb: ReportBreadcrumbResolver
5772
+ }
5450
5773
  };
5451
5774
  }
5452
5775
 
@@ -5815,16 +6138,12 @@ class PortalService {
5815
6138
  // this.routeInitialized();
5816
6139
  }
5817
6140
  ssoLogin() {
5818
- AjaxHelper.AjaxRequest('/api/base/ssologin', null, false, () => {
5819
- // console.log(response);
5820
- }, () => {
6141
+ AjaxHelper.AjaxRequest('/api/base/ssologin', null, false, () => { }, () => {
5821
6142
  alert('error in sso login.');
5822
6143
  }, null);
5823
6144
  }
5824
6145
  ssoLogout() {
5825
- AjaxHelper.AjaxRequest('/api/base/ssologout', null, false, () => {
5826
- // console.log(response);
5827
- }, () => {
6146
+ AjaxHelper.AjaxRequest('/api/base/ssologout', null, false, () => { }, () => {
5828
6147
  alert('error in sso logout.');
5829
6148
  }, null);
5830
6149
  }
@@ -6547,7 +6866,10 @@ class UlvMainService {
6547
6866
  ...wfBtns,
6548
6867
  ...c.map((d) => ({
6549
6868
  ...d,
6550
- hideText: d.Command?.IsBuiltin && d.itemId !== 'New' ? true : false
6869
+ hideText: d.Command?.IsBuiltin &&
6870
+ (d.itemId === 'New' || d.itemId === 'AddToList' || d.itemId === 'RemoveFromList')
6871
+ ? false
6872
+ : true
6551
6873
  }))
6552
6874
  ]), map((c) => !c ? [] : [...c.filter((d) => !d.Command?.IsBuiltin), ...c.filter((d) => d.Command?.IsBuiltin)]), map((c) => c.reduce((acc, b) => (acc.length > 0 && acc[acc.length - 1]['0'] && b['0'] ? acc : [...acc, b]), [])));
6553
6875
  this.destroy$ = this._destroySource.asObservable().pipe(tap(() => this._unscubscribeContext()));
@@ -6559,7 +6881,7 @@ class UlvMainService {
6559
6881
  this.onlyInlineEdit$ = this._onlyInlineEditSource.asObservable();
6560
6882
  this.openSearchFilesManage$ = this._openSearchFilesManageSource.asObservable();
6561
6883
  this.searchPanelMoChanged$ = this._searchPanelMoChangedSource.asObservable().pipe(distinctUntilChanged());
6562
- this.layoutInfo$ = this._layoutInfoSource.asObservable().pipe(shareReplay(1));
6884
+ this.layoutInfo$ = this._layoutInfoSource.asObservable().pipe(shareReplay$1(1));
6563
6885
  this.allSearchPanelSettings$ = combineLatest([
6564
6886
  this._allSearchPanelSettingsSource.asObservable(),
6565
6887
  this._defaultSearchPanelSettingsSource.asObservable()
@@ -6569,14 +6891,14 @@ class UlvMainService {
6569
6891
  allSettings = [defaultSettings, ...allSettings];
6570
6892
  }
6571
6893
  return allSettings;
6572
- }), delay(0), shareReplay(1));
6894
+ }), delay(0), shareReplay$1(1));
6573
6895
  this.selectedSearchPanelSettingsId$ = this._selectedSearchPanelSettingsIdSource
6574
6896
  .asObservable()
6575
6897
  .pipe(distinctUntilChanged());
6576
6898
  this.selectedSearchPanelSettings$ = combineLatest([
6577
6899
  this.selectedSearchPanelSettingsId$,
6578
6900
  this.allSearchPanelSettings$
6579
- ]).pipe(map(([id, settings]) => settings?.find((c) => c.Id === id)), shareReplay(1));
6901
+ ]).pipe(map(([id, settings]) => settings?.find((c) => c.Id === id)), shareReplay$1(1));
6580
6902
  }
6581
6903
  get hideViewerLoading$() {
6582
6904
  return this._hideViewerLoadingSource.asObservable();
@@ -6937,7 +7259,7 @@ class UlvMainService {
6937
7259
  }
6938
7260
  loadMetaConditionsControlInfos(typeDefId, fieldDbNames) {
6939
7261
  const mo = GetDefaultMoObjectInfo(typeDefId);
6940
- return of(this._controlInfosMetaobject).pipe(switchMap((controlsInfo) => {
7262
+ return of(this._controlInfosMetaobject).pipe(switchMap$1((controlsInfo) => {
6941
7263
  if (controlsInfo.length > 0) {
6942
7264
  return of(controlsInfo);
6943
7265
  }
@@ -8423,7 +8745,9 @@ class ServiceWorkerCommuncationService {
8423
8745
  this._postServiceWorker({ event: 'isLoggedInChange', options: { isLoggedIn } });
8424
8746
  if (isLoggedIn) {
8425
8747
  this._setDefaultOptions();
8426
- this._pushNotificatioService.setup();
8748
+ setTimeout(() => {
8749
+ this._pushNotificatioService.setup();
8750
+ }, 5000);
8427
8751
  }
8428
8752
  }
8429
8753
  _visibilitychange(documentIsHidden) {
@@ -10284,17 +10608,17 @@ class FilesValidationHelper {
10284
10608
  this.maxFileSize = Number(maxFileSize);
10285
10609
  this.maxTotalFileSize = Number(maxTotalFileSize);
10286
10610
  }
10287
- validateFiles(files) {
10288
- return this._validateSize(files);
10611
+ validateFiles(filesCount, files) {
10612
+ return this._validateSize(filesCount, files);
10289
10613
  }
10290
- _validateSize(files) {
10614
+ _validateSize(filesCount, files) {
10291
10615
  const totalFileSize = files.reduce((accumulator, currFile) => accumulator + currFile.size, 0);
10292
10616
  const uplaodTotalSizeTooBigText = BarsaApi.BBB['Uplaod_TotalSizeTooBig'];
10293
10617
  const uplaodFileTooBigText = BarsaApi.BBB['Uplaod_FileTooBig'];
10294
10618
  const maxFilesExceeded = BarsaApi.BBB['Uplaod_MaxFilesExceeded'];
10295
10619
  let errorMsg = '';
10296
- if (files.length > this.maxFileCount && this.maxFileCount > 0) {
10297
- errorMsg = maxFilesExceeded + `(${this.maxFileCount})`;
10620
+ if (filesCount + files.length > this.maxFileCount + 1 && this.maxFileCount > 0) {
10621
+ errorMsg = `<span dir=ltr>${maxFilesExceeded} </span>` + `(${this.maxFileCount})`;
10298
10622
  }
10299
10623
  const fileReachSize = [];
10300
10624
  files.forEach((file) => {
@@ -10318,7 +10642,7 @@ class FilesValidationHelper {
10318
10642
  .join('<br/>');
10319
10643
  }
10320
10644
  if (errorMsg) {
10321
- BarsaApi.Ul.MsgBox.Error(errorMsg, () => { });
10645
+ BarsaApi.Ul.MsgBox.Error_ShowHtml(errorMsg, () => { });
10322
10646
  return false;
10323
10647
  }
10324
10648
  return true;
@@ -10956,7 +11280,7 @@ class LinearListHelper {
10956
11280
  this.uploadFile(fileAttachment).subscribe();
10957
11281
  }
10958
11282
  uploadToServer(files, key = '') {
10959
- const isValid = this._filesValidationHelper.validateFiles(files);
11283
+ const isValid = this._filesValidationHelper.validateFiles(0, files);
10960
11284
  if (!isValid) {
10961
11285
  return;
10962
11286
  }
@@ -11657,7 +11981,7 @@ class FormFieldReportPageComponent extends BaseComponent {
11657
11981
  .pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => ({
11658
11982
  Id: 0,
11659
11983
  ReportId: params.id
11660
- })), switchMap((navItem) => this._portalService.renderUlvMainUi(navItem, this.containerRef, this._injector, true)))
11984
+ })), switchMap$1((navItem) => this._portalService.renderUlvMainUi(navItem, this.containerRef, this._injector, true)))
11661
11985
  .subscribe(() => {
11662
11986
  this._setLoading(false);
11663
11987
  });
@@ -12203,6 +12527,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12203
12527
  type: Input
12204
12528
  }] } });
12205
12529
 
12530
+ class CardDynamicItemComponent extends DynamicItemComponent {
12531
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardDynamicItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12532
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: CardDynamicItemComponent, isStandalone: false, selector: "bnrc-card-dynamic-item-component", inputs: { columnTemplate: "columnTemplate", extendedHeaderTemplate: "extendedHeaderTemplate" }, usesInheritance: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12533
+ }
12534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardDynamicItemComponent, decorators: [{
12535
+ type: Component,
12536
+ args: [{ selector: 'bnrc-card-dynamic-item-component', template: `<ng-container #componentContainer></ng-container>`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:contents}\n"] }]
12537
+ }], propDecorators: { columnTemplate: [{
12538
+ type: Input
12539
+ }], extendedHeaderTemplate: [{
12540
+ type: Input
12541
+ }] } });
12542
+
12206
12543
  class BaseViewPropsComponent extends BaseComponent {
12207
12544
  constructor() {
12208
12545
  super(...arguments);
@@ -13023,6 +13360,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
13023
13360
  type: Input
13024
13361
  }] } });
13025
13362
 
13363
+ class CardBaseItemContentPropsComponent extends BaseItemContentPropsComponent {
13364
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardBaseItemContentPropsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13365
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: CardBaseItemContentPropsComponent, isStandalone: false, selector: "bnrc-card-base-item-content-props", inputs: { columnTemplate: "columnTemplate", extendedHeaderTemplate: "extendedHeaderTemplate" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13366
+ }
13367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CardBaseItemContentPropsComponent, decorators: [{
13368
+ type: Component,
13369
+ args: [{
13370
+ selector: 'bnrc-card-base-item-content-props',
13371
+ template: ``,
13372
+ changeDetection: ChangeDetectionStrategy.OnPush,
13373
+ standalone: false
13374
+ }]
13375
+ }], propDecorators: { columnTemplate: [{
13376
+ type: Input
13377
+ }], extendedHeaderTemplate: [{
13378
+ type: Input
13379
+ }] } });
13380
+
13026
13381
  class BaseFormToolbaritemPropsComponent extends BaseComponent {
13027
13382
  constructor() {
13028
13383
  super(...arguments);
@@ -13368,12 +13723,12 @@ class RootPortalComponent extends PageBaseComponent {
13368
13723
  super(...arguments);
13369
13724
  this._dir = 'ltr';
13370
13725
  this.isRoot = true;
13371
- this.inLocalMode = true;
13726
+ this.inLocalMode = signal(false);
13372
13727
  }
13373
13728
  ngOnInit() {
13374
13729
  super.ngOnInit();
13375
13730
  this.addModulesToDom();
13376
- this.inLocalMode = isInLocalMode();
13731
+ this.inLocalMode.set(isInLocalMode());
13377
13732
  this._portalService.rtl$.subscribe((c) => {
13378
13733
  this._dir = c ? 'rtl' : 'ltr';
13379
13734
  });
@@ -13473,7 +13828,7 @@ class RootPortalComponent extends PageBaseComponent {
13473
13828
  2xl:tw-grid-cols-4 2xl:tw-grid-cols-5 2xl:tw-grid-cols-6 2xl:tw-grid-cols-7 2xl:tw-grid-cols-8 2xl:tw-grid-cols-9
13474
13829
  2xl:tw-grid-cols-10 2xl:tw-grid-cols-11 2xl:tw-grid-cols-12"
13475
13830
  ></div>
13476
- @if(inLocalMode){
13831
+ @if(inLocalMode()){
13477
13832
  <div class="fd-toolbar" style="flex-wrap:wrap;padding:0.5rem;height:auto">
13478
13833
  <button class="fd-button fd-button--attention is-compact" (click)="onRemoveOfflineData()">
13479
13834
  حذف اطلاعات آفلاین
@@ -13546,7 +13901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
13546
13901
  2xl:tw-grid-cols-4 2xl:tw-grid-cols-5 2xl:tw-grid-cols-6 2xl:tw-grid-cols-7 2xl:tw-grid-cols-8 2xl:tw-grid-cols-9
13547
13902
  2xl:tw-grid-cols-10 2xl:tw-grid-cols-11 2xl:tw-grid-cols-12"
13548
13903
  ></div>
13549
- @if(inLocalMode){
13904
+ @if(inLocalMode()){
13550
13905
  <div class="fd-toolbar" style="flex-wrap:wrap;padding:0.5rem;height:auto">
13551
13906
  <button class="fd-button fd-button--attention is-compact" (click)="onRemoveOfflineData()">
13552
13907
  حذف اطلاعات آفلاین
@@ -14660,8 +15015,6 @@ class EllapsisTextDirective extends BaseDirective {
14660
15015
  entries.forEach((entry) => {
14661
15016
  if (entry.target === this._el.nativeElement) {
14662
15017
  this._widthChange$.next(entry.target.offsetWidth);
14663
- // console.log('width', entry);
14664
- // console.log('height', entry.contentRect.height);
14665
15018
  }
14666
15019
  });
14667
15020
  });
@@ -15871,7 +16224,7 @@ class LeafletLongPressDirective {
15871
16224
  const mouseup$ = merge(fromEvent(container, 'mouseup'), fromEvent(container, 'touchend'));
15872
16225
  const move$ = merge(fromEvent(container, 'mousemove'), fromEvent(container, 'touchmove'));
15873
16226
  const cancelInteraction$ = merge(fromEvent(this.map, 'dragstart'), fromEvent(this.map, 'zoomstart'), fromEvent(this.map, 'movestart'));
15874
- const longPress$ = mousedown$.pipe(switchMap((startEvent) => timer(this.longPressDuration).pipe(takeUntil(merge(mouseup$, move$, cancelInteraction$)), map(() => startEvent))), filter((e) => !!e));
16227
+ const longPress$ = mousedown$.pipe(switchMap$1((startEvent) => timer(this.longPressDuration).pipe(takeUntil(merge(mouseup$, move$, cancelInteraction$)), map(() => startEvent))), filter((e) => !!e));
15875
16228
  this.sub.add(longPress$.subscribe((startEvent) => {
15876
16229
  const originalEvent = startEvent instanceof MouseEvent ? startEvent : startEvent.touches?.[0] || startEvent;
15877
16230
  const latlng = this.map.mouseEventToLatLng(originalEvent);
@@ -16501,18 +16854,14 @@ class ReportNavigatorComponent extends BaseComponent {
16501
16854
  this._applicationCtrlService = inject(ApplicationCtrlrService);
16502
16855
  this._injector = inject(Injector);
16503
16856
  this._cdr = inject(ChangeDetectorRef);
16857
+ this._bbb = inject(BbbTranslatePipe);
16504
16858
  this._loadingSource = new BehaviorSubject(false);
16505
16859
  this.loading$ = this._loadingSource.asObservable().pipe(takeUntil(this._onDestroy$), debounceTime(200));
16506
16860
  }
16507
16861
  ngOnInit() {
16508
16862
  super.ngOnInit();
16509
16863
  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
16864
+ .pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => this._extractIds(params)), 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)), tap((navItem) => this._applicationCtrlService.selectReportCaption(navItem.ReportId2)), switchMap$1((navItem) => this._portalService
16516
16865
  .renderUlvMainUi(navItem, this.containerRef, this._injector, navItem.isReportPage ? false : true)
16517
16866
  .pipe(catchError((_err) =>
16518
16867
  // this._location.back();
@@ -16529,6 +16878,14 @@ class ReportNavigatorComponent extends BaseComponent {
16529
16878
  // this._applicationCtrlService.selectNavGroupItem('');
16530
16879
  this._setActiveReport(null);
16531
16880
  }
16881
+ _extractIds(params) {
16882
+ return {
16883
+ Id: params.id.split('__')[0],
16884
+ ReportId: params.id.split('__').length > 2 ? params.id.split('__')[2] : '',
16885
+ ReportId2: params.id.split('__').length > 1 ? params.id.split('__')[1] : '',
16886
+ isReportPage: params.id.split('__').length > 3 ? params.id.split('__')[3] : null
16887
+ };
16888
+ }
16532
16889
  _setLoading(val) {
16533
16890
  this._loadingSource.next(val);
16534
16891
  this._cdr.detectChanges();
@@ -16751,13 +17108,10 @@ class ResizableDirective {
16751
17108
  this.resizableComplete = new EventEmitter();
16752
17109
  this.documentRef = inject(DOCUMENT);
16753
17110
  this.elementRef = inject(ElementRef);
16754
- this.resizable = fromEvent(this.elementRef.nativeElement, 'mousedown').pipe(tap((e) => e.preventDefault()), switchMap(() => {
17111
+ this.resizable = fromEvent(this.elementRef.nativeElement, 'mousedown').pipe(tap((e) => e.preventDefault()), switchMap$1(() => {
16755
17112
  const elDom = this.elementRef.nativeElement;
16756
17113
  const { width, right, left } = elDom.closest('th').getBoundingClientRect();
16757
- return fromEvent(this.documentRef, 'mousemove').pipe(
16758
- // tap(({ clientX }) => console.log(width, clientX, left, width + left - clientX)),
16759
- // tap(({ clientX }) => console.log('rtl', this.rtl)),
16760
- map(({ clientX }) => (this.rtl ? width + left - clientX : width + clientX - right)), distinctUntilChanged(), takeUntil(fromEvent(this.documentRef, 'mouseup').pipe(tap((_c) => this.resizableComplete.emit()))));
17114
+ return fromEvent(this.documentRef, 'mousemove').pipe(map(({ clientX }) => (this.rtl ? width + left - clientX : width + clientX - right)), distinctUntilChanged(), takeUntil(fromEvent(this.documentRef, 'mouseup').pipe(tap((_c) => this.resizableComplete.emit()))));
16761
17115
  }));
16762
17116
  }
16763
17117
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -17210,6 +17564,7 @@ const components = [
17210
17564
  PortalPageSidebarComponent,
17211
17565
  EmptyPageWithRouterAndRouterOutletComponent,
17212
17566
  DynamicItemComponent,
17567
+ CardDynamicItemComponent,
17213
17568
  DynamicFormComponent,
17214
17569
  BaseDynamicComponent,
17215
17570
  DynamicFormToolbaritemComponent,
@@ -17430,7 +17785,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
17430
17785
  }))
17431
17786
  .catch((_) => {
17432
17787
  if (!inLocalMode && !navigator.onLine) {
17433
- console.log('no-internet');
17788
+ console.error('internet is not connected.');
17434
17789
  router.navigate(['no-internet']);
17435
17790
  }
17436
17791
  else {
@@ -17476,6 +17831,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
17476
17831
  PortalPageSidebarComponent,
17477
17832
  EmptyPageWithRouterAndRouterOutletComponent,
17478
17833
  DynamicItemComponent,
17834
+ CardDynamicItemComponent,
17479
17835
  DynamicFormComponent,
17480
17836
  BaseDynamicComponent,
17481
17837
  DynamicFormToolbaritemComponent,
@@ -17614,6 +17970,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
17614
17970
  PortalPageSidebarComponent,
17615
17971
  EmptyPageWithRouterAndRouterOutletComponent,
17616
17972
  DynamicItemComponent,
17973
+ CardDynamicItemComponent,
17617
17974
  DynamicFormComponent,
17618
17975
  BaseDynamicComponent,
17619
17976
  DynamicFormToolbaritemComponent,
@@ -17765,5 +18122,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
17765
18122
  * Generated bundle index. Do not edit.
17766
18123
  */
17767
18124
 
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 };
18125
+ 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, CardBaseItemContentPropsComponent, CardDynamicItemComponent, 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, ReportBreadcrumbResolver, ReportCalendarModel, ReportContainerComponent, ReportEmptyPageComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportNavigatorComponent, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ResizeHandlerDirective, ResizeObserverDirective, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RotateImage, 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, compareVersions, 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, isVersionBiggerThan, measureText, measureText2, measureTextBy, mobile_regex, nullOrUndefinedString, number_only, requestAnimationFramePolyfill, scrollToElement, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, validateAllFormFields };
17769
18126
  //# sourceMappingURL=barsa-novin-ray-core.mjs.map