barsa-novin-ray-core 2.3.144 → 2.3.148
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.
- package/fesm2022/{barsa-novin-ray-core-barsa-novin-ray-core-BOKaq7hB.mjs → barsa-novin-ray-core-barsa-novin-ray-core-BhKR992Z.mjs} +1003 -239
- package/fesm2022/barsa-novin-ray-core-barsa-novin-ray-core-BhKR992Z.mjs.map +1 -0
- package/fesm2022/{barsa-novin-ray-core-barsa-report-page.module-BnBF1-gh.mjs → barsa-novin-ray-core-barsa-report-page.module-pdaEOMh7.mjs} +2 -2
- package/fesm2022/{barsa-novin-ray-core-barsa-report-page.module-BnBF1-gh.mjs.map → barsa-novin-ray-core-barsa-report-page.module-pdaEOMh7.mjs.map} +1 -1
- package/fesm2022/barsa-novin-ray-core.mjs +1 -1
- package/index.d.ts +281 -46
- package/package.json +1 -1
- package/fesm2022/barsa-novin-ray-core-barsa-novin-ray-core-BOKaq7hB.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, ComponentFactoryResolver, Injector, ApplicationRef, Compiler, DOCUMENT, NgModuleFactory, InjectionToken, NgZone, signal, ViewContainerRef, EventEmitter, ChangeDetectorRef, Renderer2, HostBinding, Output, HostListener, ViewChild, Directive, TemplateRef, input, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, ErrorHandler } from '@angular/core';
|
|
3
|
-
import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, timer, combineLatest, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, forkJoin, shareReplay, withLatestFrom as withLatestFrom$1,
|
|
2
|
+
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, ComponentFactoryResolver, Injector, ApplicationRef, Compiler, DOCUMENT, NgModuleFactory, InjectionToken, NgZone, signal, ViewContainerRef, isDevMode, EventEmitter, ChangeDetectorRef, Renderer2, HostBinding, Output, HostListener, ViewChild, Directive, TemplateRef, input, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, ErrorHandler } from '@angular/core';
|
|
3
|
+
import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, timer, combineLatest, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, forkJoin, shareReplay, withLatestFrom as withLatestFrom$1, fromEvent, throwError, merge, interval, filter as filter$1, lastValueFrom, timeout, catchError as catchError$1, takeUntil as takeUntil$1, take, skip, Observable, tap as tap$1, mergeWith, Subscription } from 'rxjs';
|
|
4
4
|
import * as i1 from '@angular/router';
|
|
5
5
|
import { Router, NavigationEnd, ActivatedRoute, RouterEvent, NavigationStart, RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
6
6
|
import { DomSanitizer, Title } from '@angular/platform-browser';
|
|
@@ -4317,7 +4317,6 @@ class DynamicDarkColorPipe {
|
|
|
4317
4317
|
this.cache = new Map();
|
|
4318
4318
|
this.darkBackground = [18, 18, 18]; // #121212
|
|
4319
4319
|
this.minContrast = 4.5;
|
|
4320
|
-
this.colorParseCache = new Map();
|
|
4321
4320
|
}
|
|
4322
4321
|
transform(styleStr) {
|
|
4323
4322
|
if (!IsDarkMode() || !styleStr) {
|
|
@@ -4326,29 +4325,46 @@ class DynamicDarkColorPipe {
|
|
|
4326
4325
|
if (this.cache.has(styleStr)) {
|
|
4327
4326
|
return this.cache.get(styleStr);
|
|
4328
4327
|
}
|
|
4329
|
-
const
|
|
4330
|
-
const
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
this.cache.set(styleStr,
|
|
4344
|
-
return
|
|
4328
|
+
const colorRegex = /(?:^|;)\s*color\s*:\s*([^;!]+)[;!]?/i;
|
|
4329
|
+
const bgRegex = /(?:^|;)\s*background-color\s*:\s*([^;!]+)[;!]?/i;
|
|
4330
|
+
const colorMatch = styleStr.match(colorRegex);
|
|
4331
|
+
const bgMatch = styleStr.match(bgRegex);
|
|
4332
|
+
let newStyle = styleStr;
|
|
4333
|
+
// ---------------------------------------------------
|
|
4334
|
+
// BACKGROUND EXISTS BUT NO TEXT COLOR
|
|
4335
|
+
// ---------------------------------------------------
|
|
4336
|
+
if (bgMatch && !colorMatch) {
|
|
4337
|
+
const bgRgb = this.parseColor(bgMatch[1].trim());
|
|
4338
|
+
if (bgRgb) {
|
|
4339
|
+
const textColor = this.getReadableTextColor(bgRgb);
|
|
4340
|
+
newStyle += `; color: ${textColor};`;
|
|
4341
|
+
}
|
|
4342
|
+
this.cache.set(styleStr, newStyle);
|
|
4343
|
+
return newStyle;
|
|
4344
|
+
}
|
|
4345
|
+
// ---------------------------------------------------
|
|
4346
|
+
// NORMAL COLOR CONTRAST FIX
|
|
4347
|
+
// ---------------------------------------------------
|
|
4348
|
+
if (colorMatch) {
|
|
4349
|
+
const originalColor = colorMatch[1].trim();
|
|
4350
|
+
const rgb = this.parseColor(originalColor);
|
|
4351
|
+
if (!rgb) {
|
|
4352
|
+
return styleStr;
|
|
4353
|
+
}
|
|
4354
|
+
const contrast = this.getContrastRatio(rgb, this.darkBackground);
|
|
4355
|
+
if (contrast < this.minContrast) {
|
|
4356
|
+
const adjustedHex = this.adjustColorForDarkMode(rgb);
|
|
4357
|
+
newStyle = styleStr.replace(colorRegex, `; color: ${adjustedHex};`);
|
|
4358
|
+
}
|
|
4345
4359
|
}
|
|
4346
|
-
// ❌ اگر بد بود → اصلاح کن
|
|
4347
|
-
const adjustedHex = this.adjustColorForDarkMode(rgb);
|
|
4348
|
-
const newStyle = styleStr.replace(regex, `color: ${adjustedHex};`);
|
|
4349
4360
|
this.cache.set(styleStr, newStyle);
|
|
4350
4361
|
return newStyle;
|
|
4351
4362
|
}
|
|
4363
|
+
getReadableTextColor(bgRgb) {
|
|
4364
|
+
const whiteContrast = this.getContrastRatio([255, 255, 255], bgRgb);
|
|
4365
|
+
const blackContrast = this.getContrastRatio([0, 0, 0], bgRgb);
|
|
4366
|
+
return whiteContrast > blackContrast ? '#ffffff' : '#000000';
|
|
4367
|
+
}
|
|
4352
4368
|
// ---------------------------------------------------
|
|
4353
4369
|
// 🎯 Adjust until contrast >= 4.5
|
|
4354
4370
|
// ---------------------------------------------------
|
|
@@ -4644,6 +4660,73 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
4644
4660
|
}]
|
|
4645
4661
|
}], ctorParameters: () => [] });
|
|
4646
4662
|
|
|
4663
|
+
class GetCssVariableValuePipe {
|
|
4664
|
+
transform(cssVarName, removeUnit, element) {
|
|
4665
|
+
if (!cssVarName) {
|
|
4666
|
+
return null;
|
|
4667
|
+
}
|
|
4668
|
+
const target = element || document.documentElement;
|
|
4669
|
+
let value = getComputedStyle(target).getPropertyValue(cssVarName).trim();
|
|
4670
|
+
if (!value) {
|
|
4671
|
+
return null;
|
|
4672
|
+
}
|
|
4673
|
+
// remove unit
|
|
4674
|
+
if (removeUnit) {
|
|
4675
|
+
value = value.replace(removeUnit, '').trim();
|
|
4676
|
+
const numeric = Number(value);
|
|
4677
|
+
return isNaN(numeric) ? value : numeric;
|
|
4678
|
+
}
|
|
4679
|
+
return value;
|
|
4680
|
+
}
|
|
4681
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GetCssVariableValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4682
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: GetCssVariableValuePipe, isStandalone: false, name: "getCssVarValue" }); }
|
|
4683
|
+
}
|
|
4684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GetCssVariableValuePipe, decorators: [{
|
|
4685
|
+
type: Pipe,
|
|
4686
|
+
args: [{
|
|
4687
|
+
name: 'getCssVarValue',
|
|
4688
|
+
standalone: false
|
|
4689
|
+
}]
|
|
4690
|
+
}] });
|
|
4691
|
+
|
|
4692
|
+
class FindColumnsPipe {
|
|
4693
|
+
transform(columns, columnsToFind) {
|
|
4694
|
+
if (!columns?.length || !columnsToFind) {
|
|
4695
|
+
return columns;
|
|
4696
|
+
}
|
|
4697
|
+
const arrOfColumns = columnsToFind.split(',');
|
|
4698
|
+
const x = columns.filter((column, _i) => arrOfColumns.indexOf(column.Caption) !== -1 || arrOfColumns.indexOf(column.Name) !== -1);
|
|
4699
|
+
return x;
|
|
4700
|
+
}
|
|
4701
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FindColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4702
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: FindColumnsPipe, isStandalone: false, name: "findColumns" }); }
|
|
4703
|
+
}
|
|
4704
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FindColumnsPipe, decorators: [{
|
|
4705
|
+
type: Pipe,
|
|
4706
|
+
args: [{
|
|
4707
|
+
name: 'findColumns',
|
|
4708
|
+
standalone: false
|
|
4709
|
+
}]
|
|
4710
|
+
}] });
|
|
4711
|
+
|
|
4712
|
+
class ExistsColumnsPipe {
|
|
4713
|
+
transform(columns, column) {
|
|
4714
|
+
if (!columns?.length || !column) {
|
|
4715
|
+
return columns;
|
|
4716
|
+
}
|
|
4717
|
+
return columns.filter((col) => col.Name === column.Name || col.Caption === column.Caption);
|
|
4718
|
+
}
|
|
4719
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ExistsColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4720
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: ExistsColumnsPipe, isStandalone: false, name: "existsColumns" }); }
|
|
4721
|
+
}
|
|
4722
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ExistsColumnsPipe, decorators: [{
|
|
4723
|
+
type: Pipe,
|
|
4724
|
+
args: [{
|
|
4725
|
+
name: 'existsColumns',
|
|
4726
|
+
standalone: false
|
|
4727
|
+
}]
|
|
4728
|
+
}] });
|
|
4729
|
+
|
|
4647
4730
|
class ApiService {
|
|
4648
4731
|
constructor() {
|
|
4649
4732
|
this.portalLoginUrl = `/api/auth/portal/login`;
|
|
@@ -5943,10 +6026,11 @@ class ApplicationCtrlrService {
|
|
|
5943
6026
|
callback && callback(true);
|
|
5944
6027
|
});
|
|
5945
6028
|
this._document.documentElement.setAttribute('data-layout', 'vertical');
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
6029
|
+
// با تغییر سیستم اسم تب مرورگر تغییر نکند
|
|
6030
|
+
// this._selectedSystemTitle$
|
|
6031
|
+
// .asObservable()
|
|
6032
|
+
// .pipe(tap((c) => this._titleService.setTitle(c)))
|
|
6033
|
+
// .subscribe();
|
|
5950
6034
|
}
|
|
5951
6035
|
systemChange(systemId) {
|
|
5952
6036
|
const oldSystemId = this._selectedSystemId$.getValue();
|
|
@@ -6271,7 +6355,7 @@ function reportRoutes(authGuard = false) {
|
|
|
6271
6355
|
return {
|
|
6272
6356
|
path: 'report/:id',
|
|
6273
6357
|
canActivate: authGuard ? [AuthGuard] : [],
|
|
6274
|
-
loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-
|
|
6358
|
+
loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-pdaEOMh7.mjs').then((m) => m.BarsaReportPageModule),
|
|
6275
6359
|
resolve: {
|
|
6276
6360
|
breadcrumb: ReportBreadcrumbResolver
|
|
6277
6361
|
}
|
|
@@ -7031,6 +7115,24 @@ class PortalService {
|
|
|
7031
7115
|
reject('error in get server startup data.');
|
|
7032
7116
|
}, null);
|
|
7033
7117
|
}
|
|
7118
|
+
buildNavigationParams(formpanelCtrlr, mo, headerLayout, id, isPage) {
|
|
7119
|
+
const breadCrumb = getHeaderValue(headerLayout?.BreadCrumb);
|
|
7120
|
+
const params = {
|
|
7121
|
+
id: mo.$State === 'New' ? '0' : mo.Id,
|
|
7122
|
+
tyid: mo.$TypeDefId,
|
|
7123
|
+
tycp: mo.$Caption ? mo.$Caption : null,
|
|
7124
|
+
repid: mo.$ReportId,
|
|
7125
|
+
vid: formpanelCtrlr?.Setting?.View?.TypeViewId,
|
|
7126
|
+
bc: breadCrumb ? breadCrumb : mo.$State === 'New' ? mo.$TypeDefName : mo.$Caption,
|
|
7127
|
+
formPanelCtrlrId: id,
|
|
7128
|
+
mo: mo
|
|
7129
|
+
};
|
|
7130
|
+
// اگر کامپوننت به صورت Page باز شود، فلگ isFirst هم اضافه میشود
|
|
7131
|
+
if (isPage) {
|
|
7132
|
+
params.isFirst = true;
|
|
7133
|
+
}
|
|
7134
|
+
return params;
|
|
7135
|
+
}
|
|
7034
7136
|
ShowFormPanelControl(formpanelCtrlr, router, activatedRoute, dialogComponent, isPage, vcr, isReload = false) {
|
|
7035
7137
|
if (!formpanelCtrlr) {
|
|
7036
7138
|
console.warn('form panel controler is undefined!');
|
|
@@ -7060,10 +7162,11 @@ class PortalService {
|
|
|
7060
7162
|
const id = getUniqueId(4);
|
|
7061
7163
|
this.addFormPanelCtrlr(id, formpanelCtrlr);
|
|
7062
7164
|
this.openForm$.next(); // event emit for other components to know form open
|
|
7165
|
+
const navigationParams = this.buildNavigationParams(formpanelCtrlr, mo, headerLayout, id, isPage);
|
|
7063
7166
|
if (isModal) {
|
|
7064
7167
|
if (dialogComponent) {
|
|
7065
7168
|
this.dialogService.showForm(dialogComponent, {
|
|
7066
|
-
...
|
|
7169
|
+
...navigationParams,
|
|
7067
7170
|
formpanelCtrlr
|
|
7068
7171
|
}, vcr);
|
|
7069
7172
|
}
|
|
@@ -7078,7 +7181,7 @@ class PortalService {
|
|
|
7078
7181
|
'form',
|
|
7079
7182
|
{
|
|
7080
7183
|
outlets: {
|
|
7081
|
-
main: ['show', { ...
|
|
7184
|
+
main: ['show', { ...navigationParams }]
|
|
7082
7185
|
}
|
|
7083
7186
|
}
|
|
7084
7187
|
], {
|
|
@@ -7092,7 +7195,7 @@ class PortalService {
|
|
|
7092
7195
|
'popup',
|
|
7093
7196
|
{
|
|
7094
7197
|
outlets: {
|
|
7095
|
-
main: ['show', { ...
|
|
7198
|
+
main: ['show', { ...navigationParams }]
|
|
7096
7199
|
}
|
|
7097
7200
|
}
|
|
7098
7201
|
], {
|
|
@@ -9132,12 +9235,14 @@ class NotificationService {
|
|
|
9132
9235
|
Notification.permission === 'granted');
|
|
9133
9236
|
}
|
|
9134
9237
|
showNotification(notificationItem, mo, uiOptions, otherOptions) {
|
|
9135
|
-
if (notificationItem.Title && notificationItem.Title.startsWith('[') && notificationItem.Title.endsWith(']')) {
|
|
9136
|
-
|
|
9137
|
-
}
|
|
9138
|
-
if (notificationItem.Title && notificationItem.Title.startsWith('{') && notificationItem.Title.endsWith('}')) {
|
|
9139
|
-
|
|
9140
|
-
}
|
|
9238
|
+
// if (notificationItem.Title && notificationItem.Title.startsWith('[') && notificationItem.Title.endsWith(']')) {
|
|
9239
|
+
// return;
|
|
9240
|
+
// }
|
|
9241
|
+
// if (notificationItem.Title && notificationItem.Title.startsWith('{') && notificationItem.Title.endsWith('}')) {
|
|
9242
|
+
// return;
|
|
9243
|
+
// } زمانی که سیستم مدیریت کارتابل جدید نباشد نوتفیکشن های قدیمی نمایش داده نمیشدند
|
|
9244
|
+
// فعلا کامنت شد و جایی که سیستم مدیریت کارتابل جدید دارد و کار میکند
|
|
9245
|
+
// باعث نمایش دوتا پاپ اپ میشود
|
|
9141
9246
|
if (mo && !mo.ShowPopup) {
|
|
9142
9247
|
return;
|
|
9143
9248
|
}
|
|
@@ -9226,14 +9331,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9226
9331
|
// src/app/services/idb.service.ts
|
|
9227
9332
|
class IdbService {
|
|
9228
9333
|
constructor() {
|
|
9229
|
-
this.dbPromise = openDB('my-app-db',
|
|
9230
|
-
upgrade(db) {
|
|
9334
|
+
this.dbPromise = openDB('my-app-db', 2, {
|
|
9335
|
+
upgrade(db, oldVersion) {
|
|
9231
9336
|
if (!db.objectStoreNames.contains('subscription')) {
|
|
9232
9337
|
db.createObjectStore('subscription');
|
|
9233
9338
|
}
|
|
9234
9339
|
if (!db.objectStoreNames.contains('settings')) {
|
|
9235
9340
|
db.createObjectStore('settings');
|
|
9236
9341
|
}
|
|
9342
|
+
if (oldVersion < 2 && !db.objectStoreNames.contains('runtimeNavState')) {
|
|
9343
|
+
db.createObjectStore('runtimeNavState');
|
|
9344
|
+
}
|
|
9237
9345
|
}
|
|
9238
9346
|
});
|
|
9239
9347
|
}
|
|
@@ -9250,6 +9358,15 @@ class IdbService {
|
|
|
9250
9358
|
const db = await this.dbPromise;
|
|
9251
9359
|
await db.delete(store, key);
|
|
9252
9360
|
}
|
|
9361
|
+
async getAllKeys(store) {
|
|
9362
|
+
const db = await this.dbPromise;
|
|
9363
|
+
const keys = await db.getAllKeys(store);
|
|
9364
|
+
return keys;
|
|
9365
|
+
}
|
|
9366
|
+
async clearStore(store) {
|
|
9367
|
+
const db = await this.dbPromise;
|
|
9368
|
+
await db.clear(store);
|
|
9369
|
+
}
|
|
9253
9370
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: IdbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9254
9371
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: IdbService, providedIn: 'root' }); }
|
|
9255
9372
|
}
|
|
@@ -9743,6 +9860,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9743
9860
|
args: [{ providedIn: 'root' }]
|
|
9744
9861
|
}] });
|
|
9745
9862
|
|
|
9863
|
+
class ScrollLayoutContextHolder {
|
|
9864
|
+
constructor() {
|
|
9865
|
+
this._mode = signal('root');
|
|
9866
|
+
this.mode = this._mode.asReadonly();
|
|
9867
|
+
}
|
|
9868
|
+
setMode(mode) {
|
|
9869
|
+
this._mode.set(mode);
|
|
9870
|
+
}
|
|
9871
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScrollLayoutContextHolder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9872
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScrollLayoutContextHolder }); }
|
|
9873
|
+
}
|
|
9874
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScrollLayoutContextHolder, decorators: [{
|
|
9875
|
+
type: Injectable
|
|
9876
|
+
}], ctorParameters: () => [] });
|
|
9877
|
+
|
|
9746
9878
|
class ShellbarHeightService {
|
|
9747
9879
|
constructor() {
|
|
9748
9880
|
this._dict = new BehaviorSubject(['']);
|
|
@@ -9825,6 +9957,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9825
9957
|
args: [{ providedIn: 'root' }]
|
|
9826
9958
|
}] });
|
|
9827
9959
|
|
|
9960
|
+
/** Discriminator for migrations and mixed payload kinds. */
|
|
9961
|
+
const RUNTIME_NAV_STATE_SCHEMA_V1 = 'report-nav-runtime/v1';
|
|
9962
|
+
/**
|
|
9963
|
+
* Stable cache key: report-scoped MO identity.
|
|
9964
|
+
* Future: prefix with navigationScopeId for split/compare/popup (architecture note only in v1).
|
|
9965
|
+
*/
|
|
9966
|
+
function buildRuntimeNavStateCacheKey(reportIdSeg, moId, typeDefId) {
|
|
9967
|
+
return `runtime:${reportIdSeg}:${moId}:${typeDefId}`;
|
|
9968
|
+
}
|
|
9969
|
+
|
|
9970
|
+
const RUNTIME_NAV_STORE = 'runtimeNavState';
|
|
9971
|
+
const SESSION_STORAGE_KEY = 'runtime-session-id';
|
|
9972
|
+
const MAX_MEMORY_ENTRIES = 100;
|
|
9973
|
+
function cloneForPersist(value) {
|
|
9974
|
+
try {
|
|
9975
|
+
return structuredClone(value);
|
|
9976
|
+
}
|
|
9977
|
+
catch {
|
|
9978
|
+
return JSON.parse(JSON.stringify(value));
|
|
9979
|
+
}
|
|
9980
|
+
}
|
|
9981
|
+
class RuntimeNavStateCacheService {
|
|
9982
|
+
constructor() {
|
|
9983
|
+
this._idb = inject(IdbService);
|
|
9984
|
+
this._memory = new Map();
|
|
9985
|
+
this._sessionId = this._ensureSessionId();
|
|
9986
|
+
void this._purgeStaleFromIdb();
|
|
9987
|
+
if (isDevMode() && typeof window !== 'undefined') {
|
|
9988
|
+
window.__runtimeNavCache = this;
|
|
9989
|
+
}
|
|
9990
|
+
}
|
|
9991
|
+
/** @internal tests / diagnostics */
|
|
9992
|
+
get currentSessionId() {
|
|
9993
|
+
return this._sessionId;
|
|
9994
|
+
}
|
|
9995
|
+
save(key, envelope) {
|
|
9996
|
+
const snapshot = cloneForPersist({
|
|
9997
|
+
...envelope,
|
|
9998
|
+
sessionId: this._sessionId,
|
|
9999
|
+
createdAt: envelope.createdAt ?? Date.now()
|
|
10000
|
+
});
|
|
10001
|
+
return (async () => {
|
|
10002
|
+
await this._idb.set(RUNTIME_NAV_STORE, key, snapshot);
|
|
10003
|
+
this._memory.set(key, snapshot);
|
|
10004
|
+
this._evictMemoryIfNeeded();
|
|
10005
|
+
})();
|
|
10006
|
+
}
|
|
10007
|
+
get(key) {
|
|
10008
|
+
const mem = this._memory.get(key);
|
|
10009
|
+
if (mem !== undefined) {
|
|
10010
|
+
return Promise.resolve(mem);
|
|
10011
|
+
}
|
|
10012
|
+
return (async () => {
|
|
10013
|
+
const row = await this._idb.get(RUNTIME_NAV_STORE, key);
|
|
10014
|
+
if (row == null) {
|
|
10015
|
+
return null;
|
|
10016
|
+
}
|
|
10017
|
+
if (row.sessionId !== this._sessionId) {
|
|
10018
|
+
return null;
|
|
10019
|
+
}
|
|
10020
|
+
this._memory.set(key, row);
|
|
10021
|
+
this._evictMemoryIfNeeded();
|
|
10022
|
+
return row;
|
|
10023
|
+
})();
|
|
10024
|
+
}
|
|
10025
|
+
remove(key) {
|
|
10026
|
+
return (async () => {
|
|
10027
|
+
this._memory.delete(key);
|
|
10028
|
+
await this._idb.delete(RUNTIME_NAV_STORE, key);
|
|
10029
|
+
})();
|
|
10030
|
+
}
|
|
10031
|
+
clear() {
|
|
10032
|
+
return (async () => {
|
|
10033
|
+
this._memory.clear();
|
|
10034
|
+
await this._idb.clearStore(RUNTIME_NAV_STORE);
|
|
10035
|
+
})();
|
|
10036
|
+
}
|
|
10037
|
+
/** Optional contract: snapshot of keys ? serialized envelopes (for debugging). */
|
|
10038
|
+
getAllEntries() {
|
|
10039
|
+
return (async () => {
|
|
10040
|
+
const out = {};
|
|
10041
|
+
for (const [k, v] of this._memory.entries()) {
|
|
10042
|
+
out[k] = cloneForPersist(v);
|
|
10043
|
+
}
|
|
10044
|
+
const keys = await this._idb.getAllKeys(RUNTIME_NAV_STORE);
|
|
10045
|
+
for (const key of keys) {
|
|
10046
|
+
if (out[key] !== undefined) {
|
|
10047
|
+
continue;
|
|
10048
|
+
}
|
|
10049
|
+
const row = await this._idb.get(RUNTIME_NAV_STORE, key);
|
|
10050
|
+
if (row?.sessionId === this._sessionId) {
|
|
10051
|
+
out[key] = cloneForPersist(row);
|
|
10052
|
+
}
|
|
10053
|
+
}
|
|
10054
|
+
return out;
|
|
10055
|
+
})();
|
|
10056
|
+
}
|
|
10057
|
+
_ensureSessionId() {
|
|
10058
|
+
if (typeof sessionStorage === 'undefined') {
|
|
10059
|
+
return `ssr-${crypto.randomUUID()}`;
|
|
10060
|
+
}
|
|
10061
|
+
let id = sessionStorage.getItem(SESSION_STORAGE_KEY);
|
|
10062
|
+
if (!id) {
|
|
10063
|
+
id = crypto.randomUUID();
|
|
10064
|
+
sessionStorage.setItem(SESSION_STORAGE_KEY, id);
|
|
10065
|
+
}
|
|
10066
|
+
return id;
|
|
10067
|
+
}
|
|
10068
|
+
_evictMemoryIfNeeded() {
|
|
10069
|
+
while (this._memory.size > MAX_MEMORY_ENTRIES) {
|
|
10070
|
+
const first = this._memory.keys().next().value;
|
|
10071
|
+
if (first === undefined) {
|
|
10072
|
+
break;
|
|
10073
|
+
}
|
|
10074
|
+
this._memory.delete(first);
|
|
10075
|
+
}
|
|
10076
|
+
}
|
|
10077
|
+
async _purgeStaleFromIdb() {
|
|
10078
|
+
try {
|
|
10079
|
+
const keys = await this._idb.getAllKeys(RUNTIME_NAV_STORE);
|
|
10080
|
+
for (const key of keys) {
|
|
10081
|
+
const row = await this._idb.get(RUNTIME_NAV_STORE, key);
|
|
10082
|
+
if (row == null || row.sessionId !== this._sessionId) {
|
|
10083
|
+
await this._idb.delete(RUNTIME_NAV_STORE, key);
|
|
10084
|
+
}
|
|
10085
|
+
}
|
|
10086
|
+
}
|
|
10087
|
+
catch {
|
|
10088
|
+
/* ignore IDB errors during purge */
|
|
10089
|
+
}
|
|
10090
|
+
}
|
|
10091
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RuntimeNavStateCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10092
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RuntimeNavStateCacheService, providedIn: 'root' }); }
|
|
10093
|
+
}
|
|
10094
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RuntimeNavStateCacheService, decorators: [{
|
|
10095
|
+
type: Injectable,
|
|
10096
|
+
args: [{ providedIn: 'root' }]
|
|
10097
|
+
}], ctorParameters: () => [] });
|
|
10098
|
+
|
|
9828
10099
|
class CardViewService {
|
|
9829
10100
|
constructor() {
|
|
9830
10101
|
this._maxHeaderTitleHeight$ = new BehaviorSubject(0);
|
|
@@ -9857,6 +10128,9 @@ class BaseSettingsService {
|
|
|
9857
10128
|
saveSetting(key, value) {
|
|
9858
10129
|
return from(this.idb.set('settings', key, value));
|
|
9859
10130
|
}
|
|
10131
|
+
removeSetting(key) {
|
|
10132
|
+
return from(this.idb.delete('settings', key));
|
|
10133
|
+
}
|
|
9860
10134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9861
10135
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseSettingsService, providedIn: 'root' }); }
|
|
9862
10136
|
}
|
|
@@ -9865,40 +10139,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9865
10139
|
args: [{ providedIn: 'root' }]
|
|
9866
10140
|
}] });
|
|
9867
10141
|
|
|
9868
|
-
class CalendarSettingsService extends BaseSettingsService {
|
|
9869
|
-
constructor() {
|
|
9870
|
-
super(...arguments);
|
|
9871
|
-
this.CALENDAR_KEY_PREFIX = 'cal_cfg_';
|
|
9872
|
-
// نگهداری وضعیت فعلی برای دسترسی سریع در UI
|
|
9873
|
-
this.configSubject = new BehaviorSubject(null);
|
|
9874
|
-
}
|
|
9875
|
-
get config$() {
|
|
9876
|
-
return this.configSubject.asObservable();
|
|
9877
|
-
}
|
|
9878
|
-
/**
|
|
9879
|
-
* بارگذاری تنظیمات و آپدیت کردن استریم
|
|
9880
|
-
*/
|
|
9881
|
-
getSetting(reportId) {
|
|
9882
|
-
// ۱. اول متد اصلی (پدر) را صدا میزنیم تا دیتا از IDB بیاید
|
|
9883
|
-
const key = `${this.CALENDAR_KEY_PREFIX}${reportId}`;
|
|
9884
|
-
return super.getSetting(key).pipe(tap$1((c) => this.configSubject.next(c)));
|
|
9885
|
-
}
|
|
9886
|
-
/**
|
|
9887
|
-
* ذخیره تنظیمات و اطلاعرسانی به تمام Subscribe کنندهها
|
|
9888
|
-
*/
|
|
9889
|
-
saveSetting(reportId, newConfig) {
|
|
9890
|
-
const key = `${this.CALENDAR_KEY_PREFIX}${reportId}`;
|
|
9891
|
-
const updatedConfig = { ...this.configSubject.value, ...newConfig };
|
|
9892
|
-
return super.saveSetting(key, updatedConfig).pipe(tap$1(() => this.configSubject.next(updatedConfig)));
|
|
9893
|
-
}
|
|
9894
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9895
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsService, providedIn: 'root' }); }
|
|
9896
|
-
}
|
|
9897
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsService, decorators: [{
|
|
9898
|
-
type: Injectable,
|
|
9899
|
-
args: [{ providedIn: 'root' }]
|
|
9900
|
-
}] });
|
|
9901
|
-
|
|
9902
10142
|
class SimpleTemplateEngine {
|
|
9903
10143
|
constructor() {
|
|
9904
10144
|
this.cache = new Map();
|
|
@@ -10484,6 +10724,9 @@ class ReportBaseComponent extends BaseComponent {
|
|
|
10484
10724
|
get moDataList() {
|
|
10485
10725
|
return this._ulvMainService.moDataListSource.getValue();
|
|
10486
10726
|
}
|
|
10727
|
+
get isCheckList() {
|
|
10728
|
+
return this._ulvMainService.isMultiSelect;
|
|
10729
|
+
}
|
|
10487
10730
|
ngOnInit() {
|
|
10488
10731
|
super.ngOnInit();
|
|
10489
10732
|
this.rendered = true;
|
|
@@ -10499,6 +10742,7 @@ class ReportBaseComponent extends BaseComponent {
|
|
|
10499
10742
|
this.conditionalFormats$ = this._ulvMainService.conditionalFormats$;
|
|
10500
10743
|
this.cartableTemplates$ = this._ulvMainService.cartableTemplates$;
|
|
10501
10744
|
this.cartableChildsMo$ = this._ulvMainService.cartableChildsMo$;
|
|
10745
|
+
this.isCheckList$ = this._ulvMainService.isMultiSelect$;
|
|
10502
10746
|
this.title$ = this._ulvMainService.title$.pipe(pluck('text'));
|
|
10503
10747
|
this.menuItems$ = this._ulvMainService.menuItems$;
|
|
10504
10748
|
this.pagingSetting$ = this._ulvMainService.pagingSetting$;
|
|
@@ -10652,7 +10896,7 @@ class ReportBaseComponent extends BaseComponent {
|
|
|
10652
10896
|
this.context.fireEvent('UserSettingChange', this.context, gridSetting);
|
|
10653
10897
|
}
|
|
10654
10898
|
_ulvCommandClicked(mo, index) {
|
|
10655
|
-
this._removeCheckedAll();
|
|
10899
|
+
!this.isCheckList && this._removeCheckedAll();
|
|
10656
10900
|
this._select(mo, index);
|
|
10657
10901
|
}
|
|
10658
10902
|
_checkedAll() {
|
|
@@ -11639,7 +11883,7 @@ class ReportViewBaseComponent extends BaseComponent {
|
|
|
11639
11883
|
this.rowIndicator = Number(columns[0].MetaFieldTypeId) === 41;
|
|
11640
11884
|
}
|
|
11641
11885
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportViewBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
11642
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ReportViewBaseComponent, isStandalone: false, selector: "bnrc-report-view-base", inputs: { contextView: "contextView", viewSetting: "viewSetting", allColumns: "allColumns", isCheckList: "isCheckList", simpleInlineEdit: "simpleInlineEdit", 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", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", contextSetting: "contextSetting", gridFreeColumnSizing: "gridFreeColumnSizing", navigationArrow: "navigationArrow", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo", pagingSetting: "pagingSetting", 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 }); }
|
|
11886
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ReportViewBaseComponent, isStandalone: false, selector: "bnrc-report-view-base", inputs: { contextView: "contextView", viewSetting: "viewSetting", allColumns: "allColumns", isCheckList: "isCheckList", simpleInlineEdit: "simpleInlineEdit", 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", 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 }); }
|
|
11643
11887
|
}
|
|
11644
11888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportViewBaseComponent, decorators: [{
|
|
11645
11889
|
type: Component,
|
|
@@ -11771,6 +12015,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
11771
12015
|
type: Input
|
|
11772
12016
|
}], contentHeight: [{
|
|
11773
12017
|
type: Input
|
|
12018
|
+
}], alternateEditObjectColumn: [{
|
|
12019
|
+
type: Input
|
|
12020
|
+
}], disableHyperLink: [{
|
|
12021
|
+
type: Input
|
|
12022
|
+
}], columnsHyperLink: [{
|
|
12023
|
+
type: Input
|
|
12024
|
+
}], effectiveReportLayout: [{
|
|
12025
|
+
type: Input
|
|
11774
12026
|
}], contentDensity: [{
|
|
11775
12027
|
type: Input
|
|
11776
12028
|
}], rtl: [{
|
|
@@ -12922,6 +13174,7 @@ class SplitterComponent extends BaseComponent {
|
|
|
12922
13174
|
super(...arguments);
|
|
12923
13175
|
this.emptyClass = true;
|
|
12924
13176
|
this.isBig = false;
|
|
13177
|
+
this.spliterResized = new EventEmitter();
|
|
12925
13178
|
this._renderer = inject(Renderer2);
|
|
12926
13179
|
this._portalService = inject(PortalService);
|
|
12927
13180
|
}
|
|
@@ -12955,7 +13208,7 @@ class SplitterComponent extends BaseComponent {
|
|
|
12955
13208
|
}), switchMap(() => {
|
|
12956
13209
|
// تشخیص جهت در لحظه شروع درگ
|
|
12957
13210
|
const isRtl = getComputedStyle(this.el.nativeElement).direction === 'rtl';
|
|
12958
|
-
let previousElementSibling = this.el.nativeElement.previousElementSibling;
|
|
13211
|
+
let previousElementSibling = this.elDom || this.el.nativeElement.previousElementSibling;
|
|
12959
13212
|
while (previousElementSibling &&
|
|
12960
13213
|
previousElementSibling.tagName.toLocaleLowerCase() === 'bnrc-dynamic-layout') {
|
|
12961
13214
|
previousElementSibling &&
|
|
@@ -12989,9 +13242,11 @@ class SplitterComponent extends BaseComponent {
|
|
|
12989
13242
|
newWidth = event.clientX - rect.left;
|
|
12990
13243
|
}
|
|
12991
13244
|
if ((!this.minWidth || newWidth >= this.minWidth) && (!this.maxWidth || newWidth <= this.maxWidth)) {
|
|
12992
|
-
this._renderer.setStyle(nextSibling, 'overflow', `hidden`);
|
|
12993
|
-
|
|
13245
|
+
nextSibling && this._renderer.setStyle(nextSibling, 'overflow', `hidden`);
|
|
13246
|
+
const value = `${newWidth}px`;
|
|
13247
|
+
this._renderer.setStyle(sibling, 'width', value);
|
|
12994
13248
|
this._renderer.setStyle(sibling, 'flex', 'none');
|
|
13249
|
+
this.spliterResized.emit(value);
|
|
12995
13250
|
}
|
|
12996
13251
|
}
|
|
12997
13252
|
toggleResizingState(isResizing, nextSibling) {
|
|
@@ -12999,15 +13254,15 @@ class SplitterComponent extends BaseComponent {
|
|
|
12999
13254
|
this._renderer[action](document.body, 'resizing-active');
|
|
13000
13255
|
this._renderer[action](this.el.nativeElement, 'is-resizing');
|
|
13001
13256
|
if (!isResizing) {
|
|
13002
|
-
this._renderer.removeClass(nextSibling, 'tw-overflow-hidden');
|
|
13257
|
+
nextSibling && this._renderer.removeClass(nextSibling, 'tw-overflow-hidden');
|
|
13003
13258
|
this._portalService.windowResize();
|
|
13004
13259
|
}
|
|
13005
13260
|
else {
|
|
13006
|
-
this._renderer.addClass(nextSibling, 'tw-overflow-hidden');
|
|
13261
|
+
nextSibling && this._renderer.addClass(nextSibling, 'tw-overflow-hidden');
|
|
13007
13262
|
}
|
|
13008
13263
|
}
|
|
13009
13264
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SplitterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13010
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: SplitterComponent, isStandalone: false, selector: "bnrc-splitter", inputs: { minWidth: "minWidth", maxWidth: "maxWidth", config: "config" }, host: { properties: { "class.empty-space": "this.emptyClass", "class.big": "this.isBig", "style.flex": "this.flex", "style.max-width.px": "this.elMaxWidth", "style.height.px": "this.elHeight" } }, usesInheritance: true, ngImport: i0, template: `<div class="splitter-container">
|
|
13265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: SplitterComponent, isStandalone: false, selector: "bnrc-splitter", inputs: { minWidth: "minWidth", maxWidth: "maxWidth", config: "config", elDom: "elDom" }, outputs: { spliterResized: "spliterResized" }, host: { properties: { "class.empty-space": "this.emptyClass", "class.big": "this.isBig", "style.flex": "this.flex", "style.max-width.px": "this.elMaxWidth", "style.height.px": "this.elHeight" } }, usesInheritance: true, ngImport: i0, template: `<div class="splitter-container">
|
|
13011
13266
|
<div class="splitter-line"></div>
|
|
13012
13267
|
<div class="grip-handle">
|
|
13013
13268
|
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
@@ -13051,12 +13306,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
13051
13306
|
}], elHeight: [{
|
|
13052
13307
|
type: HostBinding,
|
|
13053
13308
|
args: ['style.height.px']
|
|
13309
|
+
}], spliterResized: [{
|
|
13310
|
+
type: Output
|
|
13054
13311
|
}], minWidth: [{
|
|
13055
13312
|
type: Input
|
|
13056
13313
|
}], maxWidth: [{
|
|
13057
13314
|
type: Input
|
|
13058
13315
|
}], config: [{
|
|
13059
13316
|
type: Input
|
|
13317
|
+
}], elDom: [{
|
|
13318
|
+
type: Input
|
|
13319
|
+
}] } });
|
|
13320
|
+
|
|
13321
|
+
/**
|
|
13322
|
+
* Fills remaining vertical space for the host element.
|
|
13323
|
+
*
|
|
13324
|
+
* - **viewport** — page-level: uses `window.innerHeight` and offset from the top of the viewport.
|
|
13325
|
+
* - **container** — nested layouts: bounds from the **resolved container** (`[containerDom]` if set,
|
|
13326
|
+
* else nearest ancestor with `fillEmptySpace`, else `document.documentElement`).
|
|
13327
|
+
*
|
|
13328
|
+
* Vertical scroll ownership is **not** decided here; use `ScrollLayoutContextHolder` (`nested` | `isolated` | `root`)
|
|
13329
|
+
* from `barsa-novin-ray-core` on the page shell.
|
|
13330
|
+
*
|
|
13331
|
+
* @deprecated Do not use this directive as the primary way to **size individual reports** (grids, calendars).
|
|
13332
|
+
* Prefer the report layout policy / scroll shell (`resolveReportLayoutPolicy`, `report-grid-wrapper`). Filling
|
|
13333
|
+
* **page or shell containers** remains an appropriate use case.
|
|
13334
|
+
**/
|
|
13335
|
+
class FillEmptySpaceDirective extends BaseDirective {
|
|
13336
|
+
constructor() {
|
|
13337
|
+
super(...arguments);
|
|
13338
|
+
/**
|
|
13339
|
+
* `viewport` — fill against the browser viewport (default).
|
|
13340
|
+
* `container` — fill inside resolved container: optional `[containerDom]`, else nearest parent `[fillEmptySpace]`, else document root.
|
|
13341
|
+
*/
|
|
13342
|
+
this.mode = 'viewport';
|
|
13343
|
+
this.heightChanged = new EventEmitter();
|
|
13344
|
+
this._rafId = null;
|
|
13345
|
+
this._viewReady = false;
|
|
13346
|
+
this._onWindowResize = () => this.scheduleMeasure();
|
|
13347
|
+
}
|
|
13348
|
+
ngAfterViewInit() {
|
|
13349
|
+
this._viewReady = true;
|
|
13350
|
+
this.syncFillWatchersAndMeasure();
|
|
13351
|
+
}
|
|
13352
|
+
ngOnChanges(_changes) {
|
|
13353
|
+
if (!this._viewReady) {
|
|
13354
|
+
return;
|
|
13355
|
+
}
|
|
13356
|
+
this.syncFillWatchersAndMeasure();
|
|
13357
|
+
}
|
|
13358
|
+
ngOnDestroy() {
|
|
13359
|
+
this.cancelScheduledMeasure();
|
|
13360
|
+
this.teardownFillLayoutWatchers();
|
|
13361
|
+
super.ngOnDestroy();
|
|
13362
|
+
}
|
|
13363
|
+
Refresh() {
|
|
13364
|
+
this.measureAndApply();
|
|
13365
|
+
}
|
|
13366
|
+
scheduleMeasure() {
|
|
13367
|
+
if (this._rafId !== null) {
|
|
13368
|
+
cancelAnimationFrame(this._rafId);
|
|
13369
|
+
}
|
|
13370
|
+
this._rafId = requestAnimationFrame(() => {
|
|
13371
|
+
this._rafId = null;
|
|
13372
|
+
this.measureAndApply();
|
|
13373
|
+
});
|
|
13374
|
+
}
|
|
13375
|
+
cancelScheduledMeasure() {
|
|
13376
|
+
if (this._rafId !== null) {
|
|
13377
|
+
cancelAnimationFrame(this._rafId);
|
|
13378
|
+
this._rafId = null;
|
|
13379
|
+
}
|
|
13380
|
+
}
|
|
13381
|
+
syncFillWatchersAndMeasure() {
|
|
13382
|
+
this.teardownFillLayoutWatchers();
|
|
13383
|
+
this.cancelScheduledMeasure();
|
|
13384
|
+
if (this.disable) {
|
|
13385
|
+
return;
|
|
13386
|
+
}
|
|
13387
|
+
if (this.height != null) {
|
|
13388
|
+
this.measureAndApply();
|
|
13389
|
+
return;
|
|
13390
|
+
}
|
|
13391
|
+
this.setupFillLayoutWatchers();
|
|
13392
|
+
this.scheduleMeasure();
|
|
13393
|
+
}
|
|
13394
|
+
setupFillLayoutWatchers() {
|
|
13395
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
13396
|
+
window.addEventListener('resize', this._onWindowResize);
|
|
13397
|
+
return;
|
|
13398
|
+
}
|
|
13399
|
+
const roTarget = this.getContainerElement();
|
|
13400
|
+
this._ro = new ResizeObserver(() => this.scheduleMeasure());
|
|
13401
|
+
this._ro.observe(roTarget);
|
|
13402
|
+
window.addEventListener('resize', this._onWindowResize);
|
|
13403
|
+
}
|
|
13404
|
+
teardownFillLayoutWatchers() {
|
|
13405
|
+
this._ro?.disconnect();
|
|
13406
|
+
this._ro = undefined;
|
|
13407
|
+
window.removeEventListener('resize', this._onWindowResize);
|
|
13408
|
+
}
|
|
13409
|
+
measureAndApply() {
|
|
13410
|
+
if (this.disable) {
|
|
13411
|
+
return;
|
|
13412
|
+
}
|
|
13413
|
+
const dom = this._el.nativeElement;
|
|
13414
|
+
if (dom.getClientRects().length === 0) {
|
|
13415
|
+
return;
|
|
13416
|
+
}
|
|
13417
|
+
if (this.height != null) {
|
|
13418
|
+
this.applyFixedHeight(dom);
|
|
13419
|
+
return;
|
|
13420
|
+
}
|
|
13421
|
+
const hostRect = dom.getBoundingClientRect();
|
|
13422
|
+
const containerRect = this.getContainerMetrics();
|
|
13423
|
+
const offsetTop = this.getOffsetTop(hostRect, containerRect);
|
|
13424
|
+
const decrementPx = this.parseCssSize(this.decrement);
|
|
13425
|
+
const available = this.calculateAvailableHeight(containerRect.height, offsetTop, decrementPx);
|
|
13426
|
+
this.applyFillHeight(dom, available);
|
|
13427
|
+
}
|
|
13428
|
+
/**
|
|
13429
|
+
* Element used for ResizeObserver and for `container` mode metrics:
|
|
13430
|
+
* `[containerDom]` → parent `closest('[fillEmptySpace]')` → `document.documentElement`.
|
|
13431
|
+
* Uses `parentElement` before `closest` so the host itself is not selected.
|
|
13432
|
+
*/
|
|
13433
|
+
getContainerElement() {
|
|
13434
|
+
if (this.containerDom) {
|
|
13435
|
+
return this.containerDom;
|
|
13436
|
+
}
|
|
13437
|
+
const host = this._el.nativeElement;
|
|
13438
|
+
const parentFill = host.parentElement?.closest('[fillEmptySpace]');
|
|
13439
|
+
if (parentFill) {
|
|
13440
|
+
return parentFill;
|
|
13441
|
+
}
|
|
13442
|
+
return document.documentElement;
|
|
13443
|
+
}
|
|
13444
|
+
getContainerMetrics() {
|
|
13445
|
+
if (this.mode === 'viewport') {
|
|
13446
|
+
// Same spirit as legacy `100svh`: viewport height; explicit container is not used for sizing.
|
|
13447
|
+
return { top: 0, height: window.innerHeight };
|
|
13448
|
+
}
|
|
13449
|
+
const r = this.getContainerElement().getBoundingClientRect();
|
|
13450
|
+
return { top: r.top, height: r.height };
|
|
13451
|
+
}
|
|
13452
|
+
getOffsetTop(hostRect, containerRect) {
|
|
13453
|
+
return this.dontUseTopBound ? 0 : hostRect.top - containerRect.top;
|
|
13454
|
+
}
|
|
13455
|
+
calculateAvailableHeight(containerHeight, offsetTop, decrementPx) {
|
|
13456
|
+
return Math.max(0, containerHeight - offsetTop - decrementPx);
|
|
13457
|
+
}
|
|
13458
|
+
applyFillHeight(dom, px) {
|
|
13459
|
+
const prop = this.getStyleProperty();
|
|
13460
|
+
if (prop === 'min-height' || prop === 'max-height') {
|
|
13461
|
+
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13462
|
+
}
|
|
13463
|
+
this._renderer2.setStyle(dom, prop, `${px}px`);
|
|
13464
|
+
this.heightChanged.emit();
|
|
13465
|
+
}
|
|
13466
|
+
applyFixedHeight(dom) {
|
|
13467
|
+
if (this.setMinHeight) {
|
|
13468
|
+
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13469
|
+
}
|
|
13470
|
+
if (this.setMaxHeight) {
|
|
13471
|
+
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13472
|
+
}
|
|
13473
|
+
const prop = this.setMinHeight ? 'min-height' : this.setMaxHeight ? 'max-height' : 'height';
|
|
13474
|
+
this._renderer2.setStyle(dom, prop, `${this.height}px`);
|
|
13475
|
+
this.heightChanged.emit();
|
|
13476
|
+
}
|
|
13477
|
+
getStyleProperty() {
|
|
13478
|
+
if (this.setMinHeight) {
|
|
13479
|
+
return 'min-height';
|
|
13480
|
+
}
|
|
13481
|
+
if (this.setMaxHeight) {
|
|
13482
|
+
return 'max-height';
|
|
13483
|
+
}
|
|
13484
|
+
return 'height';
|
|
13485
|
+
}
|
|
13486
|
+
parseCssSize(value) {
|
|
13487
|
+
if (value == null || value === '') {
|
|
13488
|
+
return 0;
|
|
13489
|
+
}
|
|
13490
|
+
if (typeof value === 'number' && !Number.isNaN(value)) {
|
|
13491
|
+
return value;
|
|
13492
|
+
}
|
|
13493
|
+
const s = String(value).trim().toLowerCase();
|
|
13494
|
+
if (!s) {
|
|
13495
|
+
return 0;
|
|
13496
|
+
}
|
|
13497
|
+
if (s.endsWith('rem')) {
|
|
13498
|
+
const n = parseFloat(s);
|
|
13499
|
+
if (Number.isNaN(n)) {
|
|
13500
|
+
return 0;
|
|
13501
|
+
}
|
|
13502
|
+
const rootPx = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
13503
|
+
return n * rootPx;
|
|
13504
|
+
}
|
|
13505
|
+
if (s.endsWith('px')) {
|
|
13506
|
+
const n = parseFloat(s);
|
|
13507
|
+
return Number.isNaN(n) ? 0 : n;
|
|
13508
|
+
}
|
|
13509
|
+
const n = parseFloat(s);
|
|
13510
|
+
return Number.isNaN(n) ? 0 : n;
|
|
13511
|
+
}
|
|
13512
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FillEmptySpaceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13513
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: FillEmptySpaceDirective, isStandalone: false, selector: "[fillEmptySpace]", inputs: { mode: "mode", containerDom: "containerDom", decrement: "decrement", disable: "disable", height: "height", dontUseTopBound: "dontUseTopBound", setMinHeight: "setMinHeight", setMaxHeight: "setMaxHeight" }, outputs: { heightChanged: "heightChanged" }, exportAs: ["fillEmptySpace"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
13514
|
+
}
|
|
13515
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FillEmptySpaceDirective, decorators: [{
|
|
13516
|
+
type: Directive,
|
|
13517
|
+
args: [{
|
|
13518
|
+
selector: '[fillEmptySpace]',
|
|
13519
|
+
exportAs: 'fillEmptySpace',
|
|
13520
|
+
standalone: false
|
|
13521
|
+
}]
|
|
13522
|
+
}], propDecorators: { mode: [{
|
|
13523
|
+
type: Input
|
|
13524
|
+
}], containerDom: [{
|
|
13525
|
+
type: Input
|
|
13526
|
+
}], decrement: [{
|
|
13527
|
+
type: Input
|
|
13528
|
+
}], disable: [{
|
|
13529
|
+
type: Input
|
|
13530
|
+
}], height: [{
|
|
13531
|
+
type: Input
|
|
13532
|
+
}], dontUseTopBound: [{
|
|
13533
|
+
type: Input
|
|
13534
|
+
}], setMinHeight: [{
|
|
13535
|
+
type: Input
|
|
13536
|
+
}], setMaxHeight: [{
|
|
13537
|
+
type: Input
|
|
13538
|
+
}], heightChanged: [{
|
|
13539
|
+
type: Output
|
|
13060
13540
|
}] } });
|
|
13061
13541
|
|
|
13062
13542
|
class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
|
|
@@ -13066,8 +13546,10 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
13066
13546
|
this.sectionClass = true;
|
|
13067
13547
|
this.ismodal = false;
|
|
13068
13548
|
this.isinsideview = false;
|
|
13549
|
+
this._scrollLayoutContext = inject(ScrollLayoutContextHolder);
|
|
13069
13550
|
}
|
|
13070
13551
|
ngOnInit() {
|
|
13552
|
+
this._scrollLayoutContext.setMode('isolated');
|
|
13071
13553
|
this.settings = BarsaApi.Common.Util.TryGetValue(this._activatedRoute, 'data._value.pageData.Component.Settings', null);
|
|
13072
13554
|
const isModal = this.settings?.IsModal;
|
|
13073
13555
|
if (isModal) {
|
|
@@ -13096,42 +13578,56 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
13096
13578
|
ngOnDestroy() {
|
|
13097
13579
|
super.ngOnDestroy();
|
|
13098
13580
|
// add ngondestroy because to call routingservice ngondestroy.
|
|
13099
|
-
// if i dont add this ngondestroy in routingservice do not call.
|
|
13581
|
+
// if i dont add this ngondestroy in routingservice do not call.
|
|
13100
13582
|
}
|
|
13101
13583
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MasterDetailsPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13102
|
-
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.modal": "this.ismodal", "class.insideview": "this.isinsideview" } }, providers: [RoutingService, ContainerService], usesInheritance: true, ngImport: i0, template: `
|
|
13103
|
-
<div
|
|
13584
|
+
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.modal": "this.ismodal", "class.insideview": "this.isinsideview" } }, providers: [RoutingService, ContainerService, ScrollLayoutContextHolder], usesInheritance: true, ngImport: i0, template: `
|
|
13585
|
+
<div
|
|
13586
|
+
class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row tw-p-2"
|
|
13587
|
+
fillEmptySpace
|
|
13588
|
+
style="box-sizing: border-box;"
|
|
13589
|
+
>
|
|
13104
13590
|
<!-- لیست -->
|
|
13105
13591
|
<div class="tw-w-full md:tw-w-96 master">
|
|
13106
13592
|
<ng-container #containerRef></ng-container>
|
|
13107
13593
|
</div>
|
|
13108
13594
|
<bnrc-splitter></bnrc-splitter>
|
|
13109
13595
|
<!-- جزئیات -->
|
|
13110
|
-
<div
|
|
13596
|
+
<div
|
|
13597
|
+
class="fd-dynamic-page__content tw-flex tw-flex-1 tw-flex-col tw-h-full tw-min-h-0 tw-w-full md:tw-flex-1
|
|
13598
|
+
!tw-overflow-hidden details tw-min-w-0 tw-p-0"
|
|
13599
|
+
>
|
|
13111
13600
|
<router-outlet name="details"></router-outlet>
|
|
13112
13601
|
</div>
|
|
13113
13602
|
</div>
|
|
13114
13603
|
<router-outlet></router-outlet>
|
|
13115
13604
|
<router-outlet name="dialog"></router-outlet>
|
|
13116
|
-
`, isInline: true, styles: [":host{display:block;height:
|
|
13605
|
+
`, isInline: true, styles: [":host{display:block;box-sizing:border-box}:host .fd-dynamic-page__content ::ng-deep bnrc-empty-page{flex:1 1 auto;min-height:0}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: SplitterComponent, selector: "bnrc-splitter", inputs: ["minWidth", "maxWidth", "config", "elDom"], outputs: ["spliterResized"] }, { kind: "directive", type: FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["mode", "containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight", "setMaxHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13117
13606
|
}
|
|
13118
13607
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MasterDetailsPageComponent, decorators: [{
|
|
13119
13608
|
type: Component,
|
|
13120
13609
|
args: [{ selector: 'bnrc-master-details-page', template: `
|
|
13121
|
-
<div
|
|
13610
|
+
<div
|
|
13611
|
+
class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row tw-p-2"
|
|
13612
|
+
fillEmptySpace
|
|
13613
|
+
style="box-sizing: border-box;"
|
|
13614
|
+
>
|
|
13122
13615
|
<!-- لیست -->
|
|
13123
13616
|
<div class="tw-w-full md:tw-w-96 master">
|
|
13124
13617
|
<ng-container #containerRef></ng-container>
|
|
13125
13618
|
</div>
|
|
13126
13619
|
<bnrc-splitter></bnrc-splitter>
|
|
13127
13620
|
<!-- جزئیات -->
|
|
13128
|
-
<div
|
|
13621
|
+
<div
|
|
13622
|
+
class="fd-dynamic-page__content tw-flex tw-flex-1 tw-flex-col tw-h-full tw-min-h-0 tw-w-full md:tw-flex-1
|
|
13623
|
+
!tw-overflow-hidden details tw-min-w-0 tw-p-0"
|
|
13624
|
+
>
|
|
13129
13625
|
<router-outlet name="details"></router-outlet>
|
|
13130
13626
|
</div>
|
|
13131
13627
|
</div>
|
|
13132
13628
|
<router-outlet></router-outlet>
|
|
13133
13629
|
<router-outlet name="dialog"></router-outlet>
|
|
13134
|
-
`, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;height:
|
|
13630
|
+
`, providers: [RoutingService, ContainerService, ScrollLayoutContextHolder], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;box-sizing:border-box}:host .fd-dynamic-page__content ::ng-deep bnrc-empty-page{flex:1 1 auto;min-height:0}\n"] }]
|
|
13135
13631
|
}], propDecorators: { _position: [{
|
|
13136
13632
|
type: HostBinding,
|
|
13137
13633
|
args: ['style.position']
|
|
@@ -13163,123 +13659,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
13163
13659
|
<ng-container #containerBottomRef></ng-container> `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, styles: [":host{min-height:100svh}\n"] }]
|
|
13164
13660
|
}] });
|
|
13165
13661
|
|
|
13166
|
-
class FillEmptySpaceDirective extends BaseDirective {
|
|
13167
|
-
constructor() {
|
|
13168
|
-
super(...arguments);
|
|
13169
|
-
this.heightChanged = new EventEmitter();
|
|
13170
|
-
this._height = '100svh';
|
|
13171
|
-
this.topBound = '';
|
|
13172
|
-
this.oldTopBound = '';
|
|
13173
|
-
}
|
|
13174
|
-
ngAfterViewInit() {
|
|
13175
|
-
super.ngAfterViewInit();
|
|
13176
|
-
if (this.disable) {
|
|
13177
|
-
return;
|
|
13178
|
-
}
|
|
13179
|
-
this._handleResize();
|
|
13180
|
-
}
|
|
13181
|
-
ngOnDestroy() {
|
|
13182
|
-
super.ngOnDestroy();
|
|
13183
|
-
this._ro?.disconnect();
|
|
13184
|
-
}
|
|
13185
|
-
Refresh() {
|
|
13186
|
-
this._setHeightOfFormContent();
|
|
13187
|
-
}
|
|
13188
|
-
_setHeight() {
|
|
13189
|
-
setTimeout(() => {
|
|
13190
|
-
this._setHeightOfFormContent();
|
|
13191
|
-
if (this.topBound === '0px') {
|
|
13192
|
-
setTimeout(() => {
|
|
13193
|
-
this._setHeightOfFormContent();
|
|
13194
|
-
}, 1000);
|
|
13195
|
-
}
|
|
13196
|
-
}, 100);
|
|
13197
|
-
}
|
|
13198
|
-
_handleResize() {
|
|
13199
|
-
if (typeof ResizeObserver === 'undefined') {
|
|
13200
|
-
return;
|
|
13201
|
-
} // چک کردن پشتیبانی مرورگر به جای try-catch
|
|
13202
|
-
this._ro = new ResizeObserver((entries) => {
|
|
13203
|
-
const entry = entries[0];
|
|
13204
|
-
// چک میکنیم که المنت مخفی (display: none) نباشد
|
|
13205
|
-
if (entry && entry.contentRect.height > 0) {
|
|
13206
|
-
requestAnimationFrame(() => {
|
|
13207
|
-
this._setHeight();
|
|
13208
|
-
});
|
|
13209
|
-
}
|
|
13210
|
-
});
|
|
13211
|
-
if (this._el?.nativeElement) {
|
|
13212
|
-
this._ro.observe(this._el.nativeElement);
|
|
13213
|
-
}
|
|
13214
|
-
}
|
|
13215
|
-
_setHeightOfFormContent() {
|
|
13216
|
-
const dom = this._el.nativeElement;
|
|
13217
|
-
const bound = dom.getBoundingClientRect();
|
|
13218
|
-
this.topBound = `${bound.top}px`;
|
|
13219
|
-
let decrement = this.decrement;
|
|
13220
|
-
if (this.oldTopBound && this.oldTopBound === this.topBound) {
|
|
13221
|
-
return;
|
|
13222
|
-
}
|
|
13223
|
-
if (this.setMinHeight) {
|
|
13224
|
-
this._renderer2.setStyle(dom, 'height', `auto`);
|
|
13225
|
-
}
|
|
13226
|
-
if (this.setMaxHeight) {
|
|
13227
|
-
this._renderer2.setStyle(dom, 'height', `auto`);
|
|
13228
|
-
}
|
|
13229
|
-
if (this.height) {
|
|
13230
|
-
let prop = 'height';
|
|
13231
|
-
this.setMinHeight && (prop = 'min-height');
|
|
13232
|
-
this.setMaxHeight && (prop = 'max-height');
|
|
13233
|
-
this._renderer2.setStyle(dom, prop, `${this.height}px`);
|
|
13234
|
-
this.heightChanged.emit();
|
|
13235
|
-
return;
|
|
13236
|
-
}
|
|
13237
|
-
if (this.containerDom) {
|
|
13238
|
-
this._height = `${this.containerDom.getBoundingClientRect().height}px`;
|
|
13239
|
-
}
|
|
13240
|
-
if (decrement) {
|
|
13241
|
-
decrement = ` - ${decrement}`;
|
|
13242
|
-
}
|
|
13243
|
-
else {
|
|
13244
|
-
decrement = '';
|
|
13245
|
-
}
|
|
13246
|
-
if (this.dontUseTopBound) {
|
|
13247
|
-
this.topBound = '0px';
|
|
13248
|
-
}
|
|
13249
|
-
this.oldTopBound = this.topBound;
|
|
13250
|
-
if (bound) {
|
|
13251
|
-
this._renderer2.setStyle(dom, this.setMinHeight ? 'min-height' : 'height', `calc(${this._height} - ${this.topBound}${decrement})`);
|
|
13252
|
-
}
|
|
13253
|
-
this.heightChanged.emit();
|
|
13254
|
-
}
|
|
13255
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FillEmptySpaceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13256
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: FillEmptySpaceDirective, isStandalone: false, selector: "[fillEmptySpace]", inputs: { containerDom: "containerDom", decrement: "decrement", disable: "disable", height: "height", dontUseTopBound: "dontUseTopBound", setMinHeight: "setMinHeight", setMaxHeight: "setMaxHeight" }, outputs: { heightChanged: "heightChanged" }, exportAs: ["fillEmptySpace"], usesInheritance: true, ngImport: i0 }); }
|
|
13257
|
-
}
|
|
13258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FillEmptySpaceDirective, decorators: [{
|
|
13259
|
-
type: Directive,
|
|
13260
|
-
args: [{
|
|
13261
|
-
selector: '[fillEmptySpace]',
|
|
13262
|
-
exportAs: 'fillEmptySpace',
|
|
13263
|
-
standalone: false
|
|
13264
|
-
}]
|
|
13265
|
-
}], propDecorators: { containerDom: [{
|
|
13266
|
-
type: Input
|
|
13267
|
-
}], decrement: [{
|
|
13268
|
-
type: Input
|
|
13269
|
-
}], disable: [{
|
|
13270
|
-
type: Input
|
|
13271
|
-
}], height: [{
|
|
13272
|
-
type: Input
|
|
13273
|
-
}], dontUseTopBound: [{
|
|
13274
|
-
type: Input
|
|
13275
|
-
}], setMinHeight: [{
|
|
13276
|
-
type: Input
|
|
13277
|
-
}], setMaxHeight: [{
|
|
13278
|
-
type: Input
|
|
13279
|
-
}], heightChanged: [{
|
|
13280
|
-
type: Output
|
|
13281
|
-
}] } });
|
|
13282
|
-
|
|
13283
13662
|
class PortalPageSidebarComponent extends PageBaseComponent {
|
|
13284
13663
|
constructor() {
|
|
13285
13664
|
super(...arguments);
|
|
@@ -13294,7 +13673,7 @@ class PortalPageSidebarComponent extends PageBaseComponent {
|
|
|
13294
13673
|
<div class="sidebar" fillEmptySpace><ng-container #containerRef></ng-container></div>
|
|
13295
13674
|
<div class="mainside"><router-outlet name="mainside"></router-outlet></div>
|
|
13296
13675
|
</div>
|
|
13297
|
-
<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight", "setMaxHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13676
|
+
<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["mode", "containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight", "setMaxHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13298
13677
|
}
|
|
13299
13678
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PortalPageSidebarComponent, decorators: [{
|
|
13300
13679
|
type: Component,
|
|
@@ -13601,7 +13980,7 @@ class BaseViewPropsComponent extends BaseComponent {
|
|
|
13601
13980
|
return `${row.$Group ? row.$Group : row.Id}${index}`;
|
|
13602
13981
|
}
|
|
13603
13982
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewPropsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13604
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewPropsComponent, isStandalone: false, selector: "bnrc-base-view-props", inputs: { detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", detailsTextFunction: "detailsTextFunction", moDataList: "moDataList", reportId: "reportId", allColumns: "allColumns", hideOpenIcon: "hideOpenIcon", isCheckList: "isCheckList", allChecked: "allChecked", canView: "canView", visibility: "visibility", level: "level", expanded: "expanded", styleIndex: "styleIndex", parentExpanded: "parentExpanded", access: "access", groupby: "groupby", UlvMainCtrlr: "UlvMainCtrlr", conditionalFormats: "conditionalFormats", deviceName: "deviceName", deviceSize: "deviceSize", contextMenuItems: "contextMenuItems", columns: "columns", allowInlineEdit: "allowInlineEdit", secondaryColumns: "secondaryColumns", popin: "popin", typeDefId: "typeDefId", columnsCount: "columnsCount", mobileOrTablet: "mobileOrTablet", containerWidth: "containerWidth", newInlineEditMo: "newInlineEditMo", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", rowHoverable: "rowHoverable", openOnClick: "openOnClick", tlbButtons: "tlbButtons", setting: "setting", parameters: "parameters", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", rowActivable: "rowActivable", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", isChecked: "isChecked", navigationArrow: "navigationArrow" }, outputs: { resetWorkflowState: "resetWorkflowState", deselectAll: "deselectAll", escapeKey: "escapeKey", rowCheck: "rowCheck", workflowShareButtons: "workflowShareButtons", rowClick: "rowClick", ulvCommand: "ulvCommand", editFormPanelCancel: "editFormPanelCancel", editFormPanelSave: "editFormPanelSave", selectNextInlineRecord: "selectNextInlineRecord", action: "action", expandClick: "expandClick", editFormPanelValueChange: "editFormPanelValueChange", cartableFormClosed: "cartableFormClosed" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13983
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewPropsComponent, isStandalone: false, selector: "bnrc-base-view-props", inputs: { detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", detailsTextFunction: "detailsTextFunction", moDataList: "moDataList", reportId: "reportId", allColumns: "allColumns", hideOpenIcon: "hideOpenIcon", isCheckList: "isCheckList", allChecked: "allChecked", canView: "canView", visibility: "visibility", level: "level", expanded: "expanded", styleIndex: "styleIndex", parentExpanded: "parentExpanded", access: "access", groupby: "groupby", UlvMainCtrlr: "UlvMainCtrlr", conditionalFormats: "conditionalFormats", deviceName: "deviceName", deviceSize: "deviceSize", contextMenuItems: "contextMenuItems", columns: "columns", allowInlineEdit: "allowInlineEdit", secondaryColumns: "secondaryColumns", popin: "popin", typeDefId: "typeDefId", columnsCount: "columnsCount", mobileOrTablet: "mobileOrTablet", containerWidth: "containerWidth", newInlineEditMo: "newInlineEditMo", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", rowHoverable: "rowHoverable", openOnClick: "openOnClick", tlbButtons: "tlbButtons", setting: "setting", parameters: "parameters", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", rowActivable: "rowActivable", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", isChecked: "isChecked", navigationArrow: "navigationArrow", alternateEditObjectColumn: "alternateEditObjectColumn", disableHyperLink: "disableHyperLink", columnsHyperLink: "columnsHyperLink" }, outputs: { resetWorkflowState: "resetWorkflowState", deselectAll: "deselectAll", escapeKey: "escapeKey", rowCheck: "rowCheck", workflowShareButtons: "workflowShareButtons", rowClick: "rowClick", ulvCommand: "ulvCommand", editFormPanelCancel: "editFormPanelCancel", editFormPanelSave: "editFormPanelSave", selectNextInlineRecord: "selectNextInlineRecord", action: "action", expandClick: "expandClick", editFormPanelValueChange: "editFormPanelValueChange", cartableFormClosed: "cartableFormClosed" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13605
13984
|
}
|
|
13606
13985
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewPropsComponent, decorators: [{
|
|
13607
13986
|
type: Component,
|
|
@@ -13707,6 +14086,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
13707
14086
|
type: Input
|
|
13708
14087
|
}], navigationArrow: [{
|
|
13709
14088
|
type: Input
|
|
14089
|
+
}], alternateEditObjectColumn: [{
|
|
14090
|
+
type: Input
|
|
14091
|
+
}], disableHyperLink: [{
|
|
14092
|
+
type: Input
|
|
14093
|
+
}], columnsHyperLink: [{
|
|
14094
|
+
type: Input
|
|
13710
14095
|
}], resetWorkflowState: [{
|
|
13711
14096
|
type: Output
|
|
13712
14097
|
}], deselectAll: [{
|
|
@@ -14218,7 +14603,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14218
14603
|
});
|
|
14219
14604
|
}
|
|
14220
14605
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewItemPropsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14221
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewItemPropsComponent, isStandalone: false, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", isslider: "isslider", attachmentViewType: "attachmentViewType", dirtyColumns: "dirtyColumns", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", hideHeader: "hideHeader", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", maxHeightHeader: "maxHeightHeader", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14606
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BaseViewItemPropsComponent, isStandalone: false, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", disableEllapsis: "disableEllapsis", isslider: "isslider", attachmentViewType: "attachmentViewType", dirtyColumns: "dirtyColumns", contextMenuOverflowText: "contextMenuOverflowText", detailsComponent: "detailsComponent", detailsColumns: "detailsColumns", detailsText: "detailsText", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", hideHeader: "hideHeader", isdirty: "isdirty", isChecked: "isChecked", hideDetailsText: "hideDetailsText", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inlineEditWithoutSelection: "inlineEditWithoutSelection", inDialog: "inDialog", isMobile: "isMobile", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", disableHyperLink: "disableHyperLink", columnsHyperLink: "columnsHyperLink", rowIndicatorColor: "rowIndicatorColor", alternateEditObjectColumn: "alternateEditObjectColumn", maxHeightHeader: "maxHeightHeader", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14222
14607
|
}
|
|
14223
14608
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
|
|
14224
14609
|
type: Component,
|
|
@@ -14299,8 +14684,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
14299
14684
|
type: Input
|
|
14300
14685
|
}], noSaveInlineEditInServer: [{
|
|
14301
14686
|
type: Input
|
|
14687
|
+
}], disableHyperLink: [{
|
|
14688
|
+
type: Input
|
|
14689
|
+
}], columnsHyperLink: [{
|
|
14690
|
+
type: Input
|
|
14302
14691
|
}], rowIndicatorColor: [{
|
|
14303
14692
|
type: Input
|
|
14693
|
+
}], alternateEditObjectColumn: [{
|
|
14694
|
+
type: Input
|
|
14304
14695
|
}], maxHeightHeader: [{
|
|
14305
14696
|
type: Input
|
|
14306
14697
|
}], UlvMainCtrlr: [{
|
|
@@ -15583,6 +15974,7 @@ class RenderUlvViewerDirective extends BaseDirective {
|
|
|
15583
15974
|
this._injector = inject(Injector);
|
|
15584
15975
|
this._vcr = inject(ViewContainerRef);
|
|
15585
15976
|
this._cdr = inject(ChangeDetectorRef);
|
|
15977
|
+
this._renderer = inject(Renderer2);
|
|
15586
15978
|
}
|
|
15587
15979
|
ngAfterViewInit() {
|
|
15588
15980
|
super.ngAfterViewInit();
|
|
@@ -15613,6 +16005,7 @@ class RenderUlvViewerDirective extends BaseDirective {
|
|
|
15613
16005
|
.getComponent(moduleName, modulePath, componentName, selector, this._injector)
|
|
15614
16006
|
.pipe(takeUntil(this._onDestroy$), tap((component) => {
|
|
15615
16007
|
component.instance.id = getUniqueId(4);
|
|
16008
|
+
this._renderer.addClass(component.location.nativeElement, 'ulv-viewer');
|
|
15616
16009
|
component.instance.context = context;
|
|
15617
16010
|
component.instance.isReportPage = this.isReportPage;
|
|
15618
16011
|
component.instance.layoutInfo = this.layoutInfo;
|
|
@@ -15964,15 +16357,15 @@ class UlvCommandDirective extends BaseDirective {
|
|
|
15964
16357
|
setTimeout(() => {
|
|
15965
16358
|
// add settimeout because we need select row before execute row
|
|
15966
16359
|
// executeUlvCommandHandler(button);
|
|
15967
|
-
this.$execute.next();
|
|
16360
|
+
this.$execute.next(event);
|
|
15968
16361
|
});
|
|
15969
16362
|
return false;
|
|
15970
16363
|
}
|
|
15971
16364
|
ngOnInit() {
|
|
15972
16365
|
super.ngOnInit();
|
|
15973
16366
|
this.$execute
|
|
15974
|
-
.pipe(exhaustMap(() => {
|
|
15975
|
-
executeUlvCommandHandler(this.ulvCommandHandler);
|
|
16367
|
+
.pipe(exhaustMap((e) => {
|
|
16368
|
+
executeUlvCommandHandler(this.ulvCommandHandler, e);
|
|
15976
16369
|
return timer(1000); // ۱ ثانیه بلاک میشود
|
|
15977
16370
|
}))
|
|
15978
16371
|
.subscribe();
|
|
@@ -17496,6 +17889,111 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
17496
17889
|
type: Input
|
|
17497
17890
|
}] } });
|
|
17498
17891
|
|
|
17892
|
+
class MoLinkerDirective extends BaseDirective {
|
|
17893
|
+
constructor() {
|
|
17894
|
+
super(...arguments);
|
|
17895
|
+
this.moLinker = input.required();
|
|
17896
|
+
this.alternateEditObjectColumn = input.required();
|
|
17897
|
+
this.disableHyperLink = input(false);
|
|
17898
|
+
this._routingService = inject(RoutingService, { optional: true });
|
|
17899
|
+
this._activatedRoute = inject(ActivatedRoute);
|
|
17900
|
+
this._moVal = inject(MoValuePipe);
|
|
17901
|
+
this._router = inject(Router);
|
|
17902
|
+
// ذخیره درخت روت محلی برای کلیک معمولی در همین صفحه
|
|
17903
|
+
this._localUrlTree = null;
|
|
17904
|
+
}
|
|
17905
|
+
ngOnInit() {
|
|
17906
|
+
super.ngOnInit();
|
|
17907
|
+
if (!this._routingService) {
|
|
17908
|
+
return;
|
|
17909
|
+
}
|
|
17910
|
+
if (!this.disableHyperLink()) {
|
|
17911
|
+
this._renderer2.addClass(this._el.nativeElement, 'mo-linker');
|
|
17912
|
+
// ۱. ساختن روت محلی (وابسته به روت فعلی) برای کلیکهای معمولی
|
|
17913
|
+
this._localUrlTree = this.buildLocalUrlTree(this._routingService.isFirstPage, this.alternateEditObjectColumn());
|
|
17914
|
+
// ۲. ساختن روت تب جدید (از ریشه اصلی / بدون ActivatedRoute) و ست کردن روی href
|
|
17915
|
+
const newTabUrl = this.buildNewTabUrl();
|
|
17916
|
+
if (newTabUrl) {
|
|
17917
|
+
// فرض بر HashLocationStrategy (دارای #) است؛ اگر پراجکت شما بدون هشتگ است، '#' + را پاک کنید
|
|
17918
|
+
this._renderer2.setAttribute(this._el.nativeElement, 'href', '#' + newTabUrl);
|
|
17919
|
+
}
|
|
17920
|
+
}
|
|
17921
|
+
}
|
|
17922
|
+
// گوش دادن به رویداد کلیک
|
|
17923
|
+
onClick(event) {
|
|
17924
|
+
if (this.disableHyperLink() || !this._routingService) {
|
|
17925
|
+
return;
|
|
17926
|
+
}
|
|
17927
|
+
// تشخیص کلیک برای تب جدید (Ctrl, Cmd, Shift یا کلیک وسط)
|
|
17928
|
+
const isNewTabModifier = event.ctrlKey || event.metaKey || event.shiftKey || event.button === 1;
|
|
17929
|
+
if (isNewTabModifier) {
|
|
17930
|
+
// هیچ کاری نکن! بگذار مرورگر به طور طبیعی آدرس href (یعنی روت ریشه /landingpage) را در تب جدید باز کند
|
|
17931
|
+
return;
|
|
17932
|
+
}
|
|
17933
|
+
// اگر کلیک معمولی بود، جلوی رفتار مرورگر (باز کردن href) را میگیریم
|
|
17934
|
+
event.preventDefault();
|
|
17935
|
+
// و روت محلی و داخلی خودمان را اجرا میکنیم
|
|
17936
|
+
if (this._localUrlTree) {
|
|
17937
|
+
this._router.navigateByUrl(this._localUrlTree);
|
|
17938
|
+
}
|
|
17939
|
+
}
|
|
17940
|
+
/**
|
|
17941
|
+
* ساخت آدرس برای تب جدید: کاملاً مستقل از ریشه اصلی سایت (بدون relativeTo)
|
|
17942
|
+
*/
|
|
17943
|
+
buildNewTabUrl() {
|
|
17944
|
+
const mo = this.moLinker();
|
|
17945
|
+
const x = {
|
|
17946
|
+
MoId: mo.$State === 'New' ? '0' : mo.Id,
|
|
17947
|
+
TypeDefId: mo.$TypeDefId,
|
|
17948
|
+
ReportId: mo.$ReportId,
|
|
17949
|
+
ActionType: 'ShowForm'
|
|
17950
|
+
};
|
|
17951
|
+
// ساخت درخت روت از ریشه اصلی (مطلق)
|
|
17952
|
+
const tree = this._router.createUrlTree(['/landingpage/query'], {
|
|
17953
|
+
// اگر نیاز دارید کوئریپارامترهای خاصی هم به تب جدید بفرستید:
|
|
17954
|
+
queryParams: { actionList: JSON.stringify([x]) }
|
|
17955
|
+
});
|
|
17956
|
+
return this._router.serializeUrl(tree);
|
|
17957
|
+
}
|
|
17958
|
+
/**
|
|
17959
|
+
* همان متد قبلی شما که روت را بر اساس ActivatedRoute فعلی میسازد
|
|
17960
|
+
*/
|
|
17961
|
+
buildLocalUrlTree(isPage, alternateEditObjectColumn) {
|
|
17962
|
+
let alternateMo;
|
|
17963
|
+
if (alternateEditObjectColumn) {
|
|
17964
|
+
alternateMo = this._moVal.transform(alternateEditObjectColumn, this.moLinker(), false);
|
|
17965
|
+
if (!alternateMo) {
|
|
17966
|
+
return null;
|
|
17967
|
+
}
|
|
17968
|
+
}
|
|
17969
|
+
const mo = alternateMo ?? this.moLinker();
|
|
17970
|
+
const navigationParams = this._portalService.buildNavigationParams(null, mo, null, '', this._routingService?.isFirstPage ?? true);
|
|
17971
|
+
const primarySegment = isPage ? 'form' : 'popup';
|
|
17972
|
+
return this._router.createUrlTree([
|
|
17973
|
+
primarySegment,
|
|
17974
|
+
{
|
|
17975
|
+
outlets: {
|
|
17976
|
+
main: ['show', navigationParams]
|
|
17977
|
+
}
|
|
17978
|
+
}
|
|
17979
|
+
], {
|
|
17980
|
+
relativeTo: this._activatedRoute // وابستگی به روت فعلی فقط برای کلیک معمولی
|
|
17981
|
+
});
|
|
17982
|
+
}
|
|
17983
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MoLinkerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17984
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: MoLinkerDirective, isStandalone: false, selector: "[moLinker]", inputs: { moLinker: { classPropertyName: "moLinker", publicName: "moLinker", isSignal: true, isRequired: true, transformFunction: null }, alternateEditObjectColumn: { classPropertyName: "alternateEditObjectColumn", publicName: "alternateEditObjectColumn", isSignal: true, isRequired: true, transformFunction: null }, disableHyperLink: { classPropertyName: "disableHyperLink", publicName: "disableHyperLink", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)" } }, usesInheritance: true, ngImport: i0 }); }
|
|
17985
|
+
}
|
|
17986
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MoLinkerDirective, decorators: [{
|
|
17987
|
+
type: Directive,
|
|
17988
|
+
args: [{
|
|
17989
|
+
selector: '[moLinker]',
|
|
17990
|
+
standalone: false
|
|
17991
|
+
}]
|
|
17992
|
+
}], propDecorators: { onClick: [{
|
|
17993
|
+
type: HostListener,
|
|
17994
|
+
args: ['click', ['$event']]
|
|
17995
|
+
}] } });
|
|
17996
|
+
|
|
17499
17997
|
class PortalDynamicPageResolver {
|
|
17500
17998
|
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
17501
17999
|
constructor() {
|
|
@@ -17636,6 +18134,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
17636
18134
|
args: [{ providedIn: 'root' }]
|
|
17637
18135
|
}], ctorParameters: () => [] });
|
|
17638
18136
|
|
|
18137
|
+
class EntitySettingsStore {
|
|
18138
|
+
constructor() {
|
|
18139
|
+
this.settingsService = inject(BaseSettingsService);
|
|
18140
|
+
this.subjects = new Map();
|
|
18141
|
+
}
|
|
18142
|
+
// ---------------------------------------------------
|
|
18143
|
+
// Subject
|
|
18144
|
+
// ---------------------------------------------------
|
|
18145
|
+
// ---------------------------------------------------
|
|
18146
|
+
// Observable
|
|
18147
|
+
// ---------------------------------------------------
|
|
18148
|
+
select$(entityId) {
|
|
18149
|
+
return this.getSubject(entityId).asObservable();
|
|
18150
|
+
}
|
|
18151
|
+
// ---------------------------------------------------
|
|
18152
|
+
// Snapshot
|
|
18153
|
+
// ---------------------------------------------------
|
|
18154
|
+
getSnapshot(entityId) {
|
|
18155
|
+
return this.getSubject(entityId).value;
|
|
18156
|
+
}
|
|
18157
|
+
// ---------------------------------------------------
|
|
18158
|
+
// Load
|
|
18159
|
+
// ---------------------------------------------------
|
|
18160
|
+
load(entityId) {
|
|
18161
|
+
const key = this.buildKey(entityId);
|
|
18162
|
+
const subject = this.getSubject(entityId);
|
|
18163
|
+
return this.settingsService.getSetting(key).pipe(tap$1((config) => {
|
|
18164
|
+
subject.next(config);
|
|
18165
|
+
}));
|
|
18166
|
+
}
|
|
18167
|
+
// ---------------------------------------------------
|
|
18168
|
+
// Save
|
|
18169
|
+
// ---------------------------------------------------
|
|
18170
|
+
save(entityId, partial) {
|
|
18171
|
+
const key = this.buildKey(entityId);
|
|
18172
|
+
const subject = this.getSubject(entityId);
|
|
18173
|
+
const current = subject.value ?? {};
|
|
18174
|
+
const updated = {
|
|
18175
|
+
...current,
|
|
18176
|
+
...partial
|
|
18177
|
+
};
|
|
18178
|
+
return this.settingsService.saveSetting(key, updated).pipe(tap$1(() => {
|
|
18179
|
+
subject.next(updated);
|
|
18180
|
+
}));
|
|
18181
|
+
}
|
|
18182
|
+
// ---------------------------------------------------
|
|
18183
|
+
// Replace
|
|
18184
|
+
// ---------------------------------------------------
|
|
18185
|
+
replace(entityId, value) {
|
|
18186
|
+
const key = this.buildKey(entityId);
|
|
18187
|
+
const subject = this.getSubject(entityId);
|
|
18188
|
+
return this.settingsService.saveSetting(key, value).pipe(tap$1(() => {
|
|
18189
|
+
subject.next(value);
|
|
18190
|
+
}));
|
|
18191
|
+
}
|
|
18192
|
+
// ---------------------------------------------------
|
|
18193
|
+
// Reset
|
|
18194
|
+
// ---------------------------------------------------
|
|
18195
|
+
reset(entityId) {
|
|
18196
|
+
const key = this.buildKey(entityId);
|
|
18197
|
+
const subject = this.getSubject(entityId);
|
|
18198
|
+
subject.next(null);
|
|
18199
|
+
return this.settingsService.removeSetting(key);
|
|
18200
|
+
}
|
|
18201
|
+
// ---------------------------------------------------
|
|
18202
|
+
// Cleanup
|
|
18203
|
+
// ---------------------------------------------------
|
|
18204
|
+
destroy(entityId) {
|
|
18205
|
+
const subject = this.subjects.get(entityId);
|
|
18206
|
+
if (subject) {
|
|
18207
|
+
subject.complete();
|
|
18208
|
+
this.subjects.delete(entityId);
|
|
18209
|
+
}
|
|
18210
|
+
}
|
|
18211
|
+
getSubject(entityId) {
|
|
18212
|
+
if (!this.subjects.has(entityId)) {
|
|
18213
|
+
this.subjects.set(entityId, new BehaviorSubject(null));
|
|
18214
|
+
}
|
|
18215
|
+
return this.subjects.get(entityId);
|
|
18216
|
+
}
|
|
18217
|
+
// ---------------------------------------------------
|
|
18218
|
+
// Utils
|
|
18219
|
+
// ---------------------------------------------------
|
|
18220
|
+
buildKey(entityId) {
|
|
18221
|
+
return `${this.keyPrefix}${entityId}`;
|
|
18222
|
+
}
|
|
18223
|
+
}
|
|
18224
|
+
|
|
18225
|
+
class CalendarSettingsStore extends EntitySettingsStore {
|
|
18226
|
+
constructor() {
|
|
18227
|
+
super(...arguments);
|
|
18228
|
+
this.keyPrefix = 'cal_cfg_';
|
|
18229
|
+
}
|
|
18230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18231
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsStore, providedIn: 'root' }); }
|
|
18232
|
+
}
|
|
18233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsStore, decorators: [{
|
|
18234
|
+
type: Injectable,
|
|
18235
|
+
args: [{
|
|
18236
|
+
providedIn: 'root'
|
|
18237
|
+
}]
|
|
18238
|
+
}] });
|
|
18239
|
+
|
|
17639
18240
|
class FormNewComponent extends BaseComponent {
|
|
17640
18241
|
constructor() {
|
|
17641
18242
|
super(...arguments);
|
|
@@ -17987,7 +18588,6 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
17987
18588
|
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
17988
18589
|
constructor() {
|
|
17989
18590
|
super();
|
|
17990
|
-
this.minheight = '100svh';
|
|
17991
18591
|
this.isMobile = getDeviceIsDesktop();
|
|
17992
18592
|
this._activatedRoute = inject(ActivatedRoute);
|
|
17993
18593
|
this._portalService = inject(PortalService);
|
|
@@ -17996,17 +18596,20 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
17996
18596
|
this._cdr = inject(ChangeDetectorRef);
|
|
17997
18597
|
this._loadingSource = new BehaviorSubject(false);
|
|
17998
18598
|
this._routingService = inject(RoutingService, { optional: true, skipSelf: true });
|
|
18599
|
+
this._runtimeNavCache = inject(RuntimeNavStateCacheService);
|
|
17999
18600
|
this.loading$ = this._loadingSource.asObservable().pipe(takeUntil(this._onDestroy$), debounceTime(200));
|
|
18000
18601
|
}
|
|
18001
18602
|
ngOnInit() {
|
|
18002
18603
|
super.ngOnInit();
|
|
18003
18604
|
this._activatedRoute.params
|
|
18004
|
-
.pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => this._extractIds(params)),
|
|
18005
|
-
|
|
18605
|
+
.pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => this._extractIds(params)),
|
|
18606
|
+
// tap((c) => (c.isReportPage ? (this.minheight = 'auto') : '100vh')),
|
|
18607
|
+
tap((c) => (c.ReportId = !c.ReportId ? c.ReportId2 : c.ReportId)), tap((_c) => this.containerRef.clear()), tap((navItem) => this._applicationCtrlService.selectNavGroupItem(navItem.Id)), tap((navItem) => this._applicationCtrlService.selectedReportId(navItem.ReportId)), tap((navItem) => this._applicationCtrlService.selectReportCaption(navItem.ReportId2)), tap((navItem) => (this._navItemParams = navItem)), switchMap$1((navItem) => from(this._finalizeNavItemFromCache(navItem)).pipe(switchMap$1((resolved) => this._portalService
|
|
18608
|
+
.renderUlvMainUi(resolved, this.containerRef, this._injector, resolved.isReportPage)
|
|
18006
18609
|
.pipe(catchError((_err) =>
|
|
18007
18610
|
// this._location.back();
|
|
18008
18611
|
// return throwError(() => new Error(err));
|
|
18009
|
-
of(true)))), tap((ulv) => this._setActiveReport(ulv)), finalize(() => {
|
|
18612
|
+
of(true)))))), tap((ulv) => this._setActiveReport(ulv)), finalize(() => {
|
|
18010
18613
|
this._setLoading(false);
|
|
18011
18614
|
}))
|
|
18012
18615
|
.subscribe(() => {
|
|
@@ -18040,18 +18643,28 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
18040
18643
|
const navIdOrFieldDefId = params.id.split('__')[0];
|
|
18041
18644
|
const reportId2OrLevelReportId = params.id.split('__').length > 1 ? params.id.split('__')[1] : '';
|
|
18042
18645
|
const reportIdOrMoId = params.id.split('__').length > 2 ? params.id.split('__')[2] : '';
|
|
18646
|
+
const typeDefFromUrl = lastText.startsWith('in') ? lastText.replace('in', '') : '';
|
|
18647
|
+
const cacheKey = lastText.startsWith('in') && typeDefFromUrl && reportIdOrMoId
|
|
18648
|
+
? buildRuntimeNavStateCacheKey(reportId2OrLevelReportId, reportIdOrMoId, typeDefFromUrl)
|
|
18649
|
+
: undefined;
|
|
18043
18650
|
return {
|
|
18044
18651
|
Id: navIdOrFieldDefId,
|
|
18045
18652
|
ReportId: reportIdOrMoId,
|
|
18046
18653
|
ReportId2: reportId2OrLevelReportId,
|
|
18047
18654
|
isReportPage: lastText === '' || this._masterDetailsPage(lastText),
|
|
18655
|
+
cacheKey,
|
|
18048
18656
|
OtherData: !lastText.startsWith('in')
|
|
18049
18657
|
? undefined
|
|
18050
18658
|
: {
|
|
18051
18659
|
FieldId: navIdOrFieldDefId,
|
|
18052
18660
|
IsInsideViewResult: true,
|
|
18053
18661
|
LevelReportId: reportId2OrLevelReportId,
|
|
18054
|
-
Mo: {
|
|
18662
|
+
Mo: {
|
|
18663
|
+
Id: reportIdOrMoId,
|
|
18664
|
+
$Caption: '',
|
|
18665
|
+
$TypeDefId: typeDefFromUrl,
|
|
18666
|
+
$LevelReportId: reportId2OrLevelReportId
|
|
18667
|
+
}
|
|
18055
18668
|
}
|
|
18056
18669
|
};
|
|
18057
18670
|
}
|
|
@@ -18063,19 +18676,78 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
18063
18676
|
this._cdr.detectChanges();
|
|
18064
18677
|
}
|
|
18065
18678
|
_onSelectionAdapter_SelectionChange() {
|
|
18066
|
-
|
|
18067
|
-
|
|
18068
|
-
|
|
18069
|
-
|
|
18070
|
-
|
|
18679
|
+
const routing = this._routingService;
|
|
18680
|
+
if (!routing?.masterDetails || !this._ulvMainCtrlr) {
|
|
18681
|
+
return;
|
|
18682
|
+
}
|
|
18683
|
+
const fieldId = this._navItemParams.ReportId2;
|
|
18684
|
+
const mo = this._ulvMainCtrlr.GetSelectedMetaObject();
|
|
18685
|
+
if (!mo) {
|
|
18686
|
+
return;
|
|
18687
|
+
}
|
|
18688
|
+
const moId = `${mo.Id}`;
|
|
18689
|
+
const levelReportId = mo.$LevelReportId || '';
|
|
18690
|
+
const typeDefId = `${mo.$TypeDefId}`;
|
|
18691
|
+
const cacheKey = buildRuntimeNavStateCacheKey(levelReportId, moId, typeDefId);
|
|
18692
|
+
const envelope = {
|
|
18693
|
+
version: 1,
|
|
18694
|
+
sessionId: '',
|
|
18695
|
+
createdAt: Date.now(),
|
|
18696
|
+
schema: RUNTIME_NAV_STATE_SCHEMA_V1,
|
|
18697
|
+
serializationMode: 'dto',
|
|
18698
|
+
payload: {
|
|
18699
|
+
OtherData: {
|
|
18700
|
+
FieldId: fieldId,
|
|
18701
|
+
IsInsideViewResult: true,
|
|
18702
|
+
LevelReportId: levelReportId,
|
|
18703
|
+
Mo: mo
|
|
18704
|
+
}
|
|
18071
18705
|
}
|
|
18072
|
-
|
|
18073
|
-
|
|
18074
|
-
|
|
18706
|
+
};
|
|
18707
|
+
void this._runtimeNavCache.save(cacheKey, envelope).finally(() => {
|
|
18708
|
+
routing.navigate(['details', `${fieldId}__${levelReportId}__${moId}__in${mo.$TypeDefId}`], true, null, null);
|
|
18709
|
+
});
|
|
18710
|
+
}
|
|
18711
|
+
/**
|
|
18712
|
+
* URL parse → cache get → merge/hydrate → finalized navItem (before renderUlvMainUi).
|
|
18713
|
+
*/
|
|
18714
|
+
async _finalizeNavItemFromCache(nav) {
|
|
18715
|
+
if (!nav.cacheKey || !nav.OtherData) {
|
|
18716
|
+
return nav;
|
|
18717
|
+
}
|
|
18718
|
+
const env = await this._runtimeNavCache.get(nav.cacheKey);
|
|
18719
|
+
return this._applyCachedEnvelope(nav, env);
|
|
18720
|
+
}
|
|
18721
|
+
_applyCachedEnvelope(nav, env) {
|
|
18722
|
+
if (!env?.payload || !nav.OtherData) {
|
|
18723
|
+
return nav;
|
|
18724
|
+
}
|
|
18725
|
+
if (env.schema !== RUNTIME_NAV_STATE_SCHEMA_V1 || env.version !== 1) {
|
|
18726
|
+
return nav;
|
|
18727
|
+
}
|
|
18728
|
+
if (env.expiresAt != null && Date.now() > env.expiresAt) {
|
|
18729
|
+
return nav;
|
|
18730
|
+
}
|
|
18731
|
+
const p = env.payload;
|
|
18732
|
+
if (env.serializationMode === 'dto' || env.serializationMode === 'hydrated') {
|
|
18733
|
+
const mergedOther = p.OtherData != null
|
|
18734
|
+
? {
|
|
18735
|
+
...nav.OtherData,
|
|
18736
|
+
...p.OtherData,
|
|
18737
|
+
Mo: p.OtherData.Mo ?? nav.OtherData.Mo
|
|
18738
|
+
}
|
|
18739
|
+
: nav.OtherData;
|
|
18740
|
+
return {
|
|
18741
|
+
...nav,
|
|
18742
|
+
OtherData: mergedOther,
|
|
18743
|
+
RuntimeState: p.RuntimeState ?? nav.RuntimeState,
|
|
18744
|
+
Context: p.Context ?? nav.Context
|
|
18745
|
+
};
|
|
18075
18746
|
}
|
|
18747
|
+
return nav;
|
|
18076
18748
|
}
|
|
18077
18749
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportNavigatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18078
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ReportNavigatorComponent, isStandalone: false, selector: "bnrc-report-navigator",
|
|
18750
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ReportNavigatorComponent, isStandalone: false, selector: "bnrc-report-navigator", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `<ng-container #containerRef></ng-container>`, isInline: true, styles: [":host{display:block;width:100%;background:var(--sapBaseColor)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18079
18751
|
}
|
|
18080
18752
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportNavigatorComponent, decorators: [{
|
|
18081
18753
|
type: Component,
|
|
@@ -18083,9 +18755,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
18083
18755
|
}], ctorParameters: () => [], propDecorators: { containerRef: [{
|
|
18084
18756
|
type: ViewChild,
|
|
18085
18757
|
args: ['containerRef', { static: true, read: ViewContainerRef }]
|
|
18086
|
-
}], minheight: [{
|
|
18087
|
-
type: HostBinding,
|
|
18088
|
-
args: ['style.min-height']
|
|
18089
18758
|
}] } });
|
|
18090
18759
|
|
|
18091
18760
|
class ReportEmptyPageComponent extends PageWithFormHandlerBaseComponent {
|
|
@@ -18359,6 +19028,88 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
18359
19028
|
}]
|
|
18360
19029
|
}] });
|
|
18361
19030
|
|
|
19031
|
+
/** Default CSS viewport wrapper class for report bodies (table, calendar, �) */
|
|
19032
|
+
const REPORT_GRID_VIEWPORT_CLASS = 'report-grid-wrapper';
|
|
19033
|
+
const DEFAULT_REPORT_LAYOUT_POLICY = Object.freeze({
|
|
19034
|
+
layout: 'inline',
|
|
19035
|
+
scroll: 'inherit'
|
|
19036
|
+
});
|
|
19037
|
+
/** Per-selector defaults (extend in app code if needed). Keys match `UiReportViewBase.UiComponent.Selector`. */
|
|
19038
|
+
const REPORT_TYPE_DEFAULT_POLICIES = Object.freeze({
|
|
19039
|
+
'bsu-ui-calendar': { layout: 'fill', scroll: 'self' }
|
|
19040
|
+
});
|
|
19041
|
+
function scrollLayoutModeToContextEnvironment(mode) {
|
|
19042
|
+
switch (mode) {
|
|
19043
|
+
case 'nested':
|
|
19044
|
+
return { scrollContainerDepth: 1, shell: 'page' };
|
|
19045
|
+
case 'isolated':
|
|
19046
|
+
return { scrollContainerDepth: 0, shell: 'page', viewportIsolation: true };
|
|
19047
|
+
default:
|
|
19048
|
+
return { scrollContainerDepth: 0, shell: 'page' };
|
|
19049
|
+
}
|
|
19050
|
+
}
|
|
19051
|
+
function contextDefaultsFromEnvironment(env) {
|
|
19052
|
+
if (env.scrollContainerDepth > 0) {
|
|
19053
|
+
return { scroll: 'inherit', layout: 'inline' };
|
|
19054
|
+
}
|
|
19055
|
+
return {};
|
|
19056
|
+
}
|
|
19057
|
+
function mergePolicyLayers(...layers) {
|
|
19058
|
+
let layout;
|
|
19059
|
+
let scroll;
|
|
19060
|
+
for (const layer of layers) {
|
|
19061
|
+
if (!layer) {
|
|
19062
|
+
continue;
|
|
19063
|
+
}
|
|
19064
|
+
if (layer.layout !== undefined) {
|
|
19065
|
+
layout = layer.layout;
|
|
19066
|
+
}
|
|
19067
|
+
if (layer.scroll !== undefined) {
|
|
19068
|
+
scroll = layer.scroll;
|
|
19069
|
+
}
|
|
19070
|
+
}
|
|
19071
|
+
return {
|
|
19072
|
+
layout: layout ?? DEFAULT_REPORT_LAYOUT_POLICY.layout,
|
|
19073
|
+
scroll: scroll ?? DEFAULT_REPORT_LAYOUT_POLICY.scroll
|
|
19074
|
+
};
|
|
19075
|
+
}
|
|
19076
|
+
/**
|
|
19077
|
+
* Final scroll arbitration (pure). Call after merge so registry/explicit `self` wins over nested inherit defaults.
|
|
19078
|
+
*/
|
|
19079
|
+
function resolveFinalScroll(merged, env) {
|
|
19080
|
+
if (merged.scroll === 'self') {
|
|
19081
|
+
return 'self';
|
|
19082
|
+
}
|
|
19083
|
+
if (env.scrollContainerDepth > 0) {
|
|
19084
|
+
return 'inherit';
|
|
19085
|
+
}
|
|
19086
|
+
return 'self';
|
|
19087
|
+
}
|
|
19088
|
+
/**
|
|
19089
|
+
* Pure, framework-agnostic policy resolution. Later layers in `extraPartials` override earlier ones.
|
|
19090
|
+
* Order: DEFAULT, contextDefaults(env), registryDefault, ...extraPartials (each partial last-wins on its own keys).
|
|
19091
|
+
*/
|
|
19092
|
+
function resolveReportLayoutPolicy(env, registryDefault, ...extraPartials) {
|
|
19093
|
+
const merged = mergePolicyLayers({ layout: DEFAULT_REPORT_LAYOUT_POLICY.layout, scroll: DEFAULT_REPORT_LAYOUT_POLICY.scroll }, contextDefaultsFromEnvironment(env), registryDefault, ...extraPartials);
|
|
19094
|
+
const scroll = resolveFinalScroll(merged, env);
|
|
19095
|
+
return Object.freeze({
|
|
19096
|
+
layout: merged.layout,
|
|
19097
|
+
scroll
|
|
19098
|
+
});
|
|
19099
|
+
}
|
|
19100
|
+
function getReportTypeDefaultPolicy(selector) {
|
|
19101
|
+
if (!selector) {
|
|
19102
|
+
return undefined;
|
|
19103
|
+
}
|
|
19104
|
+
return REPORT_TYPE_DEFAULT_POLICIES[selector];
|
|
19105
|
+
}
|
|
19106
|
+
/** Optional metadata path on view settings (low-code / future designer) */
|
|
19107
|
+
function extractLayoutPolicyFromView(view) {
|
|
19108
|
+
const s = view?.UiComponent?.Settings;
|
|
19109
|
+
const raw = s?.['ReportLayoutPolicy'];
|
|
19110
|
+
return raw;
|
|
19111
|
+
}
|
|
19112
|
+
|
|
18362
19113
|
class NoInternetComponent extends BaseComponent {
|
|
18363
19114
|
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
18364
19115
|
constructor() {
|
|
@@ -18822,8 +19573,10 @@ const directives = [
|
|
|
18822
19573
|
SimplebarDirective,
|
|
18823
19574
|
LeafletLongPressDirective,
|
|
18824
19575
|
ResizeHandlerDirective,
|
|
18825
|
-
SafeBottomDirective
|
|
19576
|
+
SafeBottomDirective,
|
|
19577
|
+
MoLinkerDirective
|
|
18826
19578
|
];
|
|
19579
|
+
const stores = [CalendarSettingsStore];
|
|
18827
19580
|
const services = [
|
|
18828
19581
|
PortalService,
|
|
18829
19582
|
UploadService,
|
|
@@ -18851,8 +19604,7 @@ const services = [
|
|
|
18851
19604
|
BarsaStorageService,
|
|
18852
19605
|
ServiceWorkerCommuncationService,
|
|
18853
19606
|
ApplicationCtrlrService,
|
|
18854
|
-
PushNotificationService
|
|
18855
|
-
CalendarSettingsService
|
|
19607
|
+
PushNotificationService
|
|
18856
19608
|
];
|
|
18857
19609
|
const pipes = [
|
|
18858
19610
|
NumeralPipe,
|
|
@@ -18915,7 +19667,10 @@ const pipes = [
|
|
|
18915
19667
|
MapToChatMessagePipe,
|
|
18916
19668
|
PicturesByGroupIdPipe,
|
|
18917
19669
|
ScopedCssPipe,
|
|
18918
|
-
ReportActionListPipe
|
|
19670
|
+
ReportActionListPipe,
|
|
19671
|
+
GetCssVariableValuePipe,
|
|
19672
|
+
FindColumnsPipe,
|
|
19673
|
+
ExistsColumnsPipe
|
|
18919
19674
|
];
|
|
18920
19675
|
const functionL1 = async function () {
|
|
18921
19676
|
if (BarsaApi.LoginFormData.Culture === 'fa-IR') {
|
|
@@ -19012,7 +19767,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19012
19767
|
useClass: SimpleTemplateEngine
|
|
19013
19768
|
},
|
|
19014
19769
|
...pipes,
|
|
19015
|
-
...services
|
|
19770
|
+
...services,
|
|
19771
|
+
...stores
|
|
19016
19772
|
]
|
|
19017
19773
|
};
|
|
19018
19774
|
}
|
|
@@ -19105,7 +19861,10 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19105
19861
|
MapToChatMessagePipe,
|
|
19106
19862
|
PicturesByGroupIdPipe,
|
|
19107
19863
|
ScopedCssPipe,
|
|
19108
|
-
ReportActionListPipe,
|
|
19864
|
+
ReportActionListPipe,
|
|
19865
|
+
GetCssVariableValuePipe,
|
|
19866
|
+
FindColumnsPipe,
|
|
19867
|
+
ExistsColumnsPipe, PlaceHolderDirective,
|
|
19109
19868
|
NumbersOnlyInputDirective,
|
|
19110
19869
|
RenderUlvViewerDirective,
|
|
19111
19870
|
RenderUlvPaginDirective,
|
|
@@ -19156,7 +19915,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19156
19915
|
SimplebarDirective,
|
|
19157
19916
|
LeafletLongPressDirective,
|
|
19158
19917
|
ResizeHandlerDirective,
|
|
19159
|
-
SafeBottomDirective
|
|
19918
|
+
SafeBottomDirective,
|
|
19919
|
+
MoLinkerDirective], imports: [CommonModule,
|
|
19160
19920
|
BarsaNovinRayCoreRoutingModule,
|
|
19161
19921
|
BarsaSapUiFormPageModule,
|
|
19162
19922
|
ResizableModule,
|
|
@@ -19249,7 +20009,10 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19249
20009
|
MapToChatMessagePipe,
|
|
19250
20010
|
PicturesByGroupIdPipe,
|
|
19251
20011
|
ScopedCssPipe,
|
|
19252
|
-
ReportActionListPipe,
|
|
20012
|
+
ReportActionListPipe,
|
|
20013
|
+
GetCssVariableValuePipe,
|
|
20014
|
+
FindColumnsPipe,
|
|
20015
|
+
ExistsColumnsPipe, PlaceHolderDirective,
|
|
19253
20016
|
NumbersOnlyInputDirective,
|
|
19254
20017
|
RenderUlvViewerDirective,
|
|
19255
20018
|
RenderUlvPaginDirective,
|
|
@@ -19300,7 +20063,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19300
20063
|
SimplebarDirective,
|
|
19301
20064
|
LeafletLongPressDirective,
|
|
19302
20065
|
ResizeHandlerDirective,
|
|
19303
|
-
SafeBottomDirective
|
|
20066
|
+
SafeBottomDirective,
|
|
20067
|
+
MoLinkerDirective] }); }
|
|
19304
20068
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaNovinRayCoreModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
19305
20069
|
BarsaNovinRayCoreRoutingModule,
|
|
19306
20070
|
BarsaSapUiFormPageModule,
|
|
@@ -19330,5 +20094,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
19330
20094
|
* Generated bundle index. Do not edit.
|
|
19331
20095
|
*/
|
|
19332
20096
|
|
|
19333
|
-
export { StopPropagationDirective as $, AnchorScrollDirective as A, BaseModule as B, CardDynamicItemComponent as C, DynamicComponentService as D, EmptyPageWithRouterAndRouterOutletComponent as E, FieldDirective as F, ItemsRendererDirective as G, NumbersOnlyInputDirective as H, ImageLazyDirective as I, PlaceHolderDirective as J, RenderUlvViewerDirective as K, RenderUlvPaginDirective as L, MasterDetailsPageComponent as M, NotFoundComponent as N, UntilInViewDirective as O, PortalPageComponent as P, CopyDirective as Q, ReportEmptyPageComponent as R, EllapsisTextDirective as S, TableResizerDirective as T, UlvCommandDirective as U, FillEmptySpaceDirective as V, WorfkflowwChoiceCommandDirective as W, FormCloseDirective as X, MobileDirective as Y, BodyClickDirective as Z, PreventDefaultDirective as _, EmptyPageComponent as a, ColumnCustomComponentPipe as a$, CountDownDirective as a0, RouteFormChangeDirective as a1, DynamicStyleDirective as a2, NowraptextDirective as a3, LabelmandatoryDirective as a4, AbsoluteDivBodyDirective as a5, LoadExternalFilesDirective as a6, RenderUlvDirective as a7, PrintFilesDirective as a8, SaveImageDirective as a9, RemoveNewlinePipe as aA, MoValuePipe as aB, FilterPipe as aC, FilterTabPipe as aD, MoReportValueConcatPipe as aE, FilterStringPipe as aF, SortPipe as aG, BbbTranslatePipe as aH, BarsaIconDictPipe as aI, FileInfoCountPipe as aJ, ControlUiPipe as aK, VisibleValuePipe as aL, FilterToolbarControlPipe as aM, MultipleGroupByPipe as aN, PictureFieldSourcePipe as aO, FioriIconPipe as aP, CanUploadFilePipe as aQ, ListCountPipe as aR, TotalSummaryPipe as aS, MergeFieldsToColumnsPipe as aT, FindColumnByDbNamePipe as aU, FilterColumnsByDetailsPipe as aV, MoInfoUlvMoListPipe as aW, ReversePipe as aX, ColumnCustomUiPipe as aY, SanitizeTextPipe as aZ, MoInfoUlvPagingPipe as a_, WebOtpDirective as aa, SplideSliderDirective as ab, DynamicRootVariableDirective as ac, HorizontalResponsiveDirective as ad, MeasureFormTitleWidthDirective as ae, OverflowTextDirective as af, ShortcutRegisterDirective as ag, ShortcutHandlerDirective as ah, BarsaReadonlyDirective as ai, ResizeObserverDirective as aj, ColumnValueDirective as ak, ScrollToSelectedDirective as al, ScrollPersistDirective as am, TooltipDirective as an, SimplebarDirective as ao, LeafletLongPressDirective as ap, ResizeHandlerDirective as aq, SafeBottomDirective as ar, MoReportValuePipe as as, NumeralPipe as at, GroupByPipe as au, ContextMenuPipe as av, HeaderFacetValuePipe as aw, SeperatorFixPipe as ax, ConvertToStylePipe as ay, TlbButtonsPipe as az, PortalPageSidebarComponent as b, BaseSettingsService as b$, ColumnValuePipe as b0, ColumnIconPipe as b1, RowNumberPipe as b2, ComboRowImagePipe as b3, IsExpandedNodePipe as b4, ThImageOrIconePipe as b5, FindPreviewColumnPipe as b6, ReplacePipe as b7, FilterWorkflowInMobilePipe as b8, HideColumnsInmobilePipe as b9, PortalService as bA, UiService as bB, UlvMainService as bC, UploadService as bD, NetworkStatusService as bE, AudioRecordingService as bF, VideoRecordingService as bG, LocalStorageService as bH, IndexedDbService as bI, BarsaStorageService as bJ, PromptUpdateService as bK, NotificationService as bL, ServiceWorkerNotificationService as bM, ColumnService as bN, ServiceWorkerCommuncationService as bO, SaveScrollPositionService as bP, RoutingService as bQ, GroupByService as bR, LayoutMainContentService as bS, TabpageService as bT, InMemoryStorageService as bU, ShellbarHeightService as bV, ApplicationCtrlrService as bW, PushCheckService as bX, IdbService as bY, PushNotificationService as bZ, CardViewService as b_, StringToNumberPipe as ba, ColumnValueOfParametersPipe as bb, HideAcceptCancelButtonsPipe as bc, FilterInlineActionListPipe as bd, IsImagePipe as be, ToolbarSettingsPipe as bf, CardMediaSizePipe as bg, LabelStarTrimPipe as bh, SplitPipe as bi, DynamicDarkColorPipe as bj, ChunkArrayPipe as bk, MapToChatMessagePipe as bl, PicturesByGroupIdPipe as bm, ScopedCssPipe as bn, ReportActionListPipe as bo, ApiService as bp, BreadcrumbService as bq, CustomInjector as br, DialogParams as bs, BarsaDialogService as bt, FormPanelService as bu, FormService as bv, ContainerService as bw, HorizontalLayoutService as bx, LayoutService as by, LogService as bz, BaseDynamicComponent as c, MetaobjectRelationModel as c$, CalendarSettingsService as c0, SimpleTemplateEngine as c1, TEMPLATE_ENGINE as c2, PortalDynamicPageResolver as c3, PortalFormPageResolver as c4, PortalPageResolver as c5, PortalReportPageResolver as c6, TileGroupBreadcrumResolver as c7, LoginSettingsResolver as c8, ReportBreadcrumbResolver as c9, NumberControlInfoModel as cA, FilePictureInfoModel as cB, FileControlInfoModel as cC, CommandControlInfoModel as cD, IconControlInfoModel as cE, PictureFileControlInfoModel as cF, GaugeControlInfoModel as cG, RelationListControlInfoModel as cH, HistoryControlInfoModel as cI, RabetehAkseTakiListiControlInfoModel as cJ, RelatedReportControlInfoModel as cK, CodeEditorControlInfoModel as cL, EnumControlInfoModel as cM, RowDataOption as cN, DateTimeControlInfoModel as cO, BoolControlInfoModel as cP, CalculateControlInfoModel as cQ, SubformControlInfoModel as cR, LinearListControlInfoModel as cS, ListRelationModel as cT, SingleRelationControlInfoModel as cU, MetaobjectDataModel as cV, MoForReportModelBase as cW, MoForReportModel as cX, ReportBaseInfo as cY, FormToolbarButton as cZ, ReportExtraInfo as c_, DateService as ca, DateHijriService as cb, DateMiladiService as cc, DateShamsiService as cd, FormNewComponent as ce, ReportContainerComponent as cf, FormComponent as cg, FieldUiComponent as ch, BarsaSapUiFormPageModule as ci, ReportNavigatorComponent as cj, BaseController as ck, FieldBaseController as cl, ViewBase as cm, ModalRootComponent as cn, ButtonLoadingComponent as co, UnlimitSessionComponent as cp, SplitterComponent as cq, APP_VERSION as cr, DIALOG_SERVICE as cs, FORM_DIALOG_COMPONENT as ct, NOTIFICATAION_POPUP_SERVER as cu, TOAST_SERVICE as cv, NOTIFICATION_WEBWORKER_FACTORY as cw, GeneralControlInfoModel as cx, StringControlInfoModel as cy, RichStringControlInfoModel as cz, DynamicFormComponent as d, genrateInlineMoId as d$, FieldInfoTypeEnum as d0, BaseReportModel as d1, DefaultCommandsAccessValue as d2, CustomCommand as d3, ReportModel as d4, ReportListModel as d5, ReportFormModel as d6, ReportCalendarModel as d7, ReportTreeModel as d8, ReportViewColumn as d9, LinearListHelper as dA, PageWithFormHandlerBaseComponent as dB, FormPageBaseComponent as dC, FormPageComponent as dD, BaseColumnPropsComponent as dE, TilePropsComponent as dF, FormFieldReportPageComponent as dG, ColumnRendererBase as dH, ColumnRendererViewBase as dI, BaseUlvSettingComponent as dJ, TableHeaderWidthMode as dK, setTableThWidth as dL, calculateColumnContent as dM, calculateColumnWidth as dN, setColumnWidthByMaxMoContentWidth as dO, calculateMoDataListContentWidthByColumnName as dP, calculateFreeColumnSize as dQ, calculateColumnWidthFitToContainer as dR, calcContextMenuWidth as dS, RotateImage as dT, isInLocalMode as dU, getLabelWidth as dV, getColumnValueOfMoDataList as dW, throwIfAlreadyLoaded as dX, measureText2 as dY, measureText as dZ, measureTextBy as d_, DefaultGridSetting as da, GridSetting as db, ColSetting as dc, SortSetting as dd, ReportField as de, DateRanges as df, SortDirection as dg, SelectionMode as dh, UlvHeightSizeType as di, FieldBaseComponent as dj, FieldViewBase as dk, FormBaseComponent as dl, FormToolbarBaseComponent as dm, SystemBaseComponent as dn, ReportBaseComponent as dp, ReportItemBaseComponent as dq, ApplicationBaseComponent as dr, LayoutItemBaseComponent as ds, LayoutPanelBaseComponent as dt, PageBaseComponent as du, NumberBaseComponent as dv, FilesValidationHelper as dw, BarsaApi as dx, ReportViewBaseComponent as dy, FormPropsBaseComponent as dz, DynamicItemComponent as e, easeInOutCubic as e$, enumValueToStringSize as e0, isVersionBiggerThan as e1, compareVersions as e2, scrollToElement as e3, executeUlvCommandHandler as e4, getUniqueId as e5, getDateService as e6, getAllItemsPerChildren as e7, setOneDepthLevel as e8, isFirefox as e9, FillAllLayoutControls as eA, FindToolbarItem as eB, FindLayoutSettingFromLayout94 as eC, GetAllHorizontalFromLayout94 as eD, getGridSettings as eE, getResetGridSettings as eF, GetDefaultMoObjectInfo as eG, getLayout94ObjectInfo as eH, getFormSettings as eI, createFormPanelMetaConditions as eJ, getNewMoGridEditor as eK, createGridEditorFormPanel as eL, getLayoutControl as eM, getControlList as eN, shallowEqual as eO, toNumber as eP, InputNumber as eQ, AffixRespondEvents as eR, isTargetWindow as eS, getTargetRect as eT, getFieldValue as eU, availablePrefixes as eV, requestAnimationFramePolyfill as eW, ExecuteDynamicCommand as eX, ExecuteWorkflowChoiceDef as eY, getRequestAnimationFrame as eZ, cancelRequestAnimationFrame as e_, getImagePath as ea, checkPermission as eb, fixUnclosedParentheses as ec, isFunction as ed, DeviceWidth as ee, getHeaderValue as ef, elementInViewport2 as eg, PreventDefaulEvent as eh, stopPropagation as ei, getParentHeight as ej, getComponentDefined as ek, isSafari as el, isFF as em, getDeviceIsPhone as en, getDeviceIsDesktop as eo, getDeviceIsTablet as ep, getDeviceIsMobile as eq, getControlSizeMode as er, formatBytes as es, getValidExtension as et, getIcon as eu, isImage as ev, GetAllColumnsSorted as ew, GetVisibleValue as ex, GroupBy as ey, FindGroup as ez, formRoutes as f, WordMimeType as f0, ImageMimeType as f1, PdfMimeType as f2, AllFilesMimeType as f3, VideoMimeType as f4, AudioMimeType as f5, MimeTypes as f6, GetContentType as f7, GetViewableExtensions as f8, ChangeLayoutInfoCustomUi as f9, ResizableComponent as fA, ResizableDirective as fB, ResizableModule as fC, PushBannerComponent as fD, BarsaNovinRayCoreModule as fE, mobile_regex as fa, number_only as fb, forbiddenValidator as fc, GetImgTags as fd, ImagetoPrint as fe, PrintImage as ff, SaveImageToFile as fg, validateAllFormFields as fh, getFocusableTagNames as fi, addCssVariableToRoot as fj, flattenTree as fk, IsDarkMode as fl, nullOrUndefinedString as fm, fromEntries as fn, bodyClick as fo, removeDynamicStyle as fp, addDynamicVariableTo as fq, AddDynamicFormStyles as fr, RemoveDynamicFormStyles as fs, ContainerComponent as ft, IntersectionStatus as fu, fromIntersectionObserver as fv, CustomRouteReuseStrategy as fw, AuthGuard as fx, RedirectHomeGuard as fy, RootPageComponent as fz, BaseViewPropsComponent as g, BaseViewContentPropsComponent as h, BaseViewItemPropsComponent as i, RowState as j, BaseItemContentPropsComponent as k, CardBaseItemContentPropsComponent as l, BaseFormToolbaritemPropsComponent as m, DynamicFormToolbaritemComponent as n, DynamicLayoutComponent as o, DynamicUlvToolbarComponent as p, DynamicUlvPagingComponent as q, reportRoutes as r, RootPortalComponent as s, BaseComponent as t, AttrRtlDirective as u, BaseDirective as v, ColumnResizerDirective as w, DynamicCommandDirective as x, EllipsifyDirective as y, IntersectionObserverDirective as z };
|
|
19334
|
-
//# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-
|
|
20097
|
+
export { StopPropagationDirective as $, AnchorScrollDirective as A, BaseModule as B, CardDynamicItemComponent as C, DynamicComponentService as D, EmptyPageWithRouterAndRouterOutletComponent as E, FieldDirective as F, ItemsRendererDirective as G, NumbersOnlyInputDirective as H, ImageLazyDirective as I, PlaceHolderDirective as J, RenderUlvViewerDirective as K, RenderUlvPaginDirective as L, MasterDetailsPageComponent as M, NotFoundComponent as N, UntilInViewDirective as O, PortalPageComponent as P, CopyDirective as Q, ReportEmptyPageComponent as R, EllapsisTextDirective as S, TableResizerDirective as T, UlvCommandDirective as U, FillEmptySpaceDirective as V, WorfkflowwChoiceCommandDirective as W, FormCloseDirective as X, MobileDirective as Y, BodyClickDirective as Z, PreventDefaultDirective as _, EmptyPageComponent as a, MoInfoUlvPagingPipe as a$, CountDownDirective as a0, RouteFormChangeDirective as a1, DynamicStyleDirective as a2, NowraptextDirective as a3, LabelmandatoryDirective as a4, AbsoluteDivBodyDirective as a5, LoadExternalFilesDirective as a6, RenderUlvDirective as a7, PrintFilesDirective as a8, SaveImageDirective as a9, TlbButtonsPipe as aA, RemoveNewlinePipe as aB, MoValuePipe as aC, FilterPipe as aD, FilterTabPipe as aE, MoReportValueConcatPipe as aF, FilterStringPipe as aG, SortPipe as aH, BbbTranslatePipe as aI, BarsaIconDictPipe as aJ, FileInfoCountPipe as aK, ControlUiPipe as aL, VisibleValuePipe as aM, FilterToolbarControlPipe as aN, MultipleGroupByPipe as aO, PictureFieldSourcePipe as aP, FioriIconPipe as aQ, CanUploadFilePipe as aR, ListCountPipe as aS, TotalSummaryPipe as aT, MergeFieldsToColumnsPipe as aU, FindColumnByDbNamePipe as aV, FilterColumnsByDetailsPipe as aW, MoInfoUlvMoListPipe as aX, ReversePipe as aY, ColumnCustomUiPipe as aZ, SanitizeTextPipe as a_, WebOtpDirective as aa, SplideSliderDirective as ab, DynamicRootVariableDirective as ac, HorizontalResponsiveDirective as ad, MeasureFormTitleWidthDirective as ae, OverflowTextDirective as af, ShortcutRegisterDirective as ag, ShortcutHandlerDirective as ah, BarsaReadonlyDirective as ai, ResizeObserverDirective as aj, ColumnValueDirective as ak, ScrollToSelectedDirective as al, ScrollPersistDirective as am, TooltipDirective as an, SimplebarDirective as ao, LeafletLongPressDirective as ap, ResizeHandlerDirective as aq, SafeBottomDirective as ar, MoLinkerDirective as as, MoReportValuePipe as at, NumeralPipe as au, GroupByPipe as av, ContextMenuPipe as aw, HeaderFacetValuePipe as ax, SeperatorFixPipe as ay, ConvertToStylePipe as az, PortalPageSidebarComponent as b, ApplicationCtrlrService as b$, ColumnCustomComponentPipe as b0, ColumnValuePipe as b1, ColumnIconPipe as b2, RowNumberPipe as b3, ComboRowImagePipe as b4, IsExpandedNodePipe as b5, ThImageOrIconePipe as b6, FindPreviewColumnPipe as b7, ReplacePipe as b8, FilterWorkflowInMobilePipe as b9, ContainerService as bA, HorizontalLayoutService as bB, LayoutService as bC, LogService as bD, PortalService as bE, UiService as bF, UlvMainService as bG, UploadService as bH, NetworkStatusService as bI, AudioRecordingService as bJ, VideoRecordingService as bK, LocalStorageService as bL, IndexedDbService as bM, BarsaStorageService as bN, PromptUpdateService as bO, NotificationService as bP, ServiceWorkerNotificationService as bQ, ColumnService as bR, ServiceWorkerCommuncationService as bS, SaveScrollPositionService as bT, RoutingService as bU, GroupByService as bV, LayoutMainContentService as bW, TabpageService as bX, InMemoryStorageService as bY, ScrollLayoutContextHolder as bZ, ShellbarHeightService as b_, HideColumnsInmobilePipe as ba, StringToNumberPipe as bb, ColumnValueOfParametersPipe as bc, HideAcceptCancelButtonsPipe as bd, FilterInlineActionListPipe as be, IsImagePipe as bf, ToolbarSettingsPipe as bg, CardMediaSizePipe as bh, LabelStarTrimPipe as bi, SplitPipe as bj, DynamicDarkColorPipe as bk, ChunkArrayPipe as bl, MapToChatMessagePipe as bm, PicturesByGroupIdPipe as bn, ScopedCssPipe as bo, ReportActionListPipe as bp, GetCssVariableValuePipe as bq, FindColumnsPipe as br, ExistsColumnsPipe as bs, ApiService as bt, BreadcrumbService as bu, CustomInjector as bv, DialogParams as bw, BarsaDialogService as bx, FormPanelService as by, FormService as bz, BaseDynamicComponent as c, LinearListControlInfoModel as c$, PushCheckService as c0, IdbService as c1, RUNTIME_NAV_STATE_SCHEMA_V1 as c2, buildRuntimeNavStateCacheKey as c3, RuntimeNavStateCacheService as c4, PushNotificationService as c5, CardViewService as c6, BaseSettingsService as c7, SimpleTemplateEngine as c8, TEMPLATE_ENGINE as c9, APP_VERSION as cA, DIALOG_SERVICE as cB, FORM_DIALOG_COMPONENT as cC, NOTIFICATAION_POPUP_SERVER as cD, TOAST_SERVICE as cE, NOTIFICATION_WEBWORKER_FACTORY as cF, GeneralControlInfoModel as cG, StringControlInfoModel as cH, RichStringControlInfoModel as cI, NumberControlInfoModel as cJ, FilePictureInfoModel as cK, FileControlInfoModel as cL, CommandControlInfoModel as cM, IconControlInfoModel as cN, PictureFileControlInfoModel as cO, GaugeControlInfoModel as cP, RelationListControlInfoModel as cQ, HistoryControlInfoModel as cR, RabetehAkseTakiListiControlInfoModel as cS, RelatedReportControlInfoModel as cT, CodeEditorControlInfoModel as cU, EnumControlInfoModel as cV, RowDataOption as cW, DateTimeControlInfoModel as cX, BoolControlInfoModel as cY, CalculateControlInfoModel as cZ, SubformControlInfoModel as c_, PortalDynamicPageResolver as ca, PortalFormPageResolver as cb, PortalPageResolver as cc, PortalReportPageResolver as cd, TileGroupBreadcrumResolver as ce, LoginSettingsResolver as cf, ReportBreadcrumbResolver as cg, DateService as ch, DateHijriService as ci, DateMiladiService as cj, DateShamsiService as ck, EntitySettingsStore as cl, CalendarSettingsStore as cm, FormNewComponent as cn, ReportContainerComponent as co, FormComponent as cp, FieldUiComponent as cq, BarsaSapUiFormPageModule as cr, ReportNavigatorComponent as cs, BaseController as ct, FieldBaseController as cu, ViewBase as cv, ModalRootComponent as cw, ButtonLoadingComponent as cx, UnlimitSessionComponent as cy, SplitterComponent as cz, DynamicFormComponent as d, calcContextMenuWidth as d$, ListRelationModel as d0, SingleRelationControlInfoModel as d1, MetaobjectDataModel as d2, MoForReportModelBase as d3, MoForReportModel as d4, ReportBaseInfo as d5, FormToolbarButton as d6, ReportExtraInfo as d7, MetaobjectRelationModel as d8, FieldInfoTypeEnum as d9, ApplicationBaseComponent as dA, LayoutItemBaseComponent as dB, LayoutPanelBaseComponent as dC, PageBaseComponent as dD, NumberBaseComponent as dE, FilesValidationHelper as dF, BarsaApi as dG, ReportViewBaseComponent as dH, FormPropsBaseComponent as dI, LinearListHelper as dJ, PageWithFormHandlerBaseComponent as dK, FormPageBaseComponent as dL, FormPageComponent as dM, BaseColumnPropsComponent as dN, TilePropsComponent as dO, FormFieldReportPageComponent as dP, ColumnRendererBase as dQ, ColumnRendererViewBase as dR, BaseUlvSettingComponent as dS, TableHeaderWidthMode as dT, setTableThWidth as dU, calculateColumnContent as dV, calculateColumnWidth as dW, setColumnWidthByMaxMoContentWidth as dX, calculateMoDataListContentWidthByColumnName as dY, calculateFreeColumnSize as dZ, calculateColumnWidthFitToContainer as d_, BaseReportModel as da, DefaultCommandsAccessValue as db, CustomCommand as dc, ReportModel as dd, ReportListModel as de, ReportFormModel as df, ReportCalendarModel as dg, ReportTreeModel as dh, ReportViewColumn as di, DefaultGridSetting as dj, GridSetting as dk, ColSetting as dl, SortSetting as dm, ReportField as dn, DateRanges as dp, SortDirection as dq, SelectionMode as dr, UlvHeightSizeType as ds, FieldBaseComponent as dt, FieldViewBase as du, FormBaseComponent as dv, FormToolbarBaseComponent as dw, SystemBaseComponent as dx, ReportBaseComponent as dy, ReportItemBaseComponent as dz, DynamicItemComponent as e, isTargetWindow as e$, RotateImage as e0, isInLocalMode as e1, getLabelWidth as e2, getColumnValueOfMoDataList as e3, throwIfAlreadyLoaded as e4, measureText2 as e5, measureText as e6, measureTextBy as e7, genrateInlineMoId as e8, enumValueToStringSize as e9, getControlSizeMode as eA, formatBytes as eB, getValidExtension as eC, getIcon as eD, isImage as eE, GetAllColumnsSorted as eF, GetVisibleValue as eG, GroupBy as eH, FindGroup as eI, FillAllLayoutControls as eJ, FindToolbarItem as eK, FindLayoutSettingFromLayout94 as eL, GetAllHorizontalFromLayout94 as eM, getGridSettings as eN, getResetGridSettings as eO, GetDefaultMoObjectInfo as eP, getLayout94ObjectInfo as eQ, getFormSettings as eR, createFormPanelMetaConditions as eS, getNewMoGridEditor as eT, createGridEditorFormPanel as eU, getLayoutControl as eV, getControlList as eW, shallowEqual as eX, toNumber as eY, InputNumber as eZ, AffixRespondEvents as e_, isVersionBiggerThan as ea, compareVersions as eb, scrollToElement as ec, executeUlvCommandHandler as ed, getUniqueId as ee, getDateService as ef, getAllItemsPerChildren as eg, setOneDepthLevel as eh, isFirefox as ei, getImagePath as ej, checkPermission as ek, fixUnclosedParentheses as el, isFunction as em, DeviceWidth as en, getHeaderValue as eo, elementInViewport2 as ep, PreventDefaulEvent as eq, stopPropagation as er, getParentHeight as es, getComponentDefined as et, isSafari as eu, isFF as ev, getDeviceIsPhone as ew, getDeviceIsDesktop as ex, getDeviceIsTablet as ey, getDeviceIsMobile as ez, formRoutes as f, getTargetRect as f0, getFieldValue as f1, availablePrefixes as f2, requestAnimationFramePolyfill as f3, ExecuteDynamicCommand as f4, ExecuteWorkflowChoiceDef as f5, getRequestAnimationFrame as f6, cancelRequestAnimationFrame as f7, easeInOutCubic as f8, WordMimeType as f9, AddDynamicFormStyles as fA, RemoveDynamicFormStyles as fB, ContainerComponent as fC, IntersectionStatus as fD, fromIntersectionObserver as fE, CustomRouteReuseStrategy as fF, AuthGuard as fG, RedirectHomeGuard as fH, RootPageComponent as fI, ResizableComponent as fJ, ResizableDirective as fK, ResizableModule as fL, PushBannerComponent as fM, REPORT_GRID_VIEWPORT_CLASS as fN, DEFAULT_REPORT_LAYOUT_POLICY as fO, REPORT_TYPE_DEFAULT_POLICIES as fP, scrollLayoutModeToContextEnvironment as fQ, contextDefaultsFromEnvironment as fR, resolveFinalScroll as fS, resolveReportLayoutPolicy as fT, getReportTypeDefaultPolicy as fU, extractLayoutPolicyFromView as fV, BarsaNovinRayCoreModule as fW, ImageMimeType as fa, PdfMimeType as fb, AllFilesMimeType as fc, VideoMimeType as fd, AudioMimeType as fe, MimeTypes as ff, GetContentType as fg, GetViewableExtensions as fh, ChangeLayoutInfoCustomUi as fi, mobile_regex as fj, number_only as fk, forbiddenValidator as fl, GetImgTags as fm, ImagetoPrint as fn, PrintImage as fo, SaveImageToFile as fp, validateAllFormFields as fq, getFocusableTagNames as fr, addCssVariableToRoot as fs, flattenTree as ft, IsDarkMode as fu, nullOrUndefinedString as fv, fromEntries as fw, bodyClick as fx, removeDynamicStyle as fy, addDynamicVariableTo as fz, BaseViewPropsComponent as g, BaseViewContentPropsComponent as h, BaseViewItemPropsComponent as i, RowState as j, BaseItemContentPropsComponent as k, CardBaseItemContentPropsComponent as l, BaseFormToolbaritemPropsComponent as m, DynamicFormToolbaritemComponent as n, DynamicLayoutComponent as o, DynamicUlvToolbarComponent as p, DynamicUlvPagingComponent as q, reportRoutes as r, RootPortalComponent as s, BaseComponent as t, AttrRtlDirective as u, BaseDirective as v, ColumnResizerDirective as w, DynamicCommandDirective as x, EllipsifyDirective as y, IntersectionObserverDirective as z };
|
|
20098
|
+
//# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-BhKR992Z.mjs.map
|