barsa-novin-ray-core 2.3.107 → 2.3.109

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.
@@ -1777,6 +1777,24 @@ function getImagePath(type, moId, fileId, fieldDefId, size, sizeH) {
1777
1777
  const url = `/IH.ashx?ty=${type}&moId=${moId}&id=${fileId}&fdId=${fieldDefId}&si=${size}&siH=${sizeH}`;
1778
1778
  return url;
1779
1779
  }
1780
+ function checkPermission() {
1781
+ const windowRef = window;
1782
+ // ابتدا چک می‌کنیم که آیا کلاً این قابلیت در این مرورگر وجود دارد یا خیر
1783
+ if ('Notification' in windowRef) {
1784
+ return windowRef.Notification.permission;
1785
+ }
1786
+ // اگر نبود (مثل سفاری موبایل)، مقدار default یا denied برمی‌گردانیم
1787
+ return 'denied';
1788
+ }
1789
+ function fixUnclosedParentheses(url) {
1790
+ const openCount = (url.match(/\(/g) || []).length;
1791
+ const closeCount = (url.match(/\)/g) || []).length;
1792
+ if (openCount > closeCount) {
1793
+ // به تعداد اختلاف، پرانتز بسته اضافه می‌کند
1794
+ return url + ')'.repeat(openCount - closeCount);
1795
+ }
1796
+ return url;
1797
+ }
1780
1798
  function isFunction(functionToCheck) {
1781
1799
  return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';
1782
1800
  }
@@ -4924,6 +4942,9 @@ class FormPanelService extends BaseComponent {
4924
4942
  }
4925
4943
  _refresh() {
4926
4944
  this._initialize(this._context);
4945
+ if (this._context?.IsSubForm) {
4946
+ return;
4947
+ }
4927
4948
  const mo = this._moSource.getValue();
4928
4949
  if (!mo) {
4929
4950
  return;
@@ -5452,6 +5473,8 @@ class ApplicationCtrlrService {
5452
5473
  });
5453
5474
  BarsaApi.Ul.ApplicationCtrlr.Initialize(() => {
5454
5475
  this._handleEvents();
5476
+ const selectedSystem = BarsaApi.Ul.ApplicationCtrlr.GetSelectedSystem();
5477
+ this.systemChange(selectedSystem.Id);
5455
5478
  callback && callback(true);
5456
5479
  });
5457
5480
  this._document.documentElement.setAttribute('data-layout', 'vertical');
@@ -5467,6 +5490,9 @@ class ApplicationCtrlrService {
5467
5490
  // console.error(`system data for systemid ${systemId} not found.`);
5468
5491
  return;
5469
5492
  }
5493
+ if (this.deviceSize !== 's' && this.deviceSize !== 'm') {
5494
+ this.sidebarToggled(true);
5495
+ }
5470
5496
  this._selectedSystemTitle$.next(systemData.Caption);
5471
5497
  this._customApplicationMenuBodyUi.fireEvent('SelectedSystemChanged', this._customApplicationMenuBodyUi, systemData);
5472
5498
  }
@@ -5561,7 +5587,10 @@ class ApplicationCtrlrService {
5561
5587
  else {
5562
5588
  canSupport = isVersionBiggerThan('4.1.178');
5563
5589
  }
5564
- if (Object.keys(this._searchNavigators$.getValue()).length || canSupport) {
5590
+ if (!canSupport) {
5591
+ return;
5592
+ }
5593
+ if (Object.keys(this._searchNavigators$.getValue()).length) {
5565
5594
  return;
5566
5595
  }
5567
5596
  BarsaApi.Common.Ajax.GetServerData('System94.Search', { term: '' }, (e) => {
@@ -6009,6 +6038,7 @@ class PortalService {
6009
6038
  const _ismobile = getDeviceIsMobile();
6010
6039
  if (_ismobile) {
6011
6040
  BarsaApi.Bw.IsMobile = true;
6041
+ this._document.body.classList.add('mobile');
6012
6042
  }
6013
6043
  const _isTablet = getDeviceIsTablet();
6014
6044
  let _windoWSize = 's';
@@ -6314,7 +6344,11 @@ class PortalService {
6314
6344
  _addPage(routes, page) {
6315
6345
  const portalService = this;
6316
6346
  const traverse = (children, cpage) => {
6347
+ if (!children) {
6348
+ return;
6349
+ }
6317
6350
  const path = cpage.RoutePath;
6351
+ const x = this.getListOfChildPage(cpage);
6318
6352
  const pageComponent = portalService.getComponentType(cpage.Module, cpage.ComponentName, cpage.ComponentSelector);
6319
6353
  const newRoute = {
6320
6354
  path: (cpage.IsDefaultRoute === 'True' && path === '') || (path !== '' && typeof path !== 'undefined')
@@ -6333,11 +6367,15 @@ class PortalService {
6333
6367
  ...cpage
6334
6368
  }
6335
6369
  },
6336
- children: [reportRoutes(), formRoutes()]
6370
+ children: []
6337
6371
  };
6372
+ const constChildRoutes = [reportRoutes(), formRoutes()];
6373
+ if (!x.length || x.find((c) => c.IsDefaultRoute !== 'True')) {
6374
+ newRoute.children = constChildRoutes;
6375
+ }
6338
6376
  children.push(newRoute);
6339
6377
  // Recursively process each MetaObjectModel inside MoDataList
6340
- this.getListOfChildPage(cpage).forEach((c) => traverse(newRoute.children, c));
6378
+ x.forEach((c) => traverse(newRoute.children, c));
6341
6379
  };
6342
6380
  traverse(routes, page);
6343
6381
  }
@@ -6810,6 +6848,8 @@ class UlvMainService {
6810
6848
  this._onlyInlineEditSource = new BehaviorSubject(false);
6811
6849
  this._inlineEditModeSource = new BehaviorSubject(false);
6812
6850
  this._allowInlineEditSource = new BehaviorSubject(false);
6851
+ this._gridSettingSource = new BehaviorSubject(DefaultGridSetting);
6852
+ this._gridAllowSortSource = new BehaviorSubject(false);
6813
6853
  this._cartableKeySeperator = '@';
6814
6854
  this._titleSource = new BehaviorSubject({
6815
6855
  text: '',
@@ -6837,6 +6877,14 @@ class UlvMainService {
6837
6877
  this._workflowShareButtons = [];
6838
6878
  this._prepareMoForNewForm$ = new Subject();
6839
6879
  this._hideViewerLoadingSource = new BehaviorSubject(false);
6880
+ this._commandsAccessSource = new BehaviorSubject(DefaultCommandsAccessValue);
6881
+ this._viewCollectionSource = new BehaviorSubject([]);
6882
+ this._useLayoutItemTextForControlSource = new BehaviorSubject(false);
6883
+ this._hideTitleSource = new BehaviorSubject(true);
6884
+ this._createNewInlineMo$ = new Subject();
6885
+ this._sortSettingChanged$ = new Subject();
6886
+ this._updateGridSettingByUser$ = new Subject();
6887
+ this._selectedView$ = new BehaviorSubject(null);
6840
6888
  this.context$ = this._contextSource
6841
6889
  .asObservable()
6842
6890
  .pipe(takeUntil(this._onDestroy$), tap((context) => (this.context = context)), tap((context) => this._initialize(context)), tap((context) => this._addEventListener(context)))
@@ -6866,8 +6914,10 @@ class UlvMainService {
6866
6914
  ...wfBtns,
6867
6915
  ...c.map((d) => ({
6868
6916
  ...d,
6869
- hideText: d.Command?.IsBuiltin &&
6870
- (d.itemId === 'New' || d.itemId === 'AddToList' || d.itemId === 'RemoveFromList')
6917
+ hideText: !d.Command?.IsBuiltin ||
6918
+ d.itemId === 'New' ||
6919
+ d.itemId === 'AddToList' ||
6920
+ d.itemId === 'RemoveFromList'
6871
6921
  ? false
6872
6922
  : true
6873
6923
  }))
@@ -6900,6 +6950,48 @@ class UlvMainService {
6900
6950
  this.allSearchPanelSettings$
6901
6951
  ]).pipe(map(([id, settings]) => settings?.find((c) => c.Id === id)), shareReplay$1(1));
6902
6952
  }
6953
+ get selectedView$() {
6954
+ return this._selectedView$.asObservable();
6955
+ }
6956
+ get inlineEditMode() {
6957
+ return this._inlineEditModeSource.getValue();
6958
+ }
6959
+ get gridSettingChangedByUser$() {
6960
+ return this._updateGridSettingByUser$.asObservable();
6961
+ }
6962
+ get sortSettingChanged$() {
6963
+ return this._sortSettingChanged$.asObservable();
6964
+ }
6965
+ get createNewInlineMo$() {
6966
+ return this._createNewInlineMo$.asObservable();
6967
+ }
6968
+ get hideTitle$() {
6969
+ return this._hideTitleSource.asObservable();
6970
+ }
6971
+ get useLayoutItemTextForControl$() {
6972
+ return this._useLayoutItemTextForControlSource.asObservable();
6973
+ }
6974
+ get viewCollection$() {
6975
+ return this._viewCollectionSource.asObservable();
6976
+ }
6977
+ get commandsAccess() {
6978
+ return this._commandsAccessSource.getValue();
6979
+ }
6980
+ get commandsAccess$() {
6981
+ return this._commandsAccessSource.asObservable();
6982
+ }
6983
+ get hasSelected$() {
6984
+ return this.moDataList$.pipe(map((moList) => moList.some((c) => c.$IsChecked)));
6985
+ }
6986
+ get gridAllowSort$() {
6987
+ return this._gridAllowSortSource.asObservable();
6988
+ }
6989
+ get gridSetting() {
6990
+ return this._gridSettingSource.getValue();
6991
+ }
6992
+ get gridSetting$() {
6993
+ return this._gridSettingSource.asObservable();
6994
+ }
6903
6995
  get hideViewerLoading$() {
6904
6996
  return this._hideViewerLoadingSource.asObservable();
6905
6997
  }
@@ -6954,6 +7046,36 @@ class UlvMainService {
6954
7046
  get shortCuts$() {
6955
7047
  return this._shortCutsSource.asObservable();
6956
7048
  }
7049
+ setSelectedView(selectedView) {
7050
+ this._selectedView$.next(selectedView);
7051
+ }
7052
+ userChangeGridSetting(setting, isSort = false, raiseEvent = true) {
7053
+ this._updateGridSettingByUser$.next({ setting, isSort, raiseEvent });
7054
+ }
7055
+ sortSettingChange(gridSetting) {
7056
+ this._sortSettingChanged$.next(gridSetting);
7057
+ }
7058
+ newInlineMo(checked) {
7059
+ this._createNewInlineMo$.next(checked);
7060
+ }
7061
+ setHideTitle(hideTitle) {
7062
+ this._hideTitleSource.next(hideTitle);
7063
+ }
7064
+ setUseLayoutItemTextForControl(useLayoutItemTextForControl) {
7065
+ this._useLayoutItemTextForControlSource.next(useLayoutItemTextForControl);
7066
+ }
7067
+ setViewCollection(collection) {
7068
+ this._viewCollectionSource.next(collection);
7069
+ }
7070
+ setAccess(access) {
7071
+ this._commandsAccessSource.next(access);
7072
+ }
7073
+ setAllowGridColumnSort(allow) {
7074
+ this._gridAllowSortSource.next(allow);
7075
+ }
7076
+ setGridSetting(gridSetting) {
7077
+ this._gridSettingSource.next(gridSetting);
7078
+ }
6957
7079
  prepareMoForNewForm(mo) {
6958
7080
  this._prepareMoForNewForm$.next(mo);
6959
7081
  }
@@ -8528,6 +8650,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8528
8650
 
8529
8651
  class PushNotificationService {
8530
8652
  constructor() {
8653
+ this.BANNER_DISMISS_KEY = 'push_banner_dismissed_until';
8531
8654
  this.swPush = inject(SwPush);
8532
8655
  this.http = inject(HttpClient);
8533
8656
  this.idb = inject(IdbService);
@@ -8536,7 +8659,7 @@ class PushNotificationService {
8536
8659
  this._push = signal({
8537
8660
  bannerVisible: false,
8538
8661
  isSubscribed: false,
8539
- permission: Notification.permission,
8662
+ permission: checkPermission(),
8540
8663
  errorMessage: null
8541
8664
  });
8542
8665
  this.registerServiceWorkerMessageListener = () => {
@@ -8562,6 +8685,9 @@ class PushNotificationService {
8562
8685
  return this._push.asReadonly();
8563
8686
  }
8564
8687
  hideBanner() {
8688
+ // ۲. ذخیره زمان فعلی + ۲۴ ساعت (یا هر بازه مد نظر) در LocalStorage
8689
+ const tomorrow = Date.now() + 24 * 60 * 60 * 1000;
8690
+ this.local.setItem(this.BANNER_DISMISS_KEY, tomorrow.toString());
8565
8691
  this.update({ bannerVisible: false });
8566
8692
  }
8567
8693
  async setup() {
@@ -8571,7 +8697,7 @@ class PushNotificationService {
8571
8697
  this.swPush.subscription.subscribe((sub) => {
8572
8698
  this.update({
8573
8699
  isSubscribed: !!sub,
8574
- permission: Notification.permission
8700
+ permission: checkPermission()
8575
8701
  });
8576
8702
  if (sub) {
8577
8703
  const json = sub.toJSON?.() ?? sub;
@@ -8597,7 +8723,7 @@ class PushNotificationService {
8597
8723
  await this.idb.set('subscription', 'push-subscription', sub.toJSON());
8598
8724
  this.update({
8599
8725
  isSubscribed: true,
8600
- permission: Notification.permission,
8726
+ permission: checkPermission(),
8601
8727
  bannerVisible: false,
8602
8728
  errorMessage: null
8603
8729
  });
@@ -8637,7 +8763,7 @@ class PushNotificationService {
8637
8763
  }
8638
8764
  this.update({
8639
8765
  isSubscribed: true,
8640
- permission: Notification.permission,
8766
+ permission: checkPermission(),
8641
8767
  errorMessage: null
8642
8768
  });
8643
8769
  }
@@ -8652,30 +8778,34 @@ class PushNotificationService {
8652
8778
  }
8653
8779
  async initPushBanner() {
8654
8780
  let saved = await this.loadSubscription();
8655
- const perm = Notification.permission;
8656
- this.update({
8657
- permission: perm
8658
- });
8781
+ const perm = checkPermission();
8782
+ // ۳. بررسی امن بودن پروتکل (HTTPS یا Localhost)
8783
+ const isSecureContext = window.isSecureContext;
8784
+ this.update({ permission: perm });
8659
8785
  if (saved) {
8660
- // اگر پرمیشن اکنون revoked یا default شد، subscription قبلی را حذف کن
8661
8786
  if (perm === 'default' || perm === 'denied') {
8662
- console.log('Permission reset detected, removing old subscription');
8663
8787
  await this.deleteSubscription();
8664
8788
  saved = null;
8665
8789
  }
8666
8790
  }
8667
8791
  if (saved) {
8668
- this.update({
8669
- isSubscribed: true,
8670
- bannerVisible: false
8671
- });
8792
+ this.update({ isSubscribed: true, bannerVisible: false });
8672
8793
  }
8673
8794
  else {
8795
+ // ۴. منطق جدید برای نمایش بنر
8796
+ const dismissUntil = Number(this.local.getItem(this.BANNER_DISMISS_KEY) || 0);
8797
+ const isWaitPeriodOver = Date.now() > dismissUntil;
8798
+ const shouldShow = isSecureContext && // حتما HTTPS باشد
8799
+ perm !== 'denied' && // قبلا بلاک نکرده باشد
8800
+ perm !== 'granted' && // قبلا اکسپت نکرده باشد (اگر saved نال بود)
8801
+ isWaitPeriodOver && // زمان انتظار تمام شده باشد
8802
+ 'PushManager' in window; // مرورگر پشتیبانی کند
8674
8803
  this.update({
8675
8804
  isSubscribed: false,
8676
- bannerVisible: perm !== 'denied' && 'PushManager' in window
8805
+ bannerVisible: shouldShow
8677
8806
  });
8678
8807
  }
8808
+ // بقیه کدها...
8679
8809
  this.registerServiceWorkerMessageListener();
8680
8810
  const publicKey = await this.loadPublicKey();
8681
8811
  if (publicKey) {
@@ -9561,12 +9691,11 @@ class ReportBaseComponent extends BaseComponent {
9561
9691
  this._ulvMainService = inject(UlvMainService);
9562
9692
  this._visibleColumnsSource = new BehaviorSubject([]);
9563
9693
  this.searchTermSource = new BehaviorSubject('');
9564
- this.gridSettingSource = new BehaviorSubject(this.defaultGridSetting);
9565
9694
  this.groupbySource = new BehaviorSubject([]);
9566
9695
  this._allCheckedSource = new BehaviorSubject(false);
9567
9696
  this.visibleColumns$ = this._visibleColumnsSource.asObservable();
9568
9697
  this.searchTerm$ = this.searchTermSource.asObservable();
9569
- this.gridSetting$ = this.gridSettingSource.asObservable();
9698
+ this.gridSetting$ = this._ulvMainService.gridSetting$;
9570
9699
  this.groupby$ = this.groupbySource.asObservable();
9571
9700
  this.allChecked$ = this._allCheckedSource.asObservable();
9572
9701
  this.fields = {};
@@ -9599,6 +9728,12 @@ class ReportBaseComponent extends BaseComponent {
9599
9728
  this.selectedMo$ = this._ulvMainService.moDataList$.pipe(map((items) => items.find((c) => c.$IsChecked)));
9600
9729
  this.moDataList$ = this._ulvMainService.moDataList$.pipe(tap((items) => this._setAllChecked(items)));
9601
9730
  this.selectedCount$ = this._ulvMainService.selectedCount$;
9731
+ this._ulvMainService.setAllowGridColumnSort(this.context.ViewSetting?.AllowGridColumnSort);
9732
+ this._ulvMainService.setAccess(this.context.Setting.Extra?.DefaultCommandsAccess);
9733
+ this._ulvMainService.gridSettingChangedByUser$.pipe(takeUntil(this._onDestroy$)).subscribe(c => {
9734
+ const { setting, isSort, raiseEvent } = c;
9735
+ this.updateGridSetting(setting, isSort, raiseEvent);
9736
+ });
9602
9737
  this.context.on({
9603
9738
  scope: this,
9604
9739
  MoDataListChanged: this._moDataListChanged,
@@ -9655,7 +9790,7 @@ class ReportBaseComponent extends BaseComponent {
9655
9790
  this.context.fireEvent('columnSummary', this.context, e.moArr, e.column, e.groupLevel, e.groupName, e.summaryFn);
9656
9791
  }
9657
9792
  _gridSettingChanged(setting) {
9658
- this.gridSettingSource.next(setting);
9793
+ this._ulvMainService.setGridSetting(setting);
9659
9794
  }
9660
9795
  _prepareMoForNewForm(_context, mo) {
9661
9796
  mo && this._ulvMainService.prepareMoForNewForm(mo);
@@ -9667,7 +9802,7 @@ class ReportBaseComponent extends BaseComponent {
9667
9802
  this._allCheckedSource.next(items.length > 0 && !items.some((c) => !c.$IsChecked));
9668
9803
  }
9669
9804
  _handleColumnsResized(e) {
9670
- const gridSetting = this.gridSettingSource.getValue();
9805
+ const gridSetting = this._ulvMainService.gridSetting;
9671
9806
  const { columns, resized } = e;
9672
9807
  const colList = gridSetting.ColSettingList;
9673
9808
  resized.forEach((column1) => {
@@ -9706,7 +9841,7 @@ class ReportBaseComponent extends BaseComponent {
9706
9841
  return;
9707
9842
  }
9708
9843
  this.context.Setting.View.GridSetting = setting;
9709
- this.gridSettingSource.next(setting);
9844
+ this._ulvMainService.setGridSetting(setting);
9710
9845
  this.applyGroupby();
9711
9846
  if (isSort) {
9712
9847
  setting.Event = 'SortChange';
@@ -9723,7 +9858,7 @@ class ReportBaseComponent extends BaseComponent {
9723
9858
  updateSortSettings(sortSettings, raiseEvent = true) {
9724
9859
  const gridSettings = this.context.Setting.View.GridSetting;
9725
9860
  gridSettings.SortSettingList = sortSettings;
9726
- this.gridSettingSource.next(gridSettings);
9861
+ this._ulvMainService.setGridSetting(gridSettings);
9727
9862
  this.applyGroupby();
9728
9863
  gridSettings.Event = 'SortChange';
9729
9864
  if (raiseEvent) {
@@ -10517,6 +10652,17 @@ class BaseReportModel {
10517
10652
  this.DefaultItemComponent = 'ReportDefaultItemComponent';
10518
10653
  }
10519
10654
  }
10655
+ const DefaultCommandsAccessValue = {
10656
+ Add: false,
10657
+ AddToList: false,
10658
+ Delete: false,
10659
+ Edit: false,
10660
+ Export: false,
10661
+ Print: false,
10662
+ Refresh: false,
10663
+ RemoveFromList: false,
10664
+ View: false
10665
+ };
10520
10666
  class CustomCommand {
10521
10667
  }
10522
10668
  class ReportModel extends BaseReportModel {
@@ -10534,6 +10680,12 @@ class ReportTreeModel extends BaseReportModel {
10534
10680
  }
10535
10681
  class ReportViewColumn {
10536
10682
  }
10683
+ const DefaultGridSetting = {
10684
+ ColSettingList: [],
10685
+ AutoSizeColumns: false,
10686
+ SortSettingList: [],
10687
+ Hidden: true
10688
+ };
10537
10689
  class GridSetting {
10538
10690
  }
10539
10691
  class ColSetting {
@@ -11441,7 +11593,8 @@ class FormPageBaseComponent extends ContainerComponent {
11441
11593
  onFormClose() {
11442
11594
  if (this._activatedRoute.snapshot.params.isFirst &&
11443
11595
  this._activatedRoute.parent?.parent?.routeConfig?.path === 'form') {
11444
- const parentUrl = this._router.url.split('/form/')[0];
11596
+ let parentUrl = this._router.url.split('/form/')[0];
11597
+ parentUrl = fixUnclosedParentheses(parentUrl);
11445
11598
  this._router.navigateByUrl(parentUrl, {
11446
11599
  replaceUrl: true
11447
11600
  });
@@ -11648,9 +11801,6 @@ class FormComponent extends BaseComponent {
11648
11801
  componentInstance.forceClose$.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
11649
11802
  this.formClose.emit();
11650
11803
  });
11651
- componentInstance.forceClose$.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
11652
- this.formClose.emit();
11653
- });
11654
11804
  // this.formPanelCtrl.on('ValueChange', () => this.moChanged.emit(this.formPanelCtrl.Mo));
11655
11805
  // component.instance.addEventListener('formClose', this.close);
11656
11806
  // el.appendChild(htmlElement);
@@ -12100,14 +12250,12 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
12100
12250
  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: `
12101
12251
  <div class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row">
12102
12252
  <!-- لیست -->
12103
- <div
12104
- class="tw-w-full md:tw-w-96"
12105
- >
12253
+ <div class="tw-w-full md:tw-w-96 master">
12106
12254
  <ng-container #containerRef></ng-container>
12107
12255
  </div>
12108
12256
 
12109
12257
  <!-- جزئیات -->
12110
- <div class="tw-w-full md:tw-flex-1 tw-overflow-hidden">
12258
+ <div class="tw-w-full md:tw-flex-1 tw-overflow-hidden details">
12111
12259
  <router-outlet name="details"></router-outlet>
12112
12260
  </div>
12113
12261
  </div>
@@ -12120,14 +12268,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12120
12268
  args: [{ selector: 'bnrc-master-details-page', template: `
12121
12269
  <div class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row">
12122
12270
  <!-- لیست -->
12123
- <div
12124
- class="tw-w-full md:tw-w-96"
12125
- >
12271
+ <div class="tw-w-full md:tw-w-96 master">
12126
12272
  <ng-container #containerRef></ng-container>
12127
12273
  </div>
12128
12274
 
12129
12275
  <!-- جزئیات -->
12130
- <div class="tw-w-full md:tw-flex-1 tw-overflow-hidden">
12276
+ <div class="tw-w-full md:tw-flex-1 tw-overflow-hidden details">
12131
12277
  <router-outlet name="details"></router-outlet>
12132
12278
  </div>
12133
12279
  </div>
@@ -12332,6 +12478,9 @@ class BaseDynamicComponent extends BaseComponent {
12332
12478
  this._component.instance.value = this.value;
12333
12479
  }
12334
12480
  this.setComponentInputs();
12481
+ if (typeof this.FnHandleEvents === 'function') {
12482
+ this.FnHandleEvents(this._component.instance);
12483
+ }
12335
12484
  const events = this._component.instance.events;
12336
12485
  if (events) {
12337
12486
  events
@@ -12343,6 +12492,7 @@ class BaseDynamicComponent extends BaseComponent {
12343
12492
  });
12344
12493
  // this.setComponentInputs();
12345
12494
  }
12495
+ setOutput() { }
12346
12496
  setComponentInputs() {
12347
12497
  const inputProperties = Object.keys(this).filter((c) => !c.startsWith('_') && c !== 'events');
12348
12498
  inputProperties.forEach((key) => {
@@ -12363,7 +12513,7 @@ class BaseDynamicComponent extends BaseComponent {
12363
12513
  }
12364
12514
  }
12365
12515
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseDynamicComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12366
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseDynamicComponent, isStandalone: false, selector: "bnrc-dynamic-component", inputs: { component: "component", value: "value" }, outputs: { events: "events" }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["componentContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12516
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseDynamicComponent, isStandalone: false, selector: "bnrc-dynamic-component", inputs: { component: "component", FnHandleEvents: "FnHandleEvents", value: "value" }, outputs: { events: "events" }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["componentContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12367
12517
  }
12368
12518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseDynamicComponent, decorators: [{
12369
12519
  type: Component,
@@ -12378,6 +12528,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
12378
12528
  args: ['componentContainer', { read: ViewContainerRef, static: true }]
12379
12529
  }], component: [{
12380
12530
  type: Input
12531
+ }], FnHandleEvents: [{
12532
+ type: Input
12381
12533
  }], value: [{
12382
12534
  type: Input
12383
12535
  }], events: [{
@@ -13577,6 +13729,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
13577
13729
  type: Output
13578
13730
  }] } });
13579
13731
 
13732
+ class DynamicUlvToolbarComponent extends BaseDynamicComponent {
13733
+ constructor() {
13734
+ super(...arguments);
13735
+ this.hideTitle = false;
13736
+ }
13737
+ ngOnChanges(changes) {
13738
+ if (this._component) {
13739
+ Object.keys(changes).forEach((key) => {
13740
+ if (!changes[key].firstChange) {
13741
+ this._component.instance[key] = changes[key].currentValue;
13742
+ }
13743
+ });
13744
+ this._component.instance.ngOnChanges(changes);
13745
+ this._component.instance.changeDetect && this._component.instance.changeDetect();
13746
+ }
13747
+ }
13748
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicUlvToolbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: DynamicUlvToolbarComponent, isStandalone: false, selector: "bnrc-dynamic-ulv-toolbar-component", inputs: { allowGridColumnSort: "allowGridColumnSort", useLayoutItemTextForControl: "useLayoutItemTextForControl", enableSearch: "enableSearch", hideTitle: "hideTitle", title: "title", icon: "icon", deviceName: "deviceName", deviceSize: "deviceSize", access: "access", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", contentDensity: "contentDensity", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", gridSetting: "gridSetting", viewCollection: "viewCollection", reportView: "reportView", inDialog: "inDialog", isMultiSelect: "isMultiSelect", cls: "cls", hasSelected: "hasSelected", config: "config", hidden: "hidden", buttons: "buttons", moDataListCount: "moDataListCount" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `<ng-container #componentContainer></ng-container>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13750
+ }
13751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicUlvToolbarComponent, decorators: [{
13752
+ type: Component,
13753
+ args: [{
13754
+ selector: 'bnrc-dynamic-ulv-toolbar-component',
13755
+ template: `<ng-container #componentContainer></ng-container>`,
13756
+ changeDetection: ChangeDetectionStrategy.OnPush,
13757
+ standalone: false
13758
+ }]
13759
+ }], propDecorators: { allowGridColumnSort: [{
13760
+ type: Input
13761
+ }], useLayoutItemTextForControl: [{
13762
+ type: Input
13763
+ }], enableSearch: [{
13764
+ type: Input
13765
+ }], hideTitle: [{
13766
+ type: Input
13767
+ }], title: [{
13768
+ type: Input
13769
+ }], icon: [{
13770
+ type: Input
13771
+ }], deviceName: [{
13772
+ type: Input
13773
+ }], deviceSize: [{
13774
+ type: Input
13775
+ }], access: [{
13776
+ type: Input
13777
+ }], hideToolbar: [{
13778
+ type: Input
13779
+ }], toolbarButtons: [{
13780
+ type: Input
13781
+ }], contentDensity: [{
13782
+ type: Input
13783
+ }], inlineEditMode: [{
13784
+ type: Input
13785
+ }], allowInlineEdit: [{
13786
+ type: Input
13787
+ }], gridSetting: [{
13788
+ type: Input
13789
+ }], viewCollection: [{
13790
+ type: Input
13791
+ }], reportView: [{
13792
+ type: Input
13793
+ }], inDialog: [{
13794
+ type: Input
13795
+ }], isMultiSelect: [{
13796
+ type: Input
13797
+ }], cls: [{
13798
+ type: Input
13799
+ }], hasSelected: [{
13800
+ type: Input
13801
+ }], config: [{
13802
+ type: Input
13803
+ }], hidden: [{
13804
+ type: Input
13805
+ }], buttons: [{
13806
+ type: Input
13807
+ }], moDataListCount: [{
13808
+ type: Input
13809
+ }] } });
13810
+
13580
13811
  class UnlimitSessionComponent extends BaseComponent {
13581
13812
  constructor() {
13582
13813
  super(...arguments);
@@ -16514,6 +16745,7 @@ class FormNewComponent extends BaseComponent {
16514
16745
  super(...arguments);
16515
16746
  this._router = inject(Router);
16516
16747
  this._activatedRoute = inject(ActivatedRoute);
16748
+ this._back$ = new Subject();
16517
16749
  }
16518
16750
  ngOnInit() {
16519
16751
  super.ngOnInit();
@@ -16521,9 +16753,20 @@ class FormNewComponent extends BaseComponent {
16521
16753
  const typeDefId = this.settings?.MetaTypeDef?.Id;
16522
16754
  const viewId = this.settings?.MetaView?.Id;
16523
16755
  this.params = { moId, typeDefId, viewId };
16756
+ this._back$
16757
+ .asObservable()
16758
+ .pipe(debounceTime$1(100))
16759
+ .subscribe(() => this._navigateBack());
16524
16760
  }
16525
16761
  onFormClose() {
16526
- this._router.navigate(['../'], {
16762
+ this._back$.next();
16763
+ }
16764
+ _navigateBack() {
16765
+ const pathPattern = this._activatedRoute.snapshot.routeConfig?.path || '';
16766
+ const segmentsCount = pathPattern.split('/').filter((segment) => segment.length > 0).length;
16767
+ const backSteps = '../'.repeat(segmentsCount);
16768
+ // const path = this._activatedRoute.snapshot.routeConfig?.path;
16769
+ this._router.navigate([backSteps], {
16527
16770
  relativeTo: this._activatedRoute,
16528
16771
  replaceUrl: true
16529
16772
  });
@@ -17566,6 +17809,7 @@ const components = [
17566
17809
  DynamicItemComponent,
17567
17810
  CardDynamicItemComponent,
17568
17811
  DynamicFormComponent,
17812
+ DynamicUlvToolbarComponent,
17569
17813
  BaseDynamicComponent,
17570
17814
  DynamicFormToolbaritemComponent,
17571
17815
  DynamicLayoutComponent,
@@ -17833,6 +18077,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
17833
18077
  DynamicItemComponent,
17834
18078
  CardDynamicItemComponent,
17835
18079
  DynamicFormComponent,
18080
+ DynamicUlvToolbarComponent,
17836
18081
  BaseDynamicComponent,
17837
18082
  DynamicFormToolbaritemComponent,
17838
18083
  DynamicLayoutComponent,
@@ -17972,6 +18217,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
17972
18217
  DynamicItemComponent,
17973
18218
  CardDynamicItemComponent,
17974
18219
  DynamicFormComponent,
18220
+ DynamicUlvToolbarComponent,
17975
18221
  BaseDynamicComponent,
17976
18222
  DynamicFormToolbaritemComponent,
17977
18223
  DynamicLayoutComponent,
@@ -18122,5 +18368,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
18122
18368
  * Generated bundle index. Do not edit.
18123
18369
  */
18124
18370
 
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 };
18371
+ 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, DefaultCommandsAccessValue, DefaultGridSetting, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicDarkColorPipe, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicRootVariableDirective, DynamicStyleDirective, DynamicTileGroupComponent, DynamicUlvToolbarComponent, 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, checkPermission, compareVersions, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, fixUnclosedParentheses, 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 };
18126
18372
  //# sourceMappingURL=barsa-novin-ray-core.mjs.map