barsa-novin-ray-core 2.3.163 → 2.3.164

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.
@@ -21,6 +21,14 @@ import Splide from '@splidejs/splide';
21
21
 
22
22
  class BarsaApi {
23
23
  static { this.idGenerator = -10000; }
24
+ /**
25
+ * رجیستری سراسری کامپوننت‌های سفارشی (per-xtype) که از سرور با
26
+ * BL method گرفته می‌شود. کلید = originalXtype (مثل 'Ui.TextArea')،
27
+ * مقدار = تعریف کامپوننت (Module/Name/Selector/Version/IsFederatedRemote/...).
28
+ * توسط CustomUiRegistryService در AppInitializer پر می‌شود و در
29
+ * getComponentDefined خوانده می‌شود.
30
+ */
31
+ static { this.CustomUiMap = {}; }
24
32
  static get GanttChartHelper() {
25
33
  return GanttChartHelper;
26
34
  }
@@ -1090,6 +1098,16 @@ const isAndroid = () => {
1090
1098
  }
1091
1099
  return !!Device.os.android;
1092
1100
  };
1101
+ const isIOS$1 = () => {
1102
+ if (!Device.os) {
1103
+ _setOS();
1104
+ }
1105
+ if (Device.os.ios) {
1106
+ return true;
1107
+ }
1108
+ // iPadOS 13+ خودش را «Macintosh» گزارش می‌کند؛ با وجود لمس از مکِ واقعی تفکیک می‌شود
1109
+ return !!Device.os.macintosh && supportTouch();
1110
+ };
1093
1111
  // * ******* Browser Detection ********
1094
1112
  /**
1095
1113
  * Contains information about the used browser.
@@ -1972,6 +1990,10 @@ function setOneDepthLevel(node) {
1972
1990
  function isFirefox() {
1973
1991
  return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
1974
1992
  }
1993
+ /** تشخیص دستگاه‌های iOS (iPhone/iPad/iPod، شامل iPadOS 13+ در حالت دسکتاپ). */
1994
+ function isIOS() {
1995
+ return isIOS$1();
1996
+ }
1975
1997
  function getImagePath(type, moId, fileId, fieldDefId, size, sizeH) {
1976
1998
  moId = moId == null ? '' : encodeURIComponent(moId);
1977
1999
  fileId = fileId == null ? '' : encodeURIComponent(fileId);
@@ -2064,14 +2086,23 @@ function getComponentDefined(controlUi, customUiSetting) {
2064
2086
  selector = selector.substring(1, selector.length);
2065
2087
  selector = BarsaApi.LoginFormData.CustomUiPrefix + '-' + selector;
2066
2088
  let version;
2067
- if (customUiSetting && customUiSetting.Module) {
2068
- moduleName = customUiSetting.Module;
2089
+ let isFederatedRemote = false;
2090
+ let moduleFileName;
2091
+ // ── انتخاب override با اولویت ──────────────────────────────────
2092
+ // ۱) CustomUi روی خود فیلد (خاص‌ترین) > ۲) رجیستری سراسری per-xtype > ۳) پیش‌فرض
2093
+ const registryEntry = BarsaApi.CustomUiMap ? BarsaApi.CustomUiMap[controlUi.originalXtype] : null;
2094
+ const override = customUiSetting && customUiSetting.Module ? customUiSetting : registryEntry;
2095
+ if (override && override.Module) {
2096
+ moduleName = override.Module;
2069
2097
  moduleKebabName = BarsaApi.Common.Util.GetKebabCase(moduleName);
2070
- componentName = customUiSetting.Name;
2071
- selector = customUiSetting.Selector;
2072
- version = customUiSetting.Version;
2073
- }
2074
- const modulePath = moduleKebabName.slice(1, moduleKebabName.length);
2098
+ componentName = override.Name;
2099
+ selector = override.Selector;
2100
+ version = override.Version;
2101
+ isFederatedRemote = !!override.IsFederatedRemote;
2102
+ moduleFileName = override.ModuleFileName;
2103
+ }
2104
+ // ModuleFileName سرور را ترجیح بده؛ در غیر این‌صورت از kebab نام ماژول بساز
2105
+ const modulePath = moduleFileName ? moduleFileName : moduleKebabName.slice(1, moduleKebabName.length);
2075
2106
  return {
2076
2107
  Id: '',
2077
2108
  $Caption: '',
@@ -2079,7 +2110,8 @@ function getComponentDefined(controlUi, customUiSetting) {
2079
2110
  ModuleFileName: modulePath,
2080
2111
  Name: componentName,
2081
2112
  Selector: selector,
2082
- Version: version
2113
+ Version: version,
2114
+ IsFederatedRemote: isFederatedRemote
2083
2115
  };
2084
2116
  }
2085
2117
  function isSafari() {
@@ -6518,7 +6550,7 @@ function reportRoutes(authGuard = false) {
6518
6550
  return {
6519
6551
  path: 'report/:id',
6520
6552
  canActivate: authGuard ? [AuthGuard] : [],
6521
- loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-BfX9Hk-R.mjs').then((m) => m.BarsaReportPageModule),
6553
+ loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-Cc0Iyw-a.mjs').then((m) => m.BarsaReportPageModule),
6522
6554
  resolve: {
6523
6555
  breadcrumb: ReportBreadcrumbResolver
6524
6556
  }
@@ -7550,6 +7582,7 @@ class UlvMainService {
7550
7582
  this.openOneClick = false;
7551
7583
  this._bbbPipe = inject(BbbTranslatePipe);
7552
7584
  this._apiService = inject(ApiService);
7585
+ this._portalService = inject(PortalService);
7553
7586
  this._setUiViewerSelector$ = new Subject();
7554
7587
  this._gridFreeColumnSizing$ = new BehaviorSubject(false);
7555
7588
  this._layoutInfoSource = new Subject();
@@ -7621,6 +7654,8 @@ class UlvMainService {
7621
7654
  this._showToolbarBorderSource = new BehaviorSubject(false);
7622
7655
  this._viewSettingsSource = new BehaviorSubject({});
7623
7656
  this._parentHeightSource = new BehaviorSubject(0);
7657
+ this._moveUpAccessSource = new BehaviorSubject(false);
7658
+ this._reorderGroupbySource = new BehaviorSubject([]);
7624
7659
  this.context$ = this._contextSource
7625
7660
  .asObservable()
7626
7661
  .pipe(takeUntil(this._onDestroy$), tap((context) => (this.context = context)), tap((context) => this._initialize(context)), tap((context) => this._addEventListener(context)))
@@ -7887,6 +7922,20 @@ class UlvMainService {
7887
7922
  get parentHeight() {
7888
7923
  return this._parentHeightSource.getValue();
7889
7924
  }
7925
+ /**
7926
+ * مجاز بودن تغییر ترتیب رکوردها با drag/drop. به‌صورت واکنشی از سه عامل ساخته می‌شود:
7927
+ * دسترسی MoveUp، نبودِ گروه‌بندی، و نبودِ حالتِ ویرایش لیستی (چون در این دو حالت اندیس ردیف با اندیس آرایه یکی نیست).
7928
+ */
7929
+ get allowRecordReorder$() {
7930
+ return combineLatest([
7931
+ this._moveUpAccessSource,
7932
+ this._reorderGroupbySource,
7933
+ this._inlineEditModeSource
7934
+ ]).pipe(map(([moveUp, groupby, inlineEdit]) => moveUp === true && !groupby.length && !inlineEdit), distinctUntilChanged());
7935
+ }
7936
+ setReorderGroupby(groupby) {
7937
+ this._reorderGroupbySource.next(groupby ?? []);
7938
+ }
7890
7939
  get alternateRowMode$() {
7891
7940
  return this._alternateRowMode.asObservable();
7892
7941
  }
@@ -8091,6 +8140,13 @@ class UlvMainService {
8091
8140
  this._onDestroy$.next();
8092
8141
  this._unscubscribeContext();
8093
8142
  }
8143
+ /**
8144
+ * تغییر ترتیب رکورد: source را دقیقاً بالای aboveTarget قرار می‌دهد.
8145
+ * برای بردن به انتهای لیست، aboveTargetMoId برابر null فرستاده می‌شود.
8146
+ */
8147
+ changeRecordOrderAbove(sourceMoId, aboveTargetMoId) {
8148
+ return this._portalService.RunBlMethodAsync('ChangeOrderAbove', [sourceMoId, aboveTargetMoId]);
8149
+ }
8094
8150
  pageSizeChanged(pageIndex) {
8095
8151
  this.context.fireEvent('PageChange', this.context, pageIndex);
8096
8152
  }
@@ -8354,6 +8410,11 @@ class UlvMainService {
8354
8410
  this._initSearchpanel(context);
8355
8411
  this._initCreateNewInlineMo(context);
8356
8412
  this._initGridFreeColumnSizing(context);
8413
+ this._initAllowRecordReorder(context);
8414
+ }
8415
+ _initAllowRecordReorder(context) {
8416
+ const moveUp = BarsaApi.Common.Util.TryGetValue(context, 'Setting.Extra.DefaultCommandsAccess.MoveUp', false);
8417
+ this._moveUpAccessSource.next(moveUp === true);
8357
8418
  }
8358
8419
  _initGridFreeColumnSizing(context) {
8359
8420
  if (context && context.Setting.View?.Grid_FreeColumnSizing) {
@@ -10396,6 +10457,122 @@ const TEMPLATE_ENGINE = new InjectionToken('TEMPLATE_ENGINE', {
10396
10457
  factory: () => new SimpleTemplateEngine()
10397
10458
  });
10398
10459
 
10460
+ /**
10461
+ * رجیستری سراسری کامپوننت‌های سفارشی (per-xtype) — با کش سمت کلاینت (stale-while-revalidate).
10462
+ *
10463
+ * دیتای رجیستری از سرور با یک BL method گرفته می‌شود (متد سمت سرور:
10464
+ * TarahiOlgo_GetComponentRegistry که یک Dictionary<xtype, ComponentSchema> برمی‌گرداند)
10465
+ * و داخل BarsaApi.CustomUiMap نگه‌داری می‌شود تا getComponentDefined بتواند
10466
+ * به‌صورت O(1) بخواندش.
10467
+ *
10468
+ * ترتیب اولویت انتخاب کامپوننت در getComponentDefined:
10469
+ * ۱) CustomUi روی خود فیلد > ۲) این رجیستری (per-xtype) > ۳) DefaultUiModule + CustomUiPrefix
10470
+ *
10471
+ * استراتژی لود (هیچ‌کدام بوت اپ را block نمی‌کنند):
10472
+ * ۱) primeFromCache() — همگام و فوری. کشِ localStorage را می‌خواند و در صورت معتبر بودن
10473
+ * (نسخه‌اش با ChangeKeyVersion فعلی یکی باشد) بلافاصله روی BarsaApi.CustomUiMap می‌گذارد.
10474
+ * از دومین بار به بعدِ اجرای اپ، اولین رندر هم رجیستریِ درست را می‌بیند — بدون هیچ شبکه‌ای.
10475
+ * ۲) refresh() — ناهمگام و fire-and-forget؛ هرگز نباید await شود. روی موفقیت هم مپِ زنده
10476
+ * و هم کش را آپدیت می‌کند. روی خطا (تایم‌اوت، قطعی شبکه، ...) هیچ‌چیز را پاک نمی‌کند —
10477
+ * یعنی یک خطای گذرا، رجیستریِ سالمِ قبلی (کش‌شده یا زنده) را از بین نمی‌برد.
10478
+ */
10479
+ class CustomUiRegistryService {
10480
+ constructor() {
10481
+ this._log = inject(LogService);
10482
+ this._localStorage = inject(LocalStorageService);
10483
+ this._loaded = false;
10484
+ }
10485
+ /** نام BL method سمت سرور. در صورت متفاوت‌بودن، همین‌جا تغییرش بده. */
10486
+ static { this.BL_METHOD = 'TarahiOlgo_GetComponentRegistry'; }
10487
+ static { this.CACHE_KEY = 'CUSTOM_UI_REGISTRY_CACHE'; }
10488
+ /** true اگر رجیستری در همین session با موفقیت از سرور تازه شده باشد. */
10489
+ get isLoaded() {
10490
+ return this._loaded;
10491
+ }
10492
+ /**
10493
+ * همگام: کشِ محلیِ معتبر را (در صورت وجود) فوری روی BarsaApi.CustomUiMap اعمال می‌کند.
10494
+ * باید همیشه قبل از اولین رندرِ فرم‌ها صدا زده شود (مثلاً بعد از loadServerStartupData
10495
+ * در AppInitializer)، ولی خودش هیچ کار شبکه‌ای انجام نمی‌دهد پس بوت را کند نمی‌کند.
10496
+ */
10497
+ primeFromCache() {
10498
+ const raw = this._localStorage.getItem(CustomUiRegistryService.CACHE_KEY);
10499
+ if (!raw) {
10500
+ return;
10501
+ }
10502
+ try {
10503
+ const cached = JSON.parse(raw);
10504
+ if (!cached?.data || typeof cached.data !== 'object') {
10505
+ return;
10506
+ }
10507
+ if (cached.v !== this._currentVersion) {
10508
+ // متادیتای سرور از آخرین کش عوض شده → به کش قدیمی اعتماد نکن، منتظر refresh بمان
10509
+ return;
10510
+ }
10511
+ BarsaApi.CustomUiMap = cached.data;
10512
+ }
10513
+ catch (err) {
10514
+ this._log.error('CustomUiRegistry primeFromCache: invalid cache', err);
10515
+ }
10516
+ }
10517
+ /**
10518
+ * ناهمگام و fire-and-forget. هرگز نباید توی زنجیره‌ی AppInitializer await شود —
10519
+ * اگر سرور دیر جواب بدهد یا اصلاً جواب ندهد (بدون timeout داخلی در RunBlMethodAsync)،
10520
+ * اپ نباید معطلش بماند؛ فقط CustomUiMap دیرتر (یا هیچ‌وقت در آن session) تازه می‌شود.
10521
+ */
10522
+ refresh() {
10523
+ try {
10524
+ BarsaApi.Bw.RunBlMethodAsync({
10525
+ Method: CustomUiRegistryService.BL_METHOD,
10526
+ SuccessFn: (data) => {
10527
+ const parsed = this._parse(data);
10528
+ if (!parsed) {
10529
+ return;
10530
+ }
10531
+ BarsaApi.CustomUiMap = parsed;
10532
+ this._loaded = true;
10533
+ this._persist(parsed);
10534
+ },
10535
+ FailFn: (err) => {
10536
+ this._log.error('CustomUiRegistry refresh failed', err);
10537
+ // عمداً چیزی پاک نمی‌شود؛ کش/مپ قبلی (اگر بود) دست‌نخورده می‌ماند
10538
+ },
10539
+ doReturn: () => { }
10540
+ });
10541
+ }
10542
+ catch (err) {
10543
+ this._log.error('CustomUiRegistry refresh threw', err);
10544
+ }
10545
+ }
10546
+ get _currentVersion() {
10547
+ return BarsaApi.LoginFormData?.ChangeKeyVersion ?? '';
10548
+ }
10549
+ _parse(data) {
10550
+ try {
10551
+ const parsed = typeof data === 'string' ? JSON.parse(data) : data;
10552
+ return parsed && typeof parsed === 'object' ? parsed : null;
10553
+ }
10554
+ catch (err) {
10555
+ this._log.error('CustomUiRegistry: invalid JSON from server', err);
10556
+ return null;
10557
+ }
10558
+ }
10559
+ _persist(data) {
10560
+ try {
10561
+ const cache = { v: this._currentVersion, data };
10562
+ this._localStorage.setItem(CustomUiRegistryService.CACHE_KEY, JSON.stringify(cache));
10563
+ }
10564
+ catch (err) {
10565
+ this._log.error('CustomUiRegistry: failed to persist cache', err);
10566
+ }
10567
+ }
10568
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomUiRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10569
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomUiRegistryService, providedIn: 'root' }); }
10570
+ }
10571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CustomUiRegistryService, decorators: [{
10572
+ type: Injectable,
10573
+ args: [{ providedIn: 'root' }]
10574
+ }] });
10575
+
10399
10576
  class FieldBaseComponent extends BaseComponent {
10400
10577
  get customFieldInfo() {
10401
10578
  return this.context.Setting.CustomFieldInfo;
@@ -11057,7 +11234,9 @@ class ReportBaseComponent extends BaseComponent {
11057
11234
  }
11058
11235
  applyGroupby() {
11059
11236
  const sortList = BarsaApi.Common.Util.TryGetValue(this.context, 'Setting.View.GridSetting.SortSettingList', []);
11060
- this.groupbySource.next(sortList.filter((c) => c.IsGrouped));
11237
+ const grouped = sortList.filter((c) => c.IsGrouped);
11238
+ this.groupbySource.next(grouped);
11239
+ this._ulvMainService.setReorderGroupby(grouped);
11061
11240
  }
11062
11241
  _raiseRowClick(index, mo) {
11063
11242
  this.context?.fireEvent('rowdblclick', this.context, index, mo);
@@ -12144,7 +12323,7 @@ class ReportViewBaseComponent extends BaseComponent {
12144
12323
  this.rowIndicator = Number(columns[0].MetaFieldTypeId) === 41;
12145
12324
  }
12146
12325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ReportViewBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: ReportViewBaseComponent, isStandalone: false, selector: "bnrc-report-view-base", inputs: { contextView: "contextView", viewSetting: "viewSetting", allColumns: "allColumns", isCheckList: "isCheckList", simpleInlineEdit: "simpleInlineEdit", alternateRowMode: "alternateRowMode", inlineEditWithoutSelection: "inlineEditWithoutSelection", hideToolbar: "hideToolbar", hideTitle: "hideTitle", toolbarButtons: "toolbarButtons", allChecked: "allChecked", moDataList: "moDataList", UlvMainCtrlr: "UlvMainCtrlr", access: "access", groupby: "groupby", selectedCount: "selectedCount", conditionalFormats: "conditionalFormats", parentHeight: "parentHeight", deviceName: "deviceName", deviceSize: "deviceSize", contextMenuItems: "contextMenuItems", columns: "columns", allowInlineEdit: "allowInlineEdit", secondaryColumns: "secondaryColumns", popin: "popin", customFieldInfo: "customFieldInfo", hasSummary: "hasSummary", layoutInfo: "layoutInfo", hasSelected: "hasSelected", hideIcon: "hideIcon", columnsCount: "columnsCount", hideOpenIcon: "hideOpenIcon", openOnClick: "openOnClick", typeDefId: "typeDefId", reportId: "reportId", listEditViewId: "listEditViewId", typeViewId: "typeViewId", extraRelation: "extraRelation", relationList: "relationList", disableResponsive: "disableResponsive", rowItem: "rowItem", mobileOrTablet: "mobileOrTablet", inDialog: "inDialog", isMultiSelect: "isMultiSelect", fullscreen: "fullscreen", hideSearchpanel: "hideSearchpanel", newInlineEditMo: "newInlineEditMo", selectedMo: "selectedMo", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", rowHoverable: "rowHoverable", groupSummary: "groupSummary", tlbButtons: "tlbButtons", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", rowActivable: "rowActivable", isReportPage: "isReportPage", ulvHeightSizeType: "ulvHeightSizeType", contentHeight: "contentHeight", alternateEditObjectColumn: "alternateEditObjectColumn", disableHyperLink: "disableHyperLink", columnsHyperLink: "columnsHyperLink", effectiveReportLayout: "effectiveReportLayout", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", contextSetting: "contextSetting", gridFreeColumnSizing: "gridFreeColumnSizing", navigationArrow: "navigationArrow", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo", pagingSetting: "pagingSetting", minEmptyRows: "minEmptyRows", containerWidth: "containerWidth" }, outputs: { columnSummary: "columnSummary", escapeKey: "escapeKey", resetWorkflowState: "resetWorkflowState", deselectAll: "deselectAll", editFormPanelCancel: "editFormPanelCancel", editFormPanelSave: "editFormPanelSave", selectNextInlineRecord: "selectNextInlineRecord", editFormPanelValueChange: "editFormPanelValueChange", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", workflowShareButtons: "workflowShareButtons", sortDescending: "sortDescending", filter: "filter", executeToolbarButton: "executeToolbarButton", resetGridSettings: "resetGridSettings", sortSettingsChange: "sortSettingsChange", rowCheck: "rowCheck", rowClick: "rowClick", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", allCheckbox: "allCheckbox", mandatory: "mandatory", columnResized: "columnResized", hasDetailsInRow: "hasDetailsInRow" }, host: { properties: { "class.report-view": "this._reportView", "style.visibility": "this._visibility" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: ReportViewBaseComponent, isStandalone: false, selector: "bnrc-report-view-base", inputs: { contextView: "contextView", viewSetting: "viewSetting", allColumns: "allColumns", isCheckList: "isCheckList", simpleInlineEdit: "simpleInlineEdit", alternateRowMode: "alternateRowMode", inlineEditWithoutSelection: "inlineEditWithoutSelection", hideToolbar: "hideToolbar", hideTitle: "hideTitle", toolbarButtons: "toolbarButtons", allChecked: "allChecked", moDataList: "moDataList", UlvMainCtrlr: "UlvMainCtrlr", access: "access", allowRecordReorder: "allowRecordReorder", groupby: "groupby", selectedCount: "selectedCount", conditionalFormats: "conditionalFormats", parentHeight: "parentHeight", deviceName: "deviceName", deviceSize: "deviceSize", contextMenuItems: "contextMenuItems", columns: "columns", allowInlineEdit: "allowInlineEdit", secondaryColumns: "secondaryColumns", popin: "popin", customFieldInfo: "customFieldInfo", hasSummary: "hasSummary", layoutInfo: "layoutInfo", hasSelected: "hasSelected", hideIcon: "hideIcon", columnsCount: "columnsCount", hideOpenIcon: "hideOpenIcon", openOnClick: "openOnClick", typeDefId: "typeDefId", reportId: "reportId", listEditViewId: "listEditViewId", typeViewId: "typeViewId", extraRelation: "extraRelation", relationList: "relationList", disableResponsive: "disableResponsive", rowItem: "rowItem", mobileOrTablet: "mobileOrTablet", inDialog: "inDialog", isMultiSelect: "isMultiSelect", fullscreen: "fullscreen", hideSearchpanel: "hideSearchpanel", newInlineEditMo: "newInlineEditMo", selectedMo: "selectedMo", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", rowHoverable: "rowHoverable", groupSummary: "groupSummary", tlbButtons: "tlbButtons", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", rowActivable: "rowActivable", isReportPage: "isReportPage", ulvHeightSizeType: "ulvHeightSizeType", contentHeight: "contentHeight", alternateEditObjectColumn: "alternateEditObjectColumn", disableHyperLink: "disableHyperLink", columnsHyperLink: "columnsHyperLink", effectiveReportLayout: "effectiveReportLayout", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", contextSetting: "contextSetting", gridFreeColumnSizing: "gridFreeColumnSizing", navigationArrow: "navigationArrow", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo", pagingSetting: "pagingSetting", minEmptyRows: "minEmptyRows", containerWidth: "containerWidth" }, outputs: { columnSummary: "columnSummary", escapeKey: "escapeKey", resetWorkflowState: "resetWorkflowState", deselectAll: "deselectAll", editFormPanelCancel: "editFormPanelCancel", editFormPanelSave: "editFormPanelSave", selectNextInlineRecord: "selectNextInlineRecord", editFormPanelValueChange: "editFormPanelValueChange", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", workflowShareButtons: "workflowShareButtons", sortDescending: "sortDescending", filter: "filter", executeToolbarButton: "executeToolbarButton", resetGridSettings: "resetGridSettings", sortSettingsChange: "sortSettingsChange", rowCheck: "rowCheck", rowClick: "rowClick", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", allCheckbox: "allCheckbox", mandatory: "mandatory", columnResized: "columnResized", hasDetailsInRow: "hasDetailsInRow" }, host: { properties: { "class.report-view": "this._reportView", "style.visibility": "this._visibility" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12148
12327
  }
12149
12328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ReportViewBaseComponent, decorators: [{
12150
12329
  type: Component,
@@ -12188,6 +12367,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
12188
12367
  type: Input
12189
12368
  }], access: [{
12190
12369
  type: Input
12370
+ }], allowRecordReorder: [{
12371
+ type: Input
12191
12372
  }], groupby: [{
12192
12373
  type: Input
12193
12374
  }], selectedCount: [{
@@ -15655,7 +15836,7 @@ class RootPortalComponent extends PageBaseComponent {
15655
15836
  </div>
15656
15837
  </div>
15657
15838
  }
15658
- <section loadExternalFiles class="tw-invisible section" id="mainpage" #sectionRef>
15839
+ <section loadExternalFiles class="section" id="mainpage" #sectionRef>
15659
15840
  <div #containerRef></div>
15660
15841
  </section>
15661
15842
  <div class="page-wrapper">
@@ -15736,7 +15917,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
15736
15917
  </div>
15737
15918
  </div>
15738
15919
  }
15739
- <section loadExternalFiles class="tw-invisible section" id="mainpage" #sectionRef>
15920
+ <section loadExternalFiles class="section" id="mainpage" #sectionRef>
15740
15921
  <div #containerRef></div>
15741
15922
  </section>
15742
15923
  <div class="page-wrapper">
@@ -16351,6 +16532,8 @@ class RenderUlvPaginDirective extends BaseDirective {
16351
16532
  if (context) {
16352
16533
  const customUiSetting = BarsaApi.Common.Util.TryGetValue(context.Setting, 'ClassNames.CustomUi', null);
16353
16534
  const component = getComponentDefined(context, customUiSetting);
16535
+ component.Name = 'UlvPaging';
16536
+ component.Selector = 'bsu-ulv-paging';
16354
16537
  this._portalService
16355
16538
  .getComponent(component, this._injector, this._environmentInjector)
16356
16539
  .pipe(takeUntil(this._onDestroy$), delay(0), tap((component) => {
@@ -18210,6 +18393,12 @@ class MoLinkerDirective extends BaseDirective {
18210
18393
  }
18211
18394
  // گوش دادن به رویداد کلیک
18212
18395
  onClick(event) {
18396
+ // وقتی لینک غیرفعال است (مثلاً حالت inline-edit) اصلاً هایپرلینکی وجود ندارد،
18397
+ // پس نباید preventDefault کنیم؛ در غیر این‌صورت اکشن پیش‌فرضِ کلیک‌های داخلی مثل
18398
+ // باز شدن دیالوگ انتخاب فایل (input[type=file].click()) کنسل می‌شود.
18399
+ if (this.disableHyperLink()) {
18400
+ return;
18401
+ }
18213
18402
  if (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button === 0) {
18214
18403
  event.preventDefault();
18215
18404
  }
@@ -19261,16 +19450,17 @@ class ResizableDirective {
19261
19450
  */
19262
19451
  constructor() {
19263
19452
  this.resizableComplete = new EventEmitter();
19453
+ this.resizableStart = new EventEmitter();
19264
19454
  this.documentRef = inject(DOCUMENT);
19265
19455
  this.elementRef = inject(ElementRef);
19266
- this.resizable = fromEvent(this.elementRef.nativeElement, 'mousedown').pipe(tap((e) => e.preventDefault()), switchMap$1(() => {
19456
+ this.resizable = fromEvent(this.elementRef.nativeElement, 'mousedown').pipe(tap((e) => e.preventDefault()), tap(() => this.resizableStart.emit()), switchMap$1(() => {
19267
19457
  const elDom = this.elementRef.nativeElement;
19268
19458
  const { width, right, left } = elDom.closest('th').getBoundingClientRect();
19269
19459
  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()))));
19270
19460
  }));
19271
19461
  }
19272
19462
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19273
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.17", type: ResizableDirective, isStandalone: false, selector: "[resizable]", inputs: { rtl: "rtl" }, outputs: { resizableComplete: "resizableComplete", resizable: "resizable" }, ngImport: i0 }); }
19463
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.17", type: ResizableDirective, isStandalone: false, selector: "[resizable]", inputs: { rtl: "rtl" }, outputs: { resizableComplete: "resizableComplete", resizableStart: "resizableStart", resizable: "resizable" }, ngImport: i0 }); }
19274
19464
  }
19275
19465
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ResizableDirective, decorators: [{
19276
19466
  type: Directive,
@@ -19282,6 +19472,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
19282
19472
  type: Input
19283
19473
  }], resizableComplete: [{
19284
19474
  type: Output
19475
+ }], resizableStart: [{
19476
+ type: Output
19285
19477
  }], resizable: [{
19286
19478
  type: Output
19287
19479
  }] } });
@@ -19290,6 +19482,7 @@ class ResizableComponent {
19290
19482
  constructor() {
19291
19483
  this.widthChange = new EventEmitter();
19292
19484
  this.widthChanging = new EventEmitter();
19485
+ this.widthChangeStart = new EventEmitter();
19293
19486
  this._el = inject(ElementRef);
19294
19487
  this._renderer2 = inject(Renderer2);
19295
19488
  }
@@ -19298,11 +19491,11 @@ class ResizableComponent {
19298
19491
  this.widthChanging.emit(width);
19299
19492
  }
19300
19493
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ResizableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19301
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: ResizableComponent, isStandalone: false, selector: "th[resizable]", inputs: { disableResize: "disableResize", rtl: "rtl" }, outputs: { widthChange: "widthChange", widthChanging: "widthChanging" }, ngImport: i0, template: "<div class=\"wrapper\" [style.justify-content]=\"disableResize ? 'center' : 'flex-end'\">\r\n <div class=\"content tw-flex\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n [style.pointer-events]=\"disableResize ? 'none' : 'auto'\"\r\n class=\"bar\"\r\n [class.rtl]=\"rtl\"\r\n (resizable)=\"onResize($event)\"\r\n [rtl]=\"rtl\"\r\n (resizableComplete)=\"widthChange.emit()\"\r\n ></div>\r\n</div>\r\n", styles: [".wrapper{display:flex}.content{flex:1;min-width:0}.bar{position:absolute;z-index:2;top:0;bottom:0;width:2px;margin:0 -.5rem 0 .5rem;justify-self:flex-start;border-left:2px solid transparent;border-right:2px solid transparent;background:#8a2be2;cursor:col-resize;opacity:0;transition:opacity .3s}.bar.rtl{margin:0 0 0 -.5rem}.bar:hover,.bar:active{opacity:1}\n"], dependencies: [{ kind: "directive", type: ResizableDirective, selector: "[resizable]", inputs: ["rtl"], outputs: ["resizableComplete", "resizable"] }] }); }
19494
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: ResizableComponent, isStandalone: false, selector: "th[resizable]", inputs: { disableResize: "disableResize", rtl: "rtl" }, outputs: { widthChange: "widthChange", widthChanging: "widthChanging", widthChangeStart: "widthChangeStart" }, ngImport: i0, template: "<div class=\"wrapper\" [style.justify-content]=\"disableResize ? 'center' : 'flex-end'\">\r\n <div class=\"content tw-flex\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n [style.pointer-events]=\"disableResize ? 'none' : 'auto'\"\r\n class=\"bar\"\r\n [class.rtl]=\"rtl\"\r\n (resizable)=\"onResize($event)\"\r\n [rtl]=\"rtl\"\r\n (resizableStart)=\"widthChangeStart.emit()\"\r\n (resizableComplete)=\"widthChange.emit()\"\r\n ></div>\r\n</div>\r\n", styles: [".wrapper{display:flex}.content{flex:1;min-width:0}.bar{position:absolute;z-index:2;top:0;bottom:0;width:2px;margin:0 -.5rem 0 .5rem;justify-self:flex-start;border-left:2px solid transparent;border-right:2px solid transparent;background:#8a2be2;cursor:col-resize;opacity:0;transition:opacity .3s}.bar.rtl{margin:0 0 0 -.5rem}.bar:hover,.bar:active{opacity:1}\n"], dependencies: [{ kind: "directive", type: ResizableDirective, selector: "[resizable]", inputs: ["rtl"], outputs: ["resizableComplete", "resizableStart", "resizable"] }] }); }
19302
19495
  }
19303
19496
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ResizableComponent, decorators: [{
19304
19497
  type: Component,
19305
- args: [{ selector: 'th[resizable]', standalone: false, template: "<div class=\"wrapper\" [style.justify-content]=\"disableResize ? 'center' : 'flex-end'\">\r\n <div class=\"content tw-flex\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n [style.pointer-events]=\"disableResize ? 'none' : 'auto'\"\r\n class=\"bar\"\r\n [class.rtl]=\"rtl\"\r\n (resizable)=\"onResize($event)\"\r\n [rtl]=\"rtl\"\r\n (resizableComplete)=\"widthChange.emit()\"\r\n ></div>\r\n</div>\r\n", styles: [".wrapper{display:flex}.content{flex:1;min-width:0}.bar{position:absolute;z-index:2;top:0;bottom:0;width:2px;margin:0 -.5rem 0 .5rem;justify-self:flex-start;border-left:2px solid transparent;border-right:2px solid transparent;background:#8a2be2;cursor:col-resize;opacity:0;transition:opacity .3s}.bar.rtl{margin:0 0 0 -.5rem}.bar:hover,.bar:active{opacity:1}\n"] }]
19498
+ args: [{ selector: 'th[resizable]', standalone: false, template: "<div class=\"wrapper\" [style.justify-content]=\"disableResize ? 'center' : 'flex-end'\">\r\n <div class=\"content tw-flex\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n [style.pointer-events]=\"disableResize ? 'none' : 'auto'\"\r\n class=\"bar\"\r\n [class.rtl]=\"rtl\"\r\n (resizable)=\"onResize($event)\"\r\n [rtl]=\"rtl\"\r\n (resizableStart)=\"widthChangeStart.emit()\"\r\n (resizableComplete)=\"widthChange.emit()\"\r\n ></div>\r\n</div>\r\n", styles: [".wrapper{display:flex}.content{flex:1;min-width:0}.bar{position:absolute;z-index:2;top:0;bottom:0;width:2px;margin:0 -.5rem 0 .5rem;justify-self:flex-start;border-left:2px solid transparent;border-right:2px solid transparent;background:#8a2be2;cursor:col-resize;opacity:0;transition:opacity .3s}.bar.rtl{margin:0 0 0 -.5rem}.bar:hover,.bar:active{opacity:1}\n"] }]
19306
19499
  }], propDecorators: { disableResize: [{
19307
19500
  type: Input
19308
19501
  }], rtl: [{
@@ -19311,6 +19504,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
19311
19504
  type: Output
19312
19505
  }], widthChanging: [{
19313
19506
  type: Output
19507
+ }], widthChangeStart: [{
19508
+ type: Output
19314
19509
  }] } });
19315
19510
 
19316
19511
  class ResizableModule {
@@ -19902,7 +20097,8 @@ const services = [
19902
20097
  BarsaStorageService,
19903
20098
  ServiceWorkerCommuncationService,
19904
20099
  ApplicationCtrlrService,
19905
- PushNotificationService
20100
+ PushNotificationService,
20101
+ CustomUiRegistryService
19906
20102
  ];
19907
20103
  const pipes = [
19908
20104
  NumeralPipe,
@@ -20017,18 +20213,27 @@ class BarsaNovinRayCoreModule extends BaseModule {
20017
20213
  ngModule: BarsaNovinRayCoreModule,
20018
20214
  providers: [
20019
20215
  provideAppInitializer(() => {
20020
- const initializerFn = ((portalService, applicationCtrlrService, titleService, promptUpdateService, barsaStorageService, swCommunication, _, router) => () => {
20216
+ const initializerFn = ((portalService, applicationCtrlrService, titleService, promptUpdateService, barsaStorageService, swCommunication, _, router, customUiRegistryService) => () => {
20021
20217
  const inLocalMode = isInLocalMode();
20022
20218
  return portalService
20023
20219
  .loadServerStartupData()
20024
- .then(() => Promise.all([
20025
- functionL1(),
20026
- functionL2(portalService, applicationCtrlrService, titleService)
20027
- ]).finally(() => {
20028
- promptUpdateService.checkForUpdate();
20029
- barsaStorageService.init();
20030
- swCommunication.init();
20031
- }))
20220
+ .then(() => {
20221
+ // همگام و فوری: از کشِ localStorage (اگه معتبر بود) قبل از
20222
+ // اولین رندرِ فرم‌ها روی BarsaApi.CustomUiMap می‌شینه.
20223
+ customUiRegistryService.primeFromCache();
20224
+ // ناهمگام و fire-and-forget: عمداً await/داخل Promise.all
20225
+ // نیست تا اگه سرور دیر جواب بده یا اصلاً جواب نده، بوت اپ
20226
+ // گیر نکنه. جواب که برسه، مپ زنده + کش رو در پس‌زمینه آپدیت می‌کنه.
20227
+ customUiRegistryService.refresh();
20228
+ return Promise.all([
20229
+ functionL1(),
20230
+ functionL2(portalService, applicationCtrlrService, titleService)
20231
+ ]).finally(() => {
20232
+ promptUpdateService.checkForUpdate();
20233
+ barsaStorageService.init();
20234
+ swCommunication.init();
20235
+ });
20236
+ })
20032
20237
  .catch((_) => {
20033
20238
  if (!inLocalMode && !navigator.onLine) {
20034
20239
  console.error('internet is not connected.');
@@ -20039,7 +20244,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
20039
20244
  }
20040
20245
  return Promise.resolve();
20041
20246
  });
20042
- })(inject(PortalService), inject(ApplicationCtrlrService), inject(Title), inject(PromptUpdateService), inject(BarsaStorageService), inject(ServiceWorkerCommuncationService), inject(NetworkStatusService), inject(Router));
20247
+ })(inject(PortalService), inject(ApplicationCtrlrService), inject(Title), inject(PromptUpdateService), inject(BarsaStorageService), inject(ServiceWorkerCommuncationService), inject(NetworkStatusService), inject(Router), inject(CustomUiRegistryService));
20043
20248
  return initializerFn();
20044
20249
  }),
20045
20250
  {
@@ -20393,5 +20598,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
20393
20598
  * Generated bundle index. Do not edit.
20394
20599
  */
20395
20600
 
20396
- export { ColSetting as $, APP_VERSION as A, BaseModule as B, BaseFormToolbaritemPropsComponent as C, DynamicComponentService as D, BaseItemContentPropsComponent as E, BaseReportModel as F, BaseSettingsService as G, BaseUlvSettingComponent as H, BaseViewContentPropsComponent as I, BaseViewItemPropsComponent as J, BaseViewPropsComponent as K, BbbTranslatePipe as L, BodyClickDirective as M, BoolControlInfoModel as N, BreadcrumbService as O, ButtonLoadingComponent as P, CalculateControlInfoModel as Q, ReportEmptyPageComponent as R, CalendarSettingsStore as S, CanUploadFilePipe as T, CardBaseItemContentPropsComponent as U, CardDynamicItemComponent as V, CardMediaSizePipe as W, CardViewService as X, ChangeLayoutInfoCustomUi as Y, ChunkArrayPipe as Z, CodeEditorControlInfoModel as _, AbsoluteDivBodyDirective as a, FilePictureInfoModel as a$, ColumnCustomComponentPipe as a0, ColumnCustomUiPipe as a1, ColumnIconPipe as a2, ColumnRendererBase as a3, ColumnRendererViewBase as a4, ColumnResizerDirective as a5, ColumnService as a6, ColumnValueDirective as a7, ColumnValueOfParametersPipe as a8, ColumnValuePipe as a9, DynamicFormComponent as aA, DynamicFormToolbaritemComponent as aB, DynamicItemComponent as aC, DynamicLayoutComponent as aD, DynamicRootVariableDirective as aE, DynamicStyleDirective as aF, DynamicUlvPagingComponent as aG, DynamicUlvToolbarComponent as aH, EllapsisTextDirective as aI, EllipsifyDirective as aJ, EmptyPageComponent as aK, EmptyPageWithRouterAndRouterOutletComponent as aL, EntitySettingsStore as aM, EnumCaptionPipe as aN, EnumControlInfoModel as aO, ExecuteDynamicCommand as aP, ExecuteWorkflowChoiceDef as aQ, ExistsColumnsPipe as aR, FORM_DIALOG_COMPONENT as aS, FieldBaseComponent as aT, FieldBaseController as aU, FieldDirective as aV, FieldInfoTypeEnum as aW, FieldUiComponent as aX, FieldViewBase as aY, FileControlInfoModel as aZ, FileInfoCountPipe as a_, ComboRowImagePipe as aa, CommandControlInfoModel as ab, ContainerComponent as ac, ContainerService as ad, ContextMenuPipe as ae, ControlUiPipe as af, ConvertToStylePipe as ag, CopyDirective as ah, CountDownDirective as ai, CustomCommand as aj, CustomInjector as ak, CustomRouteReuseStrategy as al, DEFAULT_REPORT_LAYOUT_POLICY as am, DIALOG_SERVICE as an, DateHijriService as ao, DateMiladiService as ap, DateRanges as aq, DateService as ar, DateShamsiService as as, DateTimeControlInfoModel as at, DefaultCommandsAccessValue as au, DefaultGridSetting as av, DeviceWidth as aw, DialogParams as ax, DynamicCommandDirective as ay, DynamicDarkColorPipe as az, AddDynamicFormStyles as b, LabelStarTrimPipe as b$, FilesValidationHelper as b0, FillAllLayoutControls as b1, FillEmptySpaceDirective as b2, FilterColumnsByDetailsPipe as b3, FilterInlineActionListPipe as b4, FilterPipe as b5, FilterStringPipe as b6, FilterTabPipe as b7, FilterToolbarControlPipe as b8, FilterWorkflowInMobilePipe as b9, GetImgTags as bA, GetViewableExtensions as bB, GetVisibleValue as bC, GridSetting as bD, GroupBy as bE, GroupByPipe as bF, GroupByService as bG, HeaderFacetValuePipe as bH, HideAcceptCancelButtonsPipe as bI, HideColumnsInmobilePipe as bJ, HistoryControlInfoModel as bK, HorizontalLayoutService as bL, HorizontalResponsiveDirective as bM, IconControlInfoModel as bN, IdbService as bO, ImageLazyDirective as bP, ImageMimeType as bQ, ImagetoPrint as bR, InMemoryStorageService as bS, IndexedDbService as bT, InputNumber as bU, IntersectionObserverDirective as bV, IntersectionStatus as bW, IsDarkMode as bX, IsExpandedNodePipe as bY, IsImagePipe as bZ, ItemsRendererDirective as b_, FindColumnByDbNamePipe as ba, FindColumnsPipe as bb, FindGroup as bc, FindLayoutSettingFromLayout94 as bd, FindPreviewColumnPipe as be, FindToolbarItem as bf, FioriIconPipe as bg, FormBaseComponent as bh, FormCloseDirective as bi, FormComponent as bj, FormFieldReportPageComponent as bk, FormNewComponent as bl, FormPageBaseComponent as bm, FormPageComponent as bn, FormPanelService as bo, FormPropsBaseComponent as bp, FormService as bq, FormToolbarBaseComponent as br, FormToolbarButton as bs, GaugeControlInfoModel as bt, GeneralControlInfoModel as bu, GetAllColumnsSorted as bv, GetAllHorizontalFromLayout94 as bw, GetContentType as bx, GetCssVariableValuePipe as by, GetDefaultMoObjectInfo as bz, AffixRespondEvents as c, PushCheckService as c$, LabelmandatoryDirective as c0, LayoutItemBaseComponent as c1, LayoutMainContentService as c2, LayoutPanelBaseComponent as c3, LayoutService as c4, LeafletLongPressDirective as c5, LinearListControlInfoModel as c6, LinearListHelper as c7, ListCountPipe as c8, ListRelationModel as c9, NotificationService as cA, NowraptextDirective as cB, NumberBaseComponent as cC, NumberControlInfoModel as cD, NumbersOnlyInputDirective as cE, NumeralPipe as cF, OverflowTextDirective as cG, PageBaseComponent as cH, PageWithFormHandlerBaseComponent as cI, PdfMimeType as cJ, PictureFieldSourcePipe as cK, PictureFileControlInfoModel as cL, PicturesByGroupIdPipe as cM, PlaceHolderDirective as cN, PortalDynamicPageResolver as cO, PortalFormPageResolver as cP, PortalPageComponent as cQ, PortalPageResolver as cR, PortalPageSidebarComponent as cS, PortalReportPageResolver as cT, PortalService as cU, PreventDefaulEvent as cV, PreventDefaultDirective as cW, PrintFilesDirective as cX, PrintImage as cY, PromptUpdateService as cZ, PushBannerComponent as c_, LoadExternalFilesDirective as ca, LocalStorageService as cb, LogService as cc, LoginSettingsResolver as cd, MapToChatMessagePipe as ce, MasterDetailsPageComponent as cf, MeasureFormTitleWidthDirective as cg, MergeFieldsToColumnsPipe as ch, MetaobjectDataModel as ci, MetaobjectRelationModel as cj, MimeTypes as ck, MoForReportModel as cl, MoForReportModelBase as cm, MoInfoUlvMoListPipe as cn, MoInfoUlvPagingPipe as co, MoLinkerDirective as cp, MoReportValueConcatPipe as cq, MoReportValuePipe as cr, MoValuePipe as cs, MobileDirective as ct, ModalRootComponent as cu, MultipleGroupByPipe as cv, NOTIFICATAION_POPUP_SERVER as cw, NOTIFICATION_WEBWORKER_FACTORY as cx, NetworkStatusService as cy, NotFoundComponent as cz, AllFilesMimeType as d, SimpleTemplateEngine as d$, PushNotificationService as d0, REPORT_GRID_VIEWPORT_CLASS as d1, REPORT_TYPE_DEFAULT_POLICIES as d2, RUNTIME_NAV_STATE_SCHEMA_V1 as d3, RabetehAkseTakiListiControlInfoModel as d4, RedirectHomeGuard as d5, RelatedReportControlInfoModel as d6, RelationListControlInfoModel as d7, RemoveDynamicFormStyles as d8, RemoveNewlinePipe as d9, ReversePipe as dA, RichStringControlInfoModel as dB, RootPageComponent as dC, RootPortalComponent as dD, RotateImage as dE, RouteFormChangeDirective as dF, RoutingService as dG, RowDataOption as dH, RowNumberPipe as dI, RowState as dJ, RuntimeNavStateCacheService as dK, SafeBottomDirective as dL, SanitizeTextPipe as dM, SaveImageDirective as dN, SaveImageToFile as dO, SaveScrollPositionService as dP, ScopedCssPipe as dQ, ScrollLayoutContextHolder as dR, ScrollPersistDirective as dS, ScrollToSelectedDirective as dT, SelectionMode as dU, SeperatorFixPipe as dV, ServiceWorkerCommuncationService as dW, ServiceWorkerNotificationService as dX, ShellbarHeightService as dY, ShortcutHandlerDirective as dZ, ShortcutRegisterDirective as d_, RenderUlvDirective as da, RenderUlvPaginDirective as db, RenderUlvViewerDirective as dc, ReplacePipe as dd, ReportActionListPipe as de, ReportBaseComponent as df, ReportBaseInfo as dg, ReportBreadcrumbResolver as dh, ReportCalendarModel as di, ReportContainerComponent as dj, ReportExtraInfo as dk, ReportField as dl, ReportFormModel as dm, ReportItemBaseComponent as dn, ReportListModel as dp, ReportModel as dq, ReportNavigatorComponent as dr, ReportTreeModel as ds, ReportViewBaseComponent as dt, ReportViewColumn as du, ResizableComponent as dv, ResizableDirective as dw, ResizableModule as dx, ResizeHandlerDirective as dy, ResizeObserverDirective as dz, AnchorScrollDirective as e, forbiddenValidator as e$, SimplebarDirective as e0, SingleRelationControlInfoModel as e1, SortDirection as e2, SortPipe as e3, SortSetting as e4, SplideSliderDirective as e5, SplitPipe as e6, SplitterComponent as e7, StopPropagationDirective as e8, StringControlInfoModel as e9, WebOtpDirective as eA, WordMimeType as eB, WorfkflowwChoiceCommandDirective as eC, addCssVariableToRoot as eD, addDynamicVariableTo as eE, availablePrefixes as eF, bodyClick as eG, buildRuntimeNavStateCacheKey as eH, calcContextMenuWidth as eI, calculateColumnContent as eJ, calculateColumnWidth as eK, calculateColumnWidthFitToContainer as eL, calculateFreeColumnSize as eM, calculateMoDataListContentWidthByColumnName as eN, cancelRequestAnimationFrame as eO, checkPermission as eP, compareVersions as eQ, contextDefaultsFromEnvironment as eR, createFormPanelMetaConditions as eS, createGridEditorFormPanel as eT, easeInOutCubic as eU, elementInViewport2 as eV, enumValueToStringSize as eW, executeUlvCommandHandler as eX, extractLayoutPolicyFromView as eY, fixUnclosedParentheses as eZ, flattenTree as e_, StringToNumberPipe as ea, SubformControlInfoModel as eb, SystemBaseComponent as ec, TEMPLATE_ENGINE as ed, TOAST_SERVICE as ee, TableHeaderWidthMode as ef, TableResizerDirective as eg, TabpageService as eh, ThImageOrIconePipe as ei, TileGroupBreadcrumResolver as ej, TilePropsComponent as ek, TlbButtonsPipe as el, ToolbarSettingsPipe as em, TooltipDirective as en, TotalSummaryPipe as eo, UiService as ep, UlvCommandDirective as eq, UlvHeightSizeType as er, UlvMainService as es, UnlimitSessionComponent as et, UntilInViewDirective as eu, UploadService as ev, VideoMimeType as ew, VideoRecordingService as ex, ViewBase as ey, VisibleValuePipe as ez, formRoutes as f, toNumber as f$, formatBytes as f0, fromEntries as f1, fromIntersectionObserver as f2, genrateInlineMoId as f3, getAllItemsPerChildren as f4, getColumnValueOfMoDataList as f5, getComponentDefined as f6, getControlList as f7, getControlSizeMode as f8, getDateService as f9, isImage as fA, isInLocalMode as fB, isSafari as fC, isTargetWindow as fD, isVersionBiggerThan as fE, measureText as fF, measureText2 as fG, measureTextBy as fH, mobile_regex as fI, multilevelSort as fJ, nullOrUndefinedString as fK, number_only as fL, removeDynamicStyle as fM, requestAnimationFramePolyfill as fN, resolveFinalScroll as fO, resolveReportLayoutPolicy as fP, scrollLayoutModeToContextEnvironment as fQ, scrollToElement as fR, searchEx as fS, setColumnWidthByMaxMoContentWidth as fT, setOneDepthLevel as fU, setTableThWidth as fV, shallowEqual as fW, sort as fX, sortEx as fY, stopPropagation as fZ, throwIfAlreadyLoaded as f_, getDeviceIsDesktop as fa, getDeviceIsMobile as fb, getDeviceIsPhone as fc, getDeviceIsTablet as fd, getFieldValue as fe, getFocusableTagNames as ff, getFormSettings as fg, getGridSettings as fh, getHeaderValue as fi, getIcon as fj, getImagePath as fk, getLabelWidth as fl, getLayout94ObjectInfo as fm, getLayoutControl as fn, getNestedValue as fo, getNewMoGridEditor as fp, getParentHeight as fq, getReportTypeDefaultPolicy as fr, getRequestAnimationFrame as fs, getResetGridSettings as ft, getTargetRect as fu, getUniqueId as fv, getValidExtension as fw, isFF as fx, isFirefox as fy, isFunction as fz, ApiService as g, validateAllFormFields as g0, ApplicationBaseComponent as h, ApplicationCtrlrService as i, AttrRtlDirective as j, AudioMimeType as k, AudioRecordingService as l, AuthGuard as m, BarsaApi as n, BarsaDialogService as o, BarsaIconDictPipe as p, BarsaNovinRayCoreModule as q, reportRoutes as r, BarsaReadonlyDirective as s, BarsaSapUiFormPageModule as t, BarsaStorageService as u, BaseColumnPropsComponent as v, BaseComponent as w, BaseController as x, BaseDirective as y, BaseDynamicComponent as z };
20397
- //# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-CGp55b2N.mjs.map
20601
+ export { ColSetting as $, APP_VERSION as A, BaseModule as B, BaseFormToolbaritemPropsComponent as C, DynamicComponentService as D, BaseItemContentPropsComponent as E, BaseReportModel as F, BaseSettingsService as G, BaseUlvSettingComponent as H, BaseViewContentPropsComponent as I, BaseViewItemPropsComponent as J, BaseViewPropsComponent as K, BbbTranslatePipe as L, BodyClickDirective as M, BoolControlInfoModel as N, BreadcrumbService as O, ButtonLoadingComponent as P, CalculateControlInfoModel as Q, ReportEmptyPageComponent as R, CalendarSettingsStore as S, CanUploadFilePipe as T, CardBaseItemContentPropsComponent as U, CardDynamicItemComponent as V, CardMediaSizePipe as W, CardViewService as X, ChangeLayoutInfoCustomUi as Y, ChunkArrayPipe as Z, CodeEditorControlInfoModel as _, AbsoluteDivBodyDirective as a, FileInfoCountPipe as a$, ColumnCustomComponentPipe as a0, ColumnCustomUiPipe as a1, ColumnIconPipe as a2, ColumnRendererBase as a3, ColumnRendererViewBase as a4, ColumnResizerDirective as a5, ColumnService as a6, ColumnValueDirective as a7, ColumnValueOfParametersPipe as a8, ColumnValuePipe as a9, DynamicDarkColorPipe as aA, DynamicFormComponent as aB, DynamicFormToolbaritemComponent as aC, DynamicItemComponent as aD, DynamicLayoutComponent as aE, DynamicRootVariableDirective as aF, DynamicStyleDirective as aG, DynamicUlvPagingComponent as aH, DynamicUlvToolbarComponent as aI, EllapsisTextDirective as aJ, EllipsifyDirective as aK, EmptyPageComponent as aL, EmptyPageWithRouterAndRouterOutletComponent as aM, EntitySettingsStore as aN, EnumCaptionPipe as aO, EnumControlInfoModel as aP, ExecuteDynamicCommand as aQ, ExecuteWorkflowChoiceDef as aR, ExistsColumnsPipe as aS, FORM_DIALOG_COMPONENT as aT, FieldBaseComponent as aU, FieldBaseController as aV, FieldDirective as aW, FieldInfoTypeEnum as aX, FieldUiComponent as aY, FieldViewBase as aZ, FileControlInfoModel as a_, ComboRowImagePipe as aa, CommandControlInfoModel as ab, ContainerComponent as ac, ContainerService as ad, ContextMenuPipe as ae, ControlUiPipe as af, ConvertToStylePipe as ag, CopyDirective as ah, CountDownDirective as ai, CustomCommand as aj, CustomInjector as ak, CustomRouteReuseStrategy as al, CustomUiRegistryService as am, DEFAULT_REPORT_LAYOUT_POLICY as an, DIALOG_SERVICE as ao, DateHijriService as ap, DateMiladiService as aq, DateRanges as ar, DateService as as, DateShamsiService as at, DateTimeControlInfoModel as au, DefaultCommandsAccessValue as av, DefaultGridSetting as aw, DeviceWidth as ax, DialogParams as ay, DynamicCommandDirective as az, AddDynamicFormStyles as b, ItemsRendererDirective as b$, FilePictureInfoModel as b0, FilesValidationHelper as b1, FillAllLayoutControls as b2, FillEmptySpaceDirective as b3, FilterColumnsByDetailsPipe as b4, FilterInlineActionListPipe as b5, FilterPipe as b6, FilterStringPipe as b7, FilterTabPipe as b8, FilterToolbarControlPipe as b9, GetDefaultMoObjectInfo as bA, GetImgTags as bB, GetViewableExtensions as bC, GetVisibleValue as bD, GridSetting as bE, GroupBy as bF, GroupByPipe as bG, GroupByService as bH, HeaderFacetValuePipe as bI, HideAcceptCancelButtonsPipe as bJ, HideColumnsInmobilePipe as bK, HistoryControlInfoModel as bL, HorizontalLayoutService as bM, HorizontalResponsiveDirective as bN, IconControlInfoModel as bO, IdbService as bP, ImageLazyDirective as bQ, ImageMimeType as bR, ImagetoPrint as bS, InMemoryStorageService as bT, IndexedDbService as bU, InputNumber as bV, IntersectionObserverDirective as bW, IntersectionStatus as bX, IsDarkMode as bY, IsExpandedNodePipe as bZ, IsImagePipe as b_, FilterWorkflowInMobilePipe as ba, FindColumnByDbNamePipe as bb, FindColumnsPipe as bc, FindGroup as bd, FindLayoutSettingFromLayout94 as be, FindPreviewColumnPipe as bf, FindToolbarItem as bg, FioriIconPipe as bh, FormBaseComponent as bi, FormCloseDirective as bj, FormComponent as bk, FormFieldReportPageComponent as bl, FormNewComponent as bm, FormPageBaseComponent as bn, FormPageComponent as bo, FormPanelService as bp, FormPropsBaseComponent as bq, FormService as br, FormToolbarBaseComponent as bs, FormToolbarButton as bt, GaugeControlInfoModel as bu, GeneralControlInfoModel as bv, GetAllColumnsSorted as bw, GetAllHorizontalFromLayout94 as bx, GetContentType as by, GetCssVariableValuePipe as bz, AffixRespondEvents as c, PushBannerComponent as c$, LabelStarTrimPipe as c0, LabelmandatoryDirective as c1, LayoutItemBaseComponent as c2, LayoutMainContentService as c3, LayoutPanelBaseComponent as c4, LayoutService as c5, LeafletLongPressDirective as c6, LinearListControlInfoModel as c7, LinearListHelper as c8, ListCountPipe as c9, NotFoundComponent as cA, NotificationService as cB, NowraptextDirective as cC, NumberBaseComponent as cD, NumberControlInfoModel as cE, NumbersOnlyInputDirective as cF, NumeralPipe as cG, OverflowTextDirective as cH, PageBaseComponent as cI, PageWithFormHandlerBaseComponent as cJ, PdfMimeType as cK, PictureFieldSourcePipe as cL, PictureFileControlInfoModel as cM, PicturesByGroupIdPipe as cN, PlaceHolderDirective as cO, PortalDynamicPageResolver as cP, PortalFormPageResolver as cQ, PortalPageComponent as cR, PortalPageResolver as cS, PortalPageSidebarComponent as cT, PortalReportPageResolver as cU, PortalService as cV, PreventDefaulEvent as cW, PreventDefaultDirective as cX, PrintFilesDirective as cY, PrintImage as cZ, PromptUpdateService as c_, ListRelationModel as ca, LoadExternalFilesDirective as cb, LocalStorageService as cc, LogService as cd, LoginSettingsResolver as ce, MapToChatMessagePipe as cf, MasterDetailsPageComponent as cg, MeasureFormTitleWidthDirective as ch, MergeFieldsToColumnsPipe as ci, MetaobjectDataModel as cj, MetaobjectRelationModel as ck, MimeTypes as cl, MoForReportModel as cm, MoForReportModelBase as cn, MoInfoUlvMoListPipe as co, MoInfoUlvPagingPipe as cp, MoLinkerDirective as cq, MoReportValueConcatPipe as cr, MoReportValuePipe as cs, MoValuePipe as ct, MobileDirective as cu, ModalRootComponent as cv, MultipleGroupByPipe as cw, NOTIFICATAION_POPUP_SERVER as cx, NOTIFICATION_WEBWORKER_FACTORY as cy, NetworkStatusService as cz, AllFilesMimeType as d, ShortcutRegisterDirective as d$, PushCheckService as d0, PushNotificationService as d1, REPORT_GRID_VIEWPORT_CLASS as d2, REPORT_TYPE_DEFAULT_POLICIES as d3, RUNTIME_NAV_STATE_SCHEMA_V1 as d4, RabetehAkseTakiListiControlInfoModel as d5, RedirectHomeGuard as d6, RelatedReportControlInfoModel as d7, RelationListControlInfoModel as d8, RemoveDynamicFormStyles as d9, ResizeObserverDirective as dA, ReversePipe as dB, RichStringControlInfoModel as dC, RootPageComponent as dD, RootPortalComponent as dE, RotateImage as dF, RouteFormChangeDirective as dG, RoutingService as dH, RowDataOption as dI, RowNumberPipe as dJ, RowState as dK, RuntimeNavStateCacheService as dL, SafeBottomDirective as dM, SanitizeTextPipe as dN, SaveImageDirective as dO, SaveImageToFile as dP, SaveScrollPositionService as dQ, ScopedCssPipe as dR, ScrollLayoutContextHolder as dS, ScrollPersistDirective as dT, ScrollToSelectedDirective as dU, SelectionMode as dV, SeperatorFixPipe as dW, ServiceWorkerCommuncationService as dX, ServiceWorkerNotificationService as dY, ShellbarHeightService as dZ, ShortcutHandlerDirective as d_, RemoveNewlinePipe as da, RenderUlvDirective as db, RenderUlvPaginDirective as dc, RenderUlvViewerDirective as dd, ReplacePipe as de, ReportActionListPipe as df, ReportBaseComponent as dg, ReportBaseInfo as dh, ReportBreadcrumbResolver as di, ReportCalendarModel as dj, ReportContainerComponent as dk, ReportExtraInfo as dl, ReportField as dm, ReportFormModel as dn, ReportItemBaseComponent as dp, ReportListModel as dq, ReportModel as dr, ReportNavigatorComponent as ds, ReportTreeModel as dt, ReportViewBaseComponent as du, ReportViewColumn as dv, ResizableComponent as dw, ResizableDirective as dx, ResizableModule as dy, ResizeHandlerDirective as dz, AnchorScrollDirective as e, flattenTree as e$, SimpleTemplateEngine as e0, SimplebarDirective as e1, SingleRelationControlInfoModel as e2, SortDirection as e3, SortPipe as e4, SortSetting as e5, SplideSliderDirective as e6, SplitPipe as e7, SplitterComponent as e8, StopPropagationDirective as e9, VisibleValuePipe as eA, WebOtpDirective as eB, WordMimeType as eC, WorfkflowwChoiceCommandDirective as eD, addCssVariableToRoot as eE, addDynamicVariableTo as eF, availablePrefixes as eG, bodyClick as eH, buildRuntimeNavStateCacheKey as eI, calcContextMenuWidth as eJ, calculateColumnContent as eK, calculateColumnWidth as eL, calculateColumnWidthFitToContainer as eM, calculateFreeColumnSize as eN, calculateMoDataListContentWidthByColumnName as eO, cancelRequestAnimationFrame as eP, checkPermission as eQ, compareVersions as eR, contextDefaultsFromEnvironment as eS, createFormPanelMetaConditions as eT, createGridEditorFormPanel as eU, easeInOutCubic as eV, elementInViewport2 as eW, enumValueToStringSize as eX, executeUlvCommandHandler as eY, extractLayoutPolicyFromView as eZ, fixUnclosedParentheses as e_, StringControlInfoModel as ea, StringToNumberPipe as eb, SubformControlInfoModel as ec, SystemBaseComponent as ed, TEMPLATE_ENGINE as ee, TOAST_SERVICE as ef, TableHeaderWidthMode as eg, TableResizerDirective as eh, TabpageService as ei, ThImageOrIconePipe as ej, TileGroupBreadcrumResolver as ek, TilePropsComponent as el, TlbButtonsPipe as em, ToolbarSettingsPipe as en, TooltipDirective as eo, TotalSummaryPipe as ep, UiService as eq, UlvCommandDirective as er, UlvHeightSizeType as es, UlvMainService as et, UnlimitSessionComponent as eu, UntilInViewDirective as ev, UploadService as ew, VideoMimeType as ex, VideoRecordingService as ey, ViewBase as ez, formRoutes as f, stopPropagation as f$, forbiddenValidator as f0, formatBytes as f1, fromEntries as f2, fromIntersectionObserver as f3, genrateInlineMoId as f4, getAllItemsPerChildren as f5, getColumnValueOfMoDataList as f6, getComponentDefined as f7, getControlList as f8, getControlSizeMode as f9, isFunction as fA, isIOS as fB, isImage as fC, isInLocalMode as fD, isSafari as fE, isTargetWindow as fF, isVersionBiggerThan as fG, measureText as fH, measureText2 as fI, measureTextBy as fJ, mobile_regex as fK, multilevelSort as fL, nullOrUndefinedString as fM, number_only as fN, removeDynamicStyle as fO, requestAnimationFramePolyfill as fP, resolveFinalScroll as fQ, resolveReportLayoutPolicy as fR, scrollLayoutModeToContextEnvironment as fS, scrollToElement as fT, searchEx as fU, setColumnWidthByMaxMoContentWidth as fV, setOneDepthLevel as fW, setTableThWidth as fX, shallowEqual as fY, sort as fZ, sortEx as f_, getDateService as fa, getDeviceIsDesktop as fb, getDeviceIsMobile as fc, getDeviceIsPhone as fd, getDeviceIsTablet as fe, getFieldValue as ff, getFocusableTagNames as fg, getFormSettings as fh, getGridSettings as fi, getHeaderValue as fj, getIcon as fk, getImagePath as fl, getLabelWidth as fm, getLayout94ObjectInfo as fn, getLayoutControl as fo, getNestedValue as fp, getNewMoGridEditor as fq, getParentHeight as fr, getReportTypeDefaultPolicy as fs, getRequestAnimationFrame as ft, getResetGridSettings as fu, getTargetRect as fv, getUniqueId as fw, getValidExtension as fx, isFF as fy, isFirefox as fz, ApiService as g, throwIfAlreadyLoaded as g0, toNumber as g1, validateAllFormFields as g2, ApplicationBaseComponent as h, ApplicationCtrlrService as i, AttrRtlDirective as j, AudioMimeType as k, AudioRecordingService as l, AuthGuard as m, BarsaApi as n, BarsaDialogService as o, BarsaIconDictPipe as p, BarsaNovinRayCoreModule as q, reportRoutes as r, BarsaReadonlyDirective as s, BarsaSapUiFormPageModule as t, BarsaStorageService as u, BaseColumnPropsComponent as v, BaseComponent as w, BaseController as x, BaseDirective as y, BaseDynamicComponent as z };
20602
+ //# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-a524W8nV.mjs.map