barsa-novin-ray-core 2.3.144 → 2.3.145
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-D50KRKKo.mjs} +790 -221
- package/fesm2022/barsa-novin-ray-core-barsa-novin-ray-core-D50KRKKo.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-7QOR1HJT.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-7QOR1HJT.mjs.map} +1 -1
- package/fesm2022/barsa-novin-ray-core.mjs +1 -1
- package/index.d.ts +228 -40
- 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,35 @@ 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
|
+
|
|
4647
4692
|
class ApiService {
|
|
4648
4693
|
constructor() {
|
|
4649
4694
|
this.portalLoginUrl = `/api/auth/portal/login`;
|
|
@@ -5943,10 +5988,11 @@ class ApplicationCtrlrService {
|
|
|
5943
5988
|
callback && callback(true);
|
|
5944
5989
|
});
|
|
5945
5990
|
this._document.documentElement.setAttribute('data-layout', 'vertical');
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5991
|
+
// با تغییر سیستم اسم تب مرورگر تغییر نکند
|
|
5992
|
+
// this._selectedSystemTitle$
|
|
5993
|
+
// .asObservable()
|
|
5994
|
+
// .pipe(tap((c) => this._titleService.setTitle(c)))
|
|
5995
|
+
// .subscribe();
|
|
5950
5996
|
}
|
|
5951
5997
|
systemChange(systemId) {
|
|
5952
5998
|
const oldSystemId = this._selectedSystemId$.getValue();
|
|
@@ -6271,7 +6317,7 @@ function reportRoutes(authGuard = false) {
|
|
|
6271
6317
|
return {
|
|
6272
6318
|
path: 'report/:id',
|
|
6273
6319
|
canActivate: authGuard ? [AuthGuard] : [],
|
|
6274
|
-
loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-
|
|
6320
|
+
loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-7QOR1HJT.mjs').then((m) => m.BarsaReportPageModule),
|
|
6275
6321
|
resolve: {
|
|
6276
6322
|
breadcrumb: ReportBreadcrumbResolver
|
|
6277
6323
|
}
|
|
@@ -9226,14 +9272,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9226
9272
|
// src/app/services/idb.service.ts
|
|
9227
9273
|
class IdbService {
|
|
9228
9274
|
constructor() {
|
|
9229
|
-
this.dbPromise = openDB('my-app-db',
|
|
9230
|
-
upgrade(db) {
|
|
9275
|
+
this.dbPromise = openDB('my-app-db', 2, {
|
|
9276
|
+
upgrade(db, oldVersion) {
|
|
9231
9277
|
if (!db.objectStoreNames.contains('subscription')) {
|
|
9232
9278
|
db.createObjectStore('subscription');
|
|
9233
9279
|
}
|
|
9234
9280
|
if (!db.objectStoreNames.contains('settings')) {
|
|
9235
9281
|
db.createObjectStore('settings');
|
|
9236
9282
|
}
|
|
9283
|
+
if (oldVersion < 2 && !db.objectStoreNames.contains('runtimeNavState')) {
|
|
9284
|
+
db.createObjectStore('runtimeNavState');
|
|
9285
|
+
}
|
|
9237
9286
|
}
|
|
9238
9287
|
});
|
|
9239
9288
|
}
|
|
@@ -9250,6 +9299,15 @@ class IdbService {
|
|
|
9250
9299
|
const db = await this.dbPromise;
|
|
9251
9300
|
await db.delete(store, key);
|
|
9252
9301
|
}
|
|
9302
|
+
async getAllKeys(store) {
|
|
9303
|
+
const db = await this.dbPromise;
|
|
9304
|
+
const keys = await db.getAllKeys(store);
|
|
9305
|
+
return keys;
|
|
9306
|
+
}
|
|
9307
|
+
async clearStore(store) {
|
|
9308
|
+
const db = await this.dbPromise;
|
|
9309
|
+
await db.clear(store);
|
|
9310
|
+
}
|
|
9253
9311
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: IdbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9254
9312
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: IdbService, providedIn: 'root' }); }
|
|
9255
9313
|
}
|
|
@@ -9743,6 +9801,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9743
9801
|
args: [{ providedIn: 'root' }]
|
|
9744
9802
|
}] });
|
|
9745
9803
|
|
|
9804
|
+
class ScrollLayoutContextHolder {
|
|
9805
|
+
constructor() {
|
|
9806
|
+
this._mode = signal('root');
|
|
9807
|
+
this.mode = this._mode.asReadonly();
|
|
9808
|
+
}
|
|
9809
|
+
setMode(mode) {
|
|
9810
|
+
this._mode.set(mode);
|
|
9811
|
+
}
|
|
9812
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScrollLayoutContextHolder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9813
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScrollLayoutContextHolder }); }
|
|
9814
|
+
}
|
|
9815
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScrollLayoutContextHolder, decorators: [{
|
|
9816
|
+
type: Injectable
|
|
9817
|
+
}], ctorParameters: () => [] });
|
|
9818
|
+
|
|
9746
9819
|
class ShellbarHeightService {
|
|
9747
9820
|
constructor() {
|
|
9748
9821
|
this._dict = new BehaviorSubject(['']);
|
|
@@ -9825,6 +9898,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9825
9898
|
args: [{ providedIn: 'root' }]
|
|
9826
9899
|
}] });
|
|
9827
9900
|
|
|
9901
|
+
/** Discriminator for migrations and mixed payload kinds. */
|
|
9902
|
+
const RUNTIME_NAV_STATE_SCHEMA_V1 = 'report-nav-runtime/v1';
|
|
9903
|
+
/**
|
|
9904
|
+
* Stable cache key: report-scoped MO identity.
|
|
9905
|
+
* Future: prefix with navigationScopeId for split/compare/popup (architecture note only in v1).
|
|
9906
|
+
*/
|
|
9907
|
+
function buildRuntimeNavStateCacheKey(reportIdSeg, moId, typeDefId) {
|
|
9908
|
+
return `runtime:${reportIdSeg}:${moId}:${typeDefId}`;
|
|
9909
|
+
}
|
|
9910
|
+
|
|
9911
|
+
const RUNTIME_NAV_STORE = 'runtimeNavState';
|
|
9912
|
+
const SESSION_STORAGE_KEY = 'runtime-session-id';
|
|
9913
|
+
const MAX_MEMORY_ENTRIES = 100;
|
|
9914
|
+
function cloneForPersist(value) {
|
|
9915
|
+
try {
|
|
9916
|
+
return structuredClone(value);
|
|
9917
|
+
}
|
|
9918
|
+
catch {
|
|
9919
|
+
return JSON.parse(JSON.stringify(value));
|
|
9920
|
+
}
|
|
9921
|
+
}
|
|
9922
|
+
class RuntimeNavStateCacheService {
|
|
9923
|
+
constructor() {
|
|
9924
|
+
this._idb = inject(IdbService);
|
|
9925
|
+
this._memory = new Map();
|
|
9926
|
+
this._sessionId = this._ensureSessionId();
|
|
9927
|
+
void this._purgeStaleFromIdb();
|
|
9928
|
+
if (isDevMode() && typeof window !== 'undefined') {
|
|
9929
|
+
window.__runtimeNavCache = this;
|
|
9930
|
+
}
|
|
9931
|
+
}
|
|
9932
|
+
/** @internal tests / diagnostics */
|
|
9933
|
+
get currentSessionId() {
|
|
9934
|
+
return this._sessionId;
|
|
9935
|
+
}
|
|
9936
|
+
save(key, envelope) {
|
|
9937
|
+
const snapshot = cloneForPersist({
|
|
9938
|
+
...envelope,
|
|
9939
|
+
sessionId: this._sessionId,
|
|
9940
|
+
createdAt: envelope.createdAt ?? Date.now()
|
|
9941
|
+
});
|
|
9942
|
+
return (async () => {
|
|
9943
|
+
await this._idb.set(RUNTIME_NAV_STORE, key, snapshot);
|
|
9944
|
+
this._memory.set(key, snapshot);
|
|
9945
|
+
this._evictMemoryIfNeeded();
|
|
9946
|
+
})();
|
|
9947
|
+
}
|
|
9948
|
+
get(key) {
|
|
9949
|
+
const mem = this._memory.get(key);
|
|
9950
|
+
if (mem !== undefined) {
|
|
9951
|
+
return Promise.resolve(mem);
|
|
9952
|
+
}
|
|
9953
|
+
return (async () => {
|
|
9954
|
+
const row = await this._idb.get(RUNTIME_NAV_STORE, key);
|
|
9955
|
+
if (row == null) {
|
|
9956
|
+
return null;
|
|
9957
|
+
}
|
|
9958
|
+
if (row.sessionId !== this._sessionId) {
|
|
9959
|
+
return null;
|
|
9960
|
+
}
|
|
9961
|
+
this._memory.set(key, row);
|
|
9962
|
+
this._evictMemoryIfNeeded();
|
|
9963
|
+
return row;
|
|
9964
|
+
})();
|
|
9965
|
+
}
|
|
9966
|
+
remove(key) {
|
|
9967
|
+
return (async () => {
|
|
9968
|
+
this._memory.delete(key);
|
|
9969
|
+
await this._idb.delete(RUNTIME_NAV_STORE, key);
|
|
9970
|
+
})();
|
|
9971
|
+
}
|
|
9972
|
+
clear() {
|
|
9973
|
+
return (async () => {
|
|
9974
|
+
this._memory.clear();
|
|
9975
|
+
await this._idb.clearStore(RUNTIME_NAV_STORE);
|
|
9976
|
+
})();
|
|
9977
|
+
}
|
|
9978
|
+
/** Optional contract: snapshot of keys ? serialized envelopes (for debugging). */
|
|
9979
|
+
getAllEntries() {
|
|
9980
|
+
return (async () => {
|
|
9981
|
+
const out = {};
|
|
9982
|
+
for (const [k, v] of this._memory.entries()) {
|
|
9983
|
+
out[k] = cloneForPersist(v);
|
|
9984
|
+
}
|
|
9985
|
+
const keys = await this._idb.getAllKeys(RUNTIME_NAV_STORE);
|
|
9986
|
+
for (const key of keys) {
|
|
9987
|
+
if (out[key] !== undefined) {
|
|
9988
|
+
continue;
|
|
9989
|
+
}
|
|
9990
|
+
const row = await this._idb.get(RUNTIME_NAV_STORE, key);
|
|
9991
|
+
if (row?.sessionId === this._sessionId) {
|
|
9992
|
+
out[key] = cloneForPersist(row);
|
|
9993
|
+
}
|
|
9994
|
+
}
|
|
9995
|
+
return out;
|
|
9996
|
+
})();
|
|
9997
|
+
}
|
|
9998
|
+
_ensureSessionId() {
|
|
9999
|
+
if (typeof sessionStorage === 'undefined') {
|
|
10000
|
+
return `ssr-${crypto.randomUUID()}`;
|
|
10001
|
+
}
|
|
10002
|
+
let id = sessionStorage.getItem(SESSION_STORAGE_KEY);
|
|
10003
|
+
if (!id) {
|
|
10004
|
+
id = crypto.randomUUID();
|
|
10005
|
+
sessionStorage.setItem(SESSION_STORAGE_KEY, id);
|
|
10006
|
+
}
|
|
10007
|
+
return id;
|
|
10008
|
+
}
|
|
10009
|
+
_evictMemoryIfNeeded() {
|
|
10010
|
+
while (this._memory.size > MAX_MEMORY_ENTRIES) {
|
|
10011
|
+
const first = this._memory.keys().next().value;
|
|
10012
|
+
if (first === undefined) {
|
|
10013
|
+
break;
|
|
10014
|
+
}
|
|
10015
|
+
this._memory.delete(first);
|
|
10016
|
+
}
|
|
10017
|
+
}
|
|
10018
|
+
async _purgeStaleFromIdb() {
|
|
10019
|
+
try {
|
|
10020
|
+
const keys = await this._idb.getAllKeys(RUNTIME_NAV_STORE);
|
|
10021
|
+
for (const key of keys) {
|
|
10022
|
+
const row = await this._idb.get(RUNTIME_NAV_STORE, key);
|
|
10023
|
+
if (row == null || row.sessionId !== this._sessionId) {
|
|
10024
|
+
await this._idb.delete(RUNTIME_NAV_STORE, key);
|
|
10025
|
+
}
|
|
10026
|
+
}
|
|
10027
|
+
}
|
|
10028
|
+
catch {
|
|
10029
|
+
/* ignore IDB errors during purge */
|
|
10030
|
+
}
|
|
10031
|
+
}
|
|
10032
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RuntimeNavStateCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10033
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RuntimeNavStateCacheService, providedIn: 'root' }); }
|
|
10034
|
+
}
|
|
10035
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RuntimeNavStateCacheService, decorators: [{
|
|
10036
|
+
type: Injectable,
|
|
10037
|
+
args: [{ providedIn: 'root' }]
|
|
10038
|
+
}], ctorParameters: () => [] });
|
|
10039
|
+
|
|
9828
10040
|
class CardViewService {
|
|
9829
10041
|
constructor() {
|
|
9830
10042
|
this._maxHeaderTitleHeight$ = new BehaviorSubject(0);
|
|
@@ -9857,6 +10069,9 @@ class BaseSettingsService {
|
|
|
9857
10069
|
saveSetting(key, value) {
|
|
9858
10070
|
return from(this.idb.set('settings', key, value));
|
|
9859
10071
|
}
|
|
10072
|
+
removeSetting(key) {
|
|
10073
|
+
return from(this.idb.delete('settings', key));
|
|
10074
|
+
}
|
|
9860
10075
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9861
10076
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseSettingsService, providedIn: 'root' }); }
|
|
9862
10077
|
}
|
|
@@ -9865,40 +10080,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9865
10080
|
args: [{ providedIn: 'root' }]
|
|
9866
10081
|
}] });
|
|
9867
10082
|
|
|
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
10083
|
class SimpleTemplateEngine {
|
|
9903
10084
|
constructor() {
|
|
9904
10085
|
this.cache = new Map();
|
|
@@ -11639,7 +11820,7 @@ class ReportViewBaseComponent extends BaseComponent {
|
|
|
11639
11820
|
this.rowIndicator = Number(columns[0].MetaFieldTypeId) === 41;
|
|
11640
11821
|
}
|
|
11641
11822
|
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 }); }
|
|
11823
|
+
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", 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
11824
|
}
|
|
11644
11825
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportViewBaseComponent, decorators: [{
|
|
11645
11826
|
type: Component,
|
|
@@ -11771,6 +11952,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
11771
11952
|
type: Input
|
|
11772
11953
|
}], contentHeight: [{
|
|
11773
11954
|
type: Input
|
|
11955
|
+
}], effectiveReportLayout: [{
|
|
11956
|
+
type: Input
|
|
11774
11957
|
}], contentDensity: [{
|
|
11775
11958
|
type: Input
|
|
11776
11959
|
}], rtl: [{
|
|
@@ -12922,6 +13105,7 @@ class SplitterComponent extends BaseComponent {
|
|
|
12922
13105
|
super(...arguments);
|
|
12923
13106
|
this.emptyClass = true;
|
|
12924
13107
|
this.isBig = false;
|
|
13108
|
+
this.spliterResized = new EventEmitter();
|
|
12925
13109
|
this._renderer = inject(Renderer2);
|
|
12926
13110
|
this._portalService = inject(PortalService);
|
|
12927
13111
|
}
|
|
@@ -12955,7 +13139,7 @@ class SplitterComponent extends BaseComponent {
|
|
|
12955
13139
|
}), switchMap(() => {
|
|
12956
13140
|
// تشخیص جهت در لحظه شروع درگ
|
|
12957
13141
|
const isRtl = getComputedStyle(this.el.nativeElement).direction === 'rtl';
|
|
12958
|
-
let previousElementSibling = this.el.nativeElement.previousElementSibling;
|
|
13142
|
+
let previousElementSibling = this.elDom || this.el.nativeElement.previousElementSibling;
|
|
12959
13143
|
while (previousElementSibling &&
|
|
12960
13144
|
previousElementSibling.tagName.toLocaleLowerCase() === 'bnrc-dynamic-layout') {
|
|
12961
13145
|
previousElementSibling &&
|
|
@@ -12989,9 +13173,11 @@ class SplitterComponent extends BaseComponent {
|
|
|
12989
13173
|
newWidth = event.clientX - rect.left;
|
|
12990
13174
|
}
|
|
12991
13175
|
if ((!this.minWidth || newWidth >= this.minWidth) && (!this.maxWidth || newWidth <= this.maxWidth)) {
|
|
12992
|
-
this._renderer.setStyle(nextSibling, 'overflow', `hidden`);
|
|
12993
|
-
|
|
13176
|
+
nextSibling && this._renderer.setStyle(nextSibling, 'overflow', `hidden`);
|
|
13177
|
+
const value = `${newWidth}px`;
|
|
13178
|
+
this._renderer.setStyle(sibling, 'width', value);
|
|
12994
13179
|
this._renderer.setStyle(sibling, 'flex', 'none');
|
|
13180
|
+
this.spliterResized.emit(value);
|
|
12995
13181
|
}
|
|
12996
13182
|
}
|
|
12997
13183
|
toggleResizingState(isResizing, nextSibling) {
|
|
@@ -12999,15 +13185,15 @@ class SplitterComponent extends BaseComponent {
|
|
|
12999
13185
|
this._renderer[action](document.body, 'resizing-active');
|
|
13000
13186
|
this._renderer[action](this.el.nativeElement, 'is-resizing');
|
|
13001
13187
|
if (!isResizing) {
|
|
13002
|
-
this._renderer.removeClass(nextSibling, 'tw-overflow-hidden');
|
|
13188
|
+
nextSibling && this._renderer.removeClass(nextSibling, 'tw-overflow-hidden');
|
|
13003
13189
|
this._portalService.windowResize();
|
|
13004
13190
|
}
|
|
13005
13191
|
else {
|
|
13006
|
-
this._renderer.addClass(nextSibling, 'tw-overflow-hidden');
|
|
13192
|
+
nextSibling && this._renderer.addClass(nextSibling, 'tw-overflow-hidden');
|
|
13007
13193
|
}
|
|
13008
13194
|
}
|
|
13009
13195
|
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">
|
|
13196
|
+
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
13197
|
<div class="splitter-line"></div>
|
|
13012
13198
|
<div class="grip-handle">
|
|
13013
13199
|
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
@@ -13051,12 +13237,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
13051
13237
|
}], elHeight: [{
|
|
13052
13238
|
type: HostBinding,
|
|
13053
13239
|
args: ['style.height.px']
|
|
13240
|
+
}], spliterResized: [{
|
|
13241
|
+
type: Output
|
|
13054
13242
|
}], minWidth: [{
|
|
13055
13243
|
type: Input
|
|
13056
13244
|
}], maxWidth: [{
|
|
13057
13245
|
type: Input
|
|
13058
13246
|
}], config: [{
|
|
13059
13247
|
type: Input
|
|
13248
|
+
}], elDom: [{
|
|
13249
|
+
type: Input
|
|
13250
|
+
}] } });
|
|
13251
|
+
|
|
13252
|
+
/**
|
|
13253
|
+
* Fills remaining vertical space for the host element.
|
|
13254
|
+
*
|
|
13255
|
+
* - **viewport** — page-level: uses `window.innerHeight` and offset from the top of the viewport.
|
|
13256
|
+
* - **container** — nested layouts: bounds from the **resolved container** (`[containerDom]` if set,
|
|
13257
|
+
* else nearest ancestor with `fillEmptySpace`, else `document.documentElement`).
|
|
13258
|
+
*
|
|
13259
|
+
* Vertical scroll ownership is **not** decided here; use `ScrollLayoutContextHolder` (`nested` | `isolated` | `root`)
|
|
13260
|
+
* from `barsa-novin-ray-core` on the page shell.
|
|
13261
|
+
*
|
|
13262
|
+
* @deprecated Do not use this directive as the primary way to **size individual reports** (grids, calendars).
|
|
13263
|
+
* Prefer the report layout policy / scroll shell (`resolveReportLayoutPolicy`, `report-grid-wrapper`). Filling
|
|
13264
|
+
* **page or shell containers** remains an appropriate use case.
|
|
13265
|
+
**/
|
|
13266
|
+
class FillEmptySpaceDirective extends BaseDirective {
|
|
13267
|
+
constructor() {
|
|
13268
|
+
super(...arguments);
|
|
13269
|
+
/**
|
|
13270
|
+
* `viewport` — fill against the browser viewport (default).
|
|
13271
|
+
* `container` — fill inside resolved container: optional `[containerDom]`, else nearest parent `[fillEmptySpace]`, else document root.
|
|
13272
|
+
*/
|
|
13273
|
+
this.mode = 'viewport';
|
|
13274
|
+
this.heightChanged = new EventEmitter();
|
|
13275
|
+
this._rafId = null;
|
|
13276
|
+
this._viewReady = false;
|
|
13277
|
+
this._onWindowResize = () => this.scheduleMeasure();
|
|
13278
|
+
}
|
|
13279
|
+
ngAfterViewInit() {
|
|
13280
|
+
this._viewReady = true;
|
|
13281
|
+
this.syncFillWatchersAndMeasure();
|
|
13282
|
+
}
|
|
13283
|
+
ngOnChanges(_changes) {
|
|
13284
|
+
if (!this._viewReady) {
|
|
13285
|
+
return;
|
|
13286
|
+
}
|
|
13287
|
+
this.syncFillWatchersAndMeasure();
|
|
13288
|
+
}
|
|
13289
|
+
ngOnDestroy() {
|
|
13290
|
+
this.cancelScheduledMeasure();
|
|
13291
|
+
this.teardownFillLayoutWatchers();
|
|
13292
|
+
super.ngOnDestroy();
|
|
13293
|
+
}
|
|
13294
|
+
Refresh() {
|
|
13295
|
+
this.measureAndApply();
|
|
13296
|
+
}
|
|
13297
|
+
scheduleMeasure() {
|
|
13298
|
+
if (this._rafId !== null) {
|
|
13299
|
+
cancelAnimationFrame(this._rafId);
|
|
13300
|
+
}
|
|
13301
|
+
this._rafId = requestAnimationFrame(() => {
|
|
13302
|
+
this._rafId = null;
|
|
13303
|
+
this.measureAndApply();
|
|
13304
|
+
});
|
|
13305
|
+
}
|
|
13306
|
+
cancelScheduledMeasure() {
|
|
13307
|
+
if (this._rafId !== null) {
|
|
13308
|
+
cancelAnimationFrame(this._rafId);
|
|
13309
|
+
this._rafId = null;
|
|
13310
|
+
}
|
|
13311
|
+
}
|
|
13312
|
+
syncFillWatchersAndMeasure() {
|
|
13313
|
+
this.teardownFillLayoutWatchers();
|
|
13314
|
+
this.cancelScheduledMeasure();
|
|
13315
|
+
if (this.disable) {
|
|
13316
|
+
return;
|
|
13317
|
+
}
|
|
13318
|
+
if (this.height != null) {
|
|
13319
|
+
this.measureAndApply();
|
|
13320
|
+
return;
|
|
13321
|
+
}
|
|
13322
|
+
this.setupFillLayoutWatchers();
|
|
13323
|
+
this.scheduleMeasure();
|
|
13324
|
+
}
|
|
13325
|
+
setupFillLayoutWatchers() {
|
|
13326
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
13327
|
+
window.addEventListener('resize', this._onWindowResize);
|
|
13328
|
+
return;
|
|
13329
|
+
}
|
|
13330
|
+
const roTarget = this.getContainerElement();
|
|
13331
|
+
this._ro = new ResizeObserver(() => this.scheduleMeasure());
|
|
13332
|
+
this._ro.observe(roTarget);
|
|
13333
|
+
window.addEventListener('resize', this._onWindowResize);
|
|
13334
|
+
}
|
|
13335
|
+
teardownFillLayoutWatchers() {
|
|
13336
|
+
this._ro?.disconnect();
|
|
13337
|
+
this._ro = undefined;
|
|
13338
|
+
window.removeEventListener('resize', this._onWindowResize);
|
|
13339
|
+
}
|
|
13340
|
+
measureAndApply() {
|
|
13341
|
+
if (this.disable) {
|
|
13342
|
+
return;
|
|
13343
|
+
}
|
|
13344
|
+
const dom = this._el.nativeElement;
|
|
13345
|
+
if (dom.getClientRects().length === 0) {
|
|
13346
|
+
return;
|
|
13347
|
+
}
|
|
13348
|
+
if (this.height != null) {
|
|
13349
|
+
this.applyFixedHeight(dom);
|
|
13350
|
+
return;
|
|
13351
|
+
}
|
|
13352
|
+
const hostRect = dom.getBoundingClientRect();
|
|
13353
|
+
const containerRect = this.getContainerMetrics();
|
|
13354
|
+
const offsetTop = this.getOffsetTop(hostRect, containerRect);
|
|
13355
|
+
const decrementPx = this.parseCssSize(this.decrement);
|
|
13356
|
+
const available = this.calculateAvailableHeight(containerRect.height, offsetTop, decrementPx);
|
|
13357
|
+
this.applyFillHeight(dom, available);
|
|
13358
|
+
}
|
|
13359
|
+
/**
|
|
13360
|
+
* Element used for ResizeObserver and for `container` mode metrics:
|
|
13361
|
+
* `[containerDom]` → parent `closest('[fillEmptySpace]')` → `document.documentElement`.
|
|
13362
|
+
* Uses `parentElement` before `closest` so the host itself is not selected.
|
|
13363
|
+
*/
|
|
13364
|
+
getContainerElement() {
|
|
13365
|
+
if (this.containerDom) {
|
|
13366
|
+
return this.containerDom;
|
|
13367
|
+
}
|
|
13368
|
+
const host = this._el.nativeElement;
|
|
13369
|
+
const parentFill = host.parentElement?.closest('[fillEmptySpace]');
|
|
13370
|
+
if (parentFill) {
|
|
13371
|
+
return parentFill;
|
|
13372
|
+
}
|
|
13373
|
+
return document.documentElement;
|
|
13374
|
+
}
|
|
13375
|
+
getContainerMetrics() {
|
|
13376
|
+
if (this.mode === 'viewport') {
|
|
13377
|
+
// Same spirit as legacy `100svh`: viewport height; explicit container is not used for sizing.
|
|
13378
|
+
return { top: 0, height: window.innerHeight };
|
|
13379
|
+
}
|
|
13380
|
+
const r = this.getContainerElement().getBoundingClientRect();
|
|
13381
|
+
return { top: r.top, height: r.height };
|
|
13382
|
+
}
|
|
13383
|
+
getOffsetTop(hostRect, containerRect) {
|
|
13384
|
+
return this.dontUseTopBound ? 0 : hostRect.top - containerRect.top;
|
|
13385
|
+
}
|
|
13386
|
+
calculateAvailableHeight(containerHeight, offsetTop, decrementPx) {
|
|
13387
|
+
return Math.max(0, containerHeight - offsetTop - decrementPx);
|
|
13388
|
+
}
|
|
13389
|
+
applyFillHeight(dom, px) {
|
|
13390
|
+
const prop = this.getStyleProperty();
|
|
13391
|
+
if (prop === 'min-height' || prop === 'max-height') {
|
|
13392
|
+
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13393
|
+
}
|
|
13394
|
+
this._renderer2.setStyle(dom, prop, `${px}px`);
|
|
13395
|
+
this.heightChanged.emit();
|
|
13396
|
+
}
|
|
13397
|
+
applyFixedHeight(dom) {
|
|
13398
|
+
if (this.setMinHeight) {
|
|
13399
|
+
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13400
|
+
}
|
|
13401
|
+
if (this.setMaxHeight) {
|
|
13402
|
+
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13403
|
+
}
|
|
13404
|
+
const prop = this.setMinHeight ? 'min-height' : this.setMaxHeight ? 'max-height' : 'height';
|
|
13405
|
+
this._renderer2.setStyle(dom, prop, `${this.height}px`);
|
|
13406
|
+
this.heightChanged.emit();
|
|
13407
|
+
}
|
|
13408
|
+
getStyleProperty() {
|
|
13409
|
+
if (this.setMinHeight) {
|
|
13410
|
+
return 'min-height';
|
|
13411
|
+
}
|
|
13412
|
+
if (this.setMaxHeight) {
|
|
13413
|
+
return 'max-height';
|
|
13414
|
+
}
|
|
13415
|
+
return 'height';
|
|
13416
|
+
}
|
|
13417
|
+
parseCssSize(value) {
|
|
13418
|
+
if (value == null || value === '') {
|
|
13419
|
+
return 0;
|
|
13420
|
+
}
|
|
13421
|
+
if (typeof value === 'number' && !Number.isNaN(value)) {
|
|
13422
|
+
return value;
|
|
13423
|
+
}
|
|
13424
|
+
const s = String(value).trim().toLowerCase();
|
|
13425
|
+
if (!s) {
|
|
13426
|
+
return 0;
|
|
13427
|
+
}
|
|
13428
|
+
if (s.endsWith('rem')) {
|
|
13429
|
+
const n = parseFloat(s);
|
|
13430
|
+
if (Number.isNaN(n)) {
|
|
13431
|
+
return 0;
|
|
13432
|
+
}
|
|
13433
|
+
const rootPx = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
13434
|
+
return n * rootPx;
|
|
13435
|
+
}
|
|
13436
|
+
if (s.endsWith('px')) {
|
|
13437
|
+
const n = parseFloat(s);
|
|
13438
|
+
return Number.isNaN(n) ? 0 : n;
|
|
13439
|
+
}
|
|
13440
|
+
const n = parseFloat(s);
|
|
13441
|
+
return Number.isNaN(n) ? 0 : n;
|
|
13442
|
+
}
|
|
13443
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FillEmptySpaceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13444
|
+
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 }); }
|
|
13445
|
+
}
|
|
13446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FillEmptySpaceDirective, decorators: [{
|
|
13447
|
+
type: Directive,
|
|
13448
|
+
args: [{
|
|
13449
|
+
selector: '[fillEmptySpace]',
|
|
13450
|
+
exportAs: 'fillEmptySpace',
|
|
13451
|
+
standalone: false
|
|
13452
|
+
}]
|
|
13453
|
+
}], propDecorators: { mode: [{
|
|
13454
|
+
type: Input
|
|
13455
|
+
}], containerDom: [{
|
|
13456
|
+
type: Input
|
|
13457
|
+
}], decrement: [{
|
|
13458
|
+
type: Input
|
|
13459
|
+
}], disable: [{
|
|
13460
|
+
type: Input
|
|
13461
|
+
}], height: [{
|
|
13462
|
+
type: Input
|
|
13463
|
+
}], dontUseTopBound: [{
|
|
13464
|
+
type: Input
|
|
13465
|
+
}], setMinHeight: [{
|
|
13466
|
+
type: Input
|
|
13467
|
+
}], setMaxHeight: [{
|
|
13468
|
+
type: Input
|
|
13469
|
+
}], heightChanged: [{
|
|
13470
|
+
type: Output
|
|
13060
13471
|
}] } });
|
|
13061
13472
|
|
|
13062
13473
|
class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
|
|
@@ -13066,8 +13477,10 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
13066
13477
|
this.sectionClass = true;
|
|
13067
13478
|
this.ismodal = false;
|
|
13068
13479
|
this.isinsideview = false;
|
|
13480
|
+
this._scrollLayoutContext = inject(ScrollLayoutContextHolder);
|
|
13069
13481
|
}
|
|
13070
13482
|
ngOnInit() {
|
|
13483
|
+
this._scrollLayoutContext.setMode('isolated');
|
|
13071
13484
|
this.settings = BarsaApi.Common.Util.TryGetValue(this._activatedRoute, 'data._value.pageData.Component.Settings', null);
|
|
13072
13485
|
const isModal = this.settings?.IsModal;
|
|
13073
13486
|
if (isModal) {
|
|
@@ -13096,42 +13509,56 @@ class MasterDetailsPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
13096
13509
|
ngOnDestroy() {
|
|
13097
13510
|
super.ngOnDestroy();
|
|
13098
13511
|
// add ngondestroy because to call routingservice ngondestroy.
|
|
13099
|
-
// if i dont add this ngondestroy in routingservice do not call.
|
|
13512
|
+
// if i dont add this ngondestroy in routingservice do not call.
|
|
13100
13513
|
}
|
|
13101
13514
|
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
|
|
13515
|
+
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: `
|
|
13516
|
+
<div
|
|
13517
|
+
class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row tw-p-2"
|
|
13518
|
+
fillEmptySpace
|
|
13519
|
+
style="box-sizing: border-box;"
|
|
13520
|
+
>
|
|
13104
13521
|
<!-- لیست -->
|
|
13105
13522
|
<div class="tw-w-full md:tw-w-96 master">
|
|
13106
13523
|
<ng-container #containerRef></ng-container>
|
|
13107
13524
|
</div>
|
|
13108
13525
|
<bnrc-splitter></bnrc-splitter>
|
|
13109
13526
|
<!-- جزئیات -->
|
|
13110
|
-
<div
|
|
13527
|
+
<div
|
|
13528
|
+
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
|
|
13529
|
+
!tw-overflow-hidden details tw-min-w-0 tw-p-0"
|
|
13530
|
+
>
|
|
13111
13531
|
<router-outlet name="details"></router-outlet>
|
|
13112
13532
|
</div>
|
|
13113
13533
|
</div>
|
|
13114
13534
|
<router-outlet></router-outlet>
|
|
13115
13535
|
<router-outlet name="dialog"></router-outlet>
|
|
13116
|
-
`, isInline: true, styles: [":host{display:block;height:
|
|
13536
|
+
`, 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
13537
|
}
|
|
13118
13538
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MasterDetailsPageComponent, decorators: [{
|
|
13119
13539
|
type: Component,
|
|
13120
13540
|
args: [{ selector: 'bnrc-master-details-page', template: `
|
|
13121
|
-
<div
|
|
13541
|
+
<div
|
|
13542
|
+
class="tw-flex tw-h-full tw-w-full tw-flex-col md:tw-flex-row tw-p-2"
|
|
13543
|
+
fillEmptySpace
|
|
13544
|
+
style="box-sizing: border-box;"
|
|
13545
|
+
>
|
|
13122
13546
|
<!-- لیست -->
|
|
13123
13547
|
<div class="tw-w-full md:tw-w-96 master">
|
|
13124
13548
|
<ng-container #containerRef></ng-container>
|
|
13125
13549
|
</div>
|
|
13126
13550
|
<bnrc-splitter></bnrc-splitter>
|
|
13127
13551
|
<!-- جزئیات -->
|
|
13128
|
-
<div
|
|
13552
|
+
<div
|
|
13553
|
+
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
|
|
13554
|
+
!tw-overflow-hidden details tw-min-w-0 tw-p-0"
|
|
13555
|
+
>
|
|
13129
13556
|
<router-outlet name="details"></router-outlet>
|
|
13130
13557
|
</div>
|
|
13131
13558
|
</div>
|
|
13132
13559
|
<router-outlet></router-outlet>
|
|
13133
13560
|
<router-outlet name="dialog"></router-outlet>
|
|
13134
|
-
`, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:block;height:
|
|
13561
|
+
`, 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
13562
|
}], propDecorators: { _position: [{
|
|
13136
13563
|
type: HostBinding,
|
|
13137
13564
|
args: ['style.position']
|
|
@@ -13163,123 +13590,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
13163
13590
|
<ng-container #containerBottomRef></ng-container> `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, styles: [":host{min-height:100svh}\n"] }]
|
|
13164
13591
|
}] });
|
|
13165
13592
|
|
|
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
13593
|
class PortalPageSidebarComponent extends PageBaseComponent {
|
|
13284
13594
|
constructor() {
|
|
13285
13595
|
super(...arguments);
|
|
@@ -13294,7 +13604,7 @@ class PortalPageSidebarComponent extends PageBaseComponent {
|
|
|
13294
13604
|
<div class="sidebar" fillEmptySpace><ng-container #containerRef></ng-container></div>
|
|
13295
13605
|
<div class="mainside"><router-outlet name="mainside"></router-outlet></div>
|
|
13296
13606
|
</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 }); }
|
|
13607
|
+
<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
13608
|
}
|
|
13299
13609
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PortalPageSidebarComponent, decorators: [{
|
|
13300
13610
|
type: Component,
|
|
@@ -15583,6 +15893,7 @@ class RenderUlvViewerDirective extends BaseDirective {
|
|
|
15583
15893
|
this._injector = inject(Injector);
|
|
15584
15894
|
this._vcr = inject(ViewContainerRef);
|
|
15585
15895
|
this._cdr = inject(ChangeDetectorRef);
|
|
15896
|
+
this._renderer = inject(Renderer2);
|
|
15586
15897
|
}
|
|
15587
15898
|
ngAfterViewInit() {
|
|
15588
15899
|
super.ngAfterViewInit();
|
|
@@ -15613,6 +15924,7 @@ class RenderUlvViewerDirective extends BaseDirective {
|
|
|
15613
15924
|
.getComponent(moduleName, modulePath, componentName, selector, this._injector)
|
|
15614
15925
|
.pipe(takeUntil(this._onDestroy$), tap((component) => {
|
|
15615
15926
|
component.instance.id = getUniqueId(4);
|
|
15927
|
+
this._renderer.addClass(component.location.nativeElement, 'ulv-viewer');
|
|
15616
15928
|
component.instance.context = context;
|
|
15617
15929
|
component.instance.isReportPage = this.isReportPage;
|
|
15618
15930
|
component.instance.layoutInfo = this.layoutInfo;
|
|
@@ -17636,6 +17948,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
17636
17948
|
args: [{ providedIn: 'root' }]
|
|
17637
17949
|
}], ctorParameters: () => [] });
|
|
17638
17950
|
|
|
17951
|
+
class EntitySettingsStore {
|
|
17952
|
+
constructor() {
|
|
17953
|
+
this.settingsService = inject(BaseSettingsService);
|
|
17954
|
+
this.subjects = new Map();
|
|
17955
|
+
}
|
|
17956
|
+
// ---------------------------------------------------
|
|
17957
|
+
// Subject
|
|
17958
|
+
// ---------------------------------------------------
|
|
17959
|
+
// ---------------------------------------------------
|
|
17960
|
+
// Observable
|
|
17961
|
+
// ---------------------------------------------------
|
|
17962
|
+
select$(entityId) {
|
|
17963
|
+
return this.getSubject(entityId).asObservable();
|
|
17964
|
+
}
|
|
17965
|
+
// ---------------------------------------------------
|
|
17966
|
+
// Snapshot
|
|
17967
|
+
// ---------------------------------------------------
|
|
17968
|
+
getSnapshot(entityId) {
|
|
17969
|
+
return this.getSubject(entityId).value;
|
|
17970
|
+
}
|
|
17971
|
+
// ---------------------------------------------------
|
|
17972
|
+
// Load
|
|
17973
|
+
// ---------------------------------------------------
|
|
17974
|
+
load(entityId) {
|
|
17975
|
+
const key = this.buildKey(entityId);
|
|
17976
|
+
const subject = this.getSubject(entityId);
|
|
17977
|
+
return this.settingsService.getSetting(key).pipe(tap$1((config) => {
|
|
17978
|
+
subject.next(config);
|
|
17979
|
+
}));
|
|
17980
|
+
}
|
|
17981
|
+
// ---------------------------------------------------
|
|
17982
|
+
// Save
|
|
17983
|
+
// ---------------------------------------------------
|
|
17984
|
+
save(entityId, partial) {
|
|
17985
|
+
const key = this.buildKey(entityId);
|
|
17986
|
+
const subject = this.getSubject(entityId);
|
|
17987
|
+
const current = subject.value ?? {};
|
|
17988
|
+
const updated = {
|
|
17989
|
+
...current,
|
|
17990
|
+
...partial
|
|
17991
|
+
};
|
|
17992
|
+
return this.settingsService.saveSetting(key, updated).pipe(tap$1(() => {
|
|
17993
|
+
subject.next(updated);
|
|
17994
|
+
}));
|
|
17995
|
+
}
|
|
17996
|
+
// ---------------------------------------------------
|
|
17997
|
+
// Replace
|
|
17998
|
+
// ---------------------------------------------------
|
|
17999
|
+
replace(entityId, value) {
|
|
18000
|
+
const key = this.buildKey(entityId);
|
|
18001
|
+
const subject = this.getSubject(entityId);
|
|
18002
|
+
return this.settingsService.saveSetting(key, value).pipe(tap$1(() => {
|
|
18003
|
+
subject.next(value);
|
|
18004
|
+
}));
|
|
18005
|
+
}
|
|
18006
|
+
// ---------------------------------------------------
|
|
18007
|
+
// Reset
|
|
18008
|
+
// ---------------------------------------------------
|
|
18009
|
+
reset(entityId) {
|
|
18010
|
+
const key = this.buildKey(entityId);
|
|
18011
|
+
const subject = this.getSubject(entityId);
|
|
18012
|
+
subject.next(null);
|
|
18013
|
+
return this.settingsService.removeSetting(key);
|
|
18014
|
+
}
|
|
18015
|
+
// ---------------------------------------------------
|
|
18016
|
+
// Cleanup
|
|
18017
|
+
// ---------------------------------------------------
|
|
18018
|
+
destroy(entityId) {
|
|
18019
|
+
const subject = this.subjects.get(entityId);
|
|
18020
|
+
if (subject) {
|
|
18021
|
+
subject.complete();
|
|
18022
|
+
this.subjects.delete(entityId);
|
|
18023
|
+
}
|
|
18024
|
+
}
|
|
18025
|
+
getSubject(entityId) {
|
|
18026
|
+
if (!this.subjects.has(entityId)) {
|
|
18027
|
+
this.subjects.set(entityId, new BehaviorSubject(null));
|
|
18028
|
+
}
|
|
18029
|
+
return this.subjects.get(entityId);
|
|
18030
|
+
}
|
|
18031
|
+
// ---------------------------------------------------
|
|
18032
|
+
// Utils
|
|
18033
|
+
// ---------------------------------------------------
|
|
18034
|
+
buildKey(entityId) {
|
|
18035
|
+
return `${this.keyPrefix}${entityId}`;
|
|
18036
|
+
}
|
|
18037
|
+
}
|
|
18038
|
+
|
|
18039
|
+
class CalendarSettingsStore extends EntitySettingsStore {
|
|
18040
|
+
constructor() {
|
|
18041
|
+
super(...arguments);
|
|
18042
|
+
this.keyPrefix = 'cal_cfg_';
|
|
18043
|
+
}
|
|
18044
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18045
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsStore, providedIn: 'root' }); }
|
|
18046
|
+
}
|
|
18047
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: CalendarSettingsStore, decorators: [{
|
|
18048
|
+
type: Injectable,
|
|
18049
|
+
args: [{
|
|
18050
|
+
providedIn: 'root'
|
|
18051
|
+
}]
|
|
18052
|
+
}] });
|
|
18053
|
+
|
|
17639
18054
|
class FormNewComponent extends BaseComponent {
|
|
17640
18055
|
constructor() {
|
|
17641
18056
|
super(...arguments);
|
|
@@ -17987,7 +18402,6 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
17987
18402
|
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
17988
18403
|
constructor() {
|
|
17989
18404
|
super();
|
|
17990
|
-
this.minheight = '100svh';
|
|
17991
18405
|
this.isMobile = getDeviceIsDesktop();
|
|
17992
18406
|
this._activatedRoute = inject(ActivatedRoute);
|
|
17993
18407
|
this._portalService = inject(PortalService);
|
|
@@ -17996,17 +18410,20 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
17996
18410
|
this._cdr = inject(ChangeDetectorRef);
|
|
17997
18411
|
this._loadingSource = new BehaviorSubject(false);
|
|
17998
18412
|
this._routingService = inject(RoutingService, { optional: true, skipSelf: true });
|
|
18413
|
+
this._runtimeNavCache = inject(RuntimeNavStateCacheService);
|
|
17999
18414
|
this.loading$ = this._loadingSource.asObservable().pipe(takeUntil(this._onDestroy$), debounceTime(200));
|
|
18000
18415
|
}
|
|
18001
18416
|
ngOnInit() {
|
|
18002
18417
|
super.ngOnInit();
|
|
18003
18418
|
this._activatedRoute.params
|
|
18004
|
-
.pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => this._extractIds(params)),
|
|
18005
|
-
|
|
18419
|
+
.pipe(takeUntil(this._onDestroy$), tap(() => this._setLoading(true)), map((params) => this._extractIds(params)),
|
|
18420
|
+
// tap((c) => (c.isReportPage ? (this.minheight = 'auto') : '100vh')),
|
|
18421
|
+
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
|
|
18422
|
+
.renderUlvMainUi(resolved, this.containerRef, this._injector, resolved.isReportPage)
|
|
18006
18423
|
.pipe(catchError((_err) =>
|
|
18007
18424
|
// this._location.back();
|
|
18008
18425
|
// return throwError(() => new Error(err));
|
|
18009
|
-
of(true)))), tap((ulv) => this._setActiveReport(ulv)), finalize(() => {
|
|
18426
|
+
of(true)))))), tap((ulv) => this._setActiveReport(ulv)), finalize(() => {
|
|
18010
18427
|
this._setLoading(false);
|
|
18011
18428
|
}))
|
|
18012
18429
|
.subscribe(() => {
|
|
@@ -18040,18 +18457,28 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
18040
18457
|
const navIdOrFieldDefId = params.id.split('__')[0];
|
|
18041
18458
|
const reportId2OrLevelReportId = params.id.split('__').length > 1 ? params.id.split('__')[1] : '';
|
|
18042
18459
|
const reportIdOrMoId = params.id.split('__').length > 2 ? params.id.split('__')[2] : '';
|
|
18460
|
+
const typeDefFromUrl = lastText.startsWith('in') ? lastText.replace('in', '') : '';
|
|
18461
|
+
const cacheKey = lastText.startsWith('in') && typeDefFromUrl && reportIdOrMoId
|
|
18462
|
+
? buildRuntimeNavStateCacheKey(reportId2OrLevelReportId, reportIdOrMoId, typeDefFromUrl)
|
|
18463
|
+
: undefined;
|
|
18043
18464
|
return {
|
|
18044
18465
|
Id: navIdOrFieldDefId,
|
|
18045
18466
|
ReportId: reportIdOrMoId,
|
|
18046
18467
|
ReportId2: reportId2OrLevelReportId,
|
|
18047
18468
|
isReportPage: lastText === '' || this._masterDetailsPage(lastText),
|
|
18469
|
+
cacheKey,
|
|
18048
18470
|
OtherData: !lastText.startsWith('in')
|
|
18049
18471
|
? undefined
|
|
18050
18472
|
: {
|
|
18051
18473
|
FieldId: navIdOrFieldDefId,
|
|
18052
18474
|
IsInsideViewResult: true,
|
|
18053
18475
|
LevelReportId: reportId2OrLevelReportId,
|
|
18054
|
-
Mo: {
|
|
18476
|
+
Mo: {
|
|
18477
|
+
Id: reportIdOrMoId,
|
|
18478
|
+
$Caption: '',
|
|
18479
|
+
$TypeDefId: typeDefFromUrl,
|
|
18480
|
+
$LevelReportId: reportId2OrLevelReportId
|
|
18481
|
+
}
|
|
18055
18482
|
}
|
|
18056
18483
|
};
|
|
18057
18484
|
}
|
|
@@ -18063,19 +18490,78 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
18063
18490
|
this._cdr.detectChanges();
|
|
18064
18491
|
}
|
|
18065
18492
|
_onSelectionAdapter_SelectionChange() {
|
|
18066
|
-
|
|
18067
|
-
|
|
18068
|
-
|
|
18069
|
-
|
|
18070
|
-
|
|
18493
|
+
const routing = this._routingService;
|
|
18494
|
+
if (!routing?.masterDetails || !this._ulvMainCtrlr) {
|
|
18495
|
+
return;
|
|
18496
|
+
}
|
|
18497
|
+
const fieldId = this._navItemParams.ReportId2;
|
|
18498
|
+
const mo = this._ulvMainCtrlr.GetSelectedMetaObject();
|
|
18499
|
+
if (!mo) {
|
|
18500
|
+
return;
|
|
18501
|
+
}
|
|
18502
|
+
const moId = `${mo.Id}`;
|
|
18503
|
+
const levelReportId = mo.$LevelReportId || '';
|
|
18504
|
+
const typeDefId = `${mo.$TypeDefId}`;
|
|
18505
|
+
const cacheKey = buildRuntimeNavStateCacheKey(levelReportId, moId, typeDefId);
|
|
18506
|
+
const envelope = {
|
|
18507
|
+
version: 1,
|
|
18508
|
+
sessionId: '',
|
|
18509
|
+
createdAt: Date.now(),
|
|
18510
|
+
schema: RUNTIME_NAV_STATE_SCHEMA_V1,
|
|
18511
|
+
serializationMode: 'dto',
|
|
18512
|
+
payload: {
|
|
18513
|
+
OtherData: {
|
|
18514
|
+
FieldId: fieldId,
|
|
18515
|
+
IsInsideViewResult: true,
|
|
18516
|
+
LevelReportId: levelReportId,
|
|
18517
|
+
Mo: mo
|
|
18518
|
+
}
|
|
18071
18519
|
}
|
|
18072
|
-
|
|
18073
|
-
|
|
18074
|
-
|
|
18520
|
+
};
|
|
18521
|
+
void this._runtimeNavCache.save(cacheKey, envelope).finally(() => {
|
|
18522
|
+
routing.navigate(['details', `${fieldId}__${levelReportId}__${moId}__in${mo.$TypeDefId}`], true, null, null);
|
|
18523
|
+
});
|
|
18524
|
+
}
|
|
18525
|
+
/**
|
|
18526
|
+
* URL parse → cache get → merge/hydrate → finalized navItem (before renderUlvMainUi).
|
|
18527
|
+
*/
|
|
18528
|
+
async _finalizeNavItemFromCache(nav) {
|
|
18529
|
+
if (!nav.cacheKey || !nav.OtherData) {
|
|
18530
|
+
return nav;
|
|
18531
|
+
}
|
|
18532
|
+
const env = await this._runtimeNavCache.get(nav.cacheKey);
|
|
18533
|
+
return this._applyCachedEnvelope(nav, env);
|
|
18534
|
+
}
|
|
18535
|
+
_applyCachedEnvelope(nav, env) {
|
|
18536
|
+
if (!env?.payload || !nav.OtherData) {
|
|
18537
|
+
return nav;
|
|
18538
|
+
}
|
|
18539
|
+
if (env.schema !== RUNTIME_NAV_STATE_SCHEMA_V1 || env.version !== 1) {
|
|
18540
|
+
return nav;
|
|
18541
|
+
}
|
|
18542
|
+
if (env.expiresAt != null && Date.now() > env.expiresAt) {
|
|
18543
|
+
return nav;
|
|
18544
|
+
}
|
|
18545
|
+
const p = env.payload;
|
|
18546
|
+
if (env.serializationMode === 'dto' || env.serializationMode === 'hydrated') {
|
|
18547
|
+
const mergedOther = p.OtherData != null
|
|
18548
|
+
? {
|
|
18549
|
+
...nav.OtherData,
|
|
18550
|
+
...p.OtherData,
|
|
18551
|
+
Mo: p.OtherData.Mo ?? nav.OtherData.Mo
|
|
18552
|
+
}
|
|
18553
|
+
: nav.OtherData;
|
|
18554
|
+
return {
|
|
18555
|
+
...nav,
|
|
18556
|
+
OtherData: mergedOther,
|
|
18557
|
+
RuntimeState: p.RuntimeState ?? nav.RuntimeState,
|
|
18558
|
+
Context: p.Context ?? nav.Context
|
|
18559
|
+
};
|
|
18075
18560
|
}
|
|
18561
|
+
return nav;
|
|
18076
18562
|
}
|
|
18077
18563
|
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",
|
|
18564
|
+
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
18565
|
}
|
|
18080
18566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ReportNavigatorComponent, decorators: [{
|
|
18081
18567
|
type: Component,
|
|
@@ -18083,9 +18569,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
18083
18569
|
}], ctorParameters: () => [], propDecorators: { containerRef: [{
|
|
18084
18570
|
type: ViewChild,
|
|
18085
18571
|
args: ['containerRef', { static: true, read: ViewContainerRef }]
|
|
18086
|
-
}], minheight: [{
|
|
18087
|
-
type: HostBinding,
|
|
18088
|
-
args: ['style.min-height']
|
|
18089
18572
|
}] } });
|
|
18090
18573
|
|
|
18091
18574
|
class ReportEmptyPageComponent extends PageWithFormHandlerBaseComponent {
|
|
@@ -18359,6 +18842,88 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
18359
18842
|
}]
|
|
18360
18843
|
}] });
|
|
18361
18844
|
|
|
18845
|
+
/** Default CSS viewport wrapper class for report bodies (table, calendar, �) */
|
|
18846
|
+
const REPORT_GRID_VIEWPORT_CLASS = 'report-grid-wrapper';
|
|
18847
|
+
const DEFAULT_REPORT_LAYOUT_POLICY = Object.freeze({
|
|
18848
|
+
layout: 'inline',
|
|
18849
|
+
scroll: 'inherit'
|
|
18850
|
+
});
|
|
18851
|
+
/** Per-selector defaults (extend in app code if needed). Keys match `UiReportViewBase.UiComponent.Selector`. */
|
|
18852
|
+
const REPORT_TYPE_DEFAULT_POLICIES = Object.freeze({
|
|
18853
|
+
'bsu-ui-calendar': { layout: 'fill', scroll: 'self' }
|
|
18854
|
+
});
|
|
18855
|
+
function scrollLayoutModeToContextEnvironment(mode) {
|
|
18856
|
+
switch (mode) {
|
|
18857
|
+
case 'nested':
|
|
18858
|
+
return { scrollContainerDepth: 1, shell: 'page' };
|
|
18859
|
+
case 'isolated':
|
|
18860
|
+
return { scrollContainerDepth: 0, shell: 'page', viewportIsolation: true };
|
|
18861
|
+
default:
|
|
18862
|
+
return { scrollContainerDepth: 0, shell: 'page' };
|
|
18863
|
+
}
|
|
18864
|
+
}
|
|
18865
|
+
function contextDefaultsFromEnvironment(env) {
|
|
18866
|
+
if (env.scrollContainerDepth > 0) {
|
|
18867
|
+
return { scroll: 'inherit', layout: 'inline' };
|
|
18868
|
+
}
|
|
18869
|
+
return {};
|
|
18870
|
+
}
|
|
18871
|
+
function mergePolicyLayers(...layers) {
|
|
18872
|
+
let layout;
|
|
18873
|
+
let scroll;
|
|
18874
|
+
for (const layer of layers) {
|
|
18875
|
+
if (!layer) {
|
|
18876
|
+
continue;
|
|
18877
|
+
}
|
|
18878
|
+
if (layer.layout !== undefined) {
|
|
18879
|
+
layout = layer.layout;
|
|
18880
|
+
}
|
|
18881
|
+
if (layer.scroll !== undefined) {
|
|
18882
|
+
scroll = layer.scroll;
|
|
18883
|
+
}
|
|
18884
|
+
}
|
|
18885
|
+
return {
|
|
18886
|
+
layout: layout ?? DEFAULT_REPORT_LAYOUT_POLICY.layout,
|
|
18887
|
+
scroll: scroll ?? DEFAULT_REPORT_LAYOUT_POLICY.scroll
|
|
18888
|
+
};
|
|
18889
|
+
}
|
|
18890
|
+
/**
|
|
18891
|
+
* Final scroll arbitration (pure). Call after merge so registry/explicit `self` wins over nested inherit defaults.
|
|
18892
|
+
*/
|
|
18893
|
+
function resolveFinalScroll(merged, env) {
|
|
18894
|
+
if (merged.scroll === 'self') {
|
|
18895
|
+
return 'self';
|
|
18896
|
+
}
|
|
18897
|
+
if (env.scrollContainerDepth > 0) {
|
|
18898
|
+
return 'inherit';
|
|
18899
|
+
}
|
|
18900
|
+
return 'self';
|
|
18901
|
+
}
|
|
18902
|
+
/**
|
|
18903
|
+
* Pure, framework-agnostic policy resolution. Later layers in `extraPartials` override earlier ones.
|
|
18904
|
+
* Order: DEFAULT, contextDefaults(env), registryDefault, ...extraPartials (each partial last-wins on its own keys).
|
|
18905
|
+
*/
|
|
18906
|
+
function resolveReportLayoutPolicy(env, registryDefault, ...extraPartials) {
|
|
18907
|
+
const merged = mergePolicyLayers({ layout: DEFAULT_REPORT_LAYOUT_POLICY.layout, scroll: DEFAULT_REPORT_LAYOUT_POLICY.scroll }, contextDefaultsFromEnvironment(env), registryDefault, ...extraPartials);
|
|
18908
|
+
const scroll = resolveFinalScroll(merged, env);
|
|
18909
|
+
return Object.freeze({
|
|
18910
|
+
layout: merged.layout,
|
|
18911
|
+
scroll
|
|
18912
|
+
});
|
|
18913
|
+
}
|
|
18914
|
+
function getReportTypeDefaultPolicy(selector) {
|
|
18915
|
+
if (!selector) {
|
|
18916
|
+
return undefined;
|
|
18917
|
+
}
|
|
18918
|
+
return REPORT_TYPE_DEFAULT_POLICIES[selector];
|
|
18919
|
+
}
|
|
18920
|
+
/** Optional metadata path on view settings (low-code / future designer) */
|
|
18921
|
+
function extractLayoutPolicyFromView(view) {
|
|
18922
|
+
const s = view?.UiComponent?.Settings;
|
|
18923
|
+
const raw = s?.['ReportLayoutPolicy'];
|
|
18924
|
+
return raw;
|
|
18925
|
+
}
|
|
18926
|
+
|
|
18362
18927
|
class NoInternetComponent extends BaseComponent {
|
|
18363
18928
|
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
18364
18929
|
constructor() {
|
|
@@ -18824,6 +19389,7 @@ const directives = [
|
|
|
18824
19389
|
ResizeHandlerDirective,
|
|
18825
19390
|
SafeBottomDirective
|
|
18826
19391
|
];
|
|
19392
|
+
const stores = [CalendarSettingsStore];
|
|
18827
19393
|
const services = [
|
|
18828
19394
|
PortalService,
|
|
18829
19395
|
UploadService,
|
|
@@ -18851,8 +19417,7 @@ const services = [
|
|
|
18851
19417
|
BarsaStorageService,
|
|
18852
19418
|
ServiceWorkerCommuncationService,
|
|
18853
19419
|
ApplicationCtrlrService,
|
|
18854
|
-
PushNotificationService
|
|
18855
|
-
CalendarSettingsService
|
|
19420
|
+
PushNotificationService
|
|
18856
19421
|
];
|
|
18857
19422
|
const pipes = [
|
|
18858
19423
|
NumeralPipe,
|
|
@@ -18915,7 +19480,8 @@ const pipes = [
|
|
|
18915
19480
|
MapToChatMessagePipe,
|
|
18916
19481
|
PicturesByGroupIdPipe,
|
|
18917
19482
|
ScopedCssPipe,
|
|
18918
|
-
ReportActionListPipe
|
|
19483
|
+
ReportActionListPipe,
|
|
19484
|
+
GetCssVariableValuePipe
|
|
18919
19485
|
];
|
|
18920
19486
|
const functionL1 = async function () {
|
|
18921
19487
|
if (BarsaApi.LoginFormData.Culture === 'fa-IR') {
|
|
@@ -19012,7 +19578,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19012
19578
|
useClass: SimpleTemplateEngine
|
|
19013
19579
|
},
|
|
19014
19580
|
...pipes,
|
|
19015
|
-
...services
|
|
19581
|
+
...services,
|
|
19582
|
+
...stores
|
|
19016
19583
|
]
|
|
19017
19584
|
};
|
|
19018
19585
|
}
|
|
@@ -19105,7 +19672,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19105
19672
|
MapToChatMessagePipe,
|
|
19106
19673
|
PicturesByGroupIdPipe,
|
|
19107
19674
|
ScopedCssPipe,
|
|
19108
|
-
ReportActionListPipe,
|
|
19675
|
+
ReportActionListPipe,
|
|
19676
|
+
GetCssVariableValuePipe, PlaceHolderDirective,
|
|
19109
19677
|
NumbersOnlyInputDirective,
|
|
19110
19678
|
RenderUlvViewerDirective,
|
|
19111
19679
|
RenderUlvPaginDirective,
|
|
@@ -19249,7 +19817,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
19249
19817
|
MapToChatMessagePipe,
|
|
19250
19818
|
PicturesByGroupIdPipe,
|
|
19251
19819
|
ScopedCssPipe,
|
|
19252
|
-
ReportActionListPipe,
|
|
19820
|
+
ReportActionListPipe,
|
|
19821
|
+
GetCssVariableValuePipe, PlaceHolderDirective,
|
|
19253
19822
|
NumbersOnlyInputDirective,
|
|
19254
19823
|
RenderUlvViewerDirective,
|
|
19255
19824
|
RenderUlvPaginDirective,
|
|
@@ -19330,5 +19899,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
19330
19899
|
* Generated bundle index. Do not edit.
|
|
19331
19900
|
*/
|
|
19332
19901
|
|
|
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-
|
|
19902
|
+
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, RUNTIME_NAV_STATE_SCHEMA_V1 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, LogService as bA, PortalService as bB, UiService as bC, UlvMainService as bD, UploadService as bE, NetworkStatusService as bF, AudioRecordingService as bG, VideoRecordingService as bH, LocalStorageService as bI, IndexedDbService as bJ, BarsaStorageService as bK, PromptUpdateService as bL, NotificationService as bM, ServiceWorkerNotificationService as bN, ColumnService as bO, ServiceWorkerCommuncationService as bP, SaveScrollPositionService as bQ, RoutingService as bR, GroupByService as bS, LayoutMainContentService as bT, TabpageService as bU, InMemoryStorageService as bV, ScrollLayoutContextHolder as bW, ShellbarHeightService as bX, ApplicationCtrlrService as bY, PushCheckService as bZ, IdbService 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, GetCssVariableValuePipe as bp, ApiService as bq, BreadcrumbService as br, CustomInjector as bs, DialogParams as bt, BarsaDialogService as bu, FormPanelService as bv, FormService as bw, ContainerService as bx, HorizontalLayoutService as by, LayoutService as bz, BaseDynamicComponent as c, MetaobjectDataModel as c$, buildRuntimeNavStateCacheKey as c0, RuntimeNavStateCacheService as c1, PushNotificationService as c2, CardViewService as c3, BaseSettingsService as c4, SimpleTemplateEngine as c5, TEMPLATE_ENGINE as c6, PortalDynamicPageResolver as c7, PortalFormPageResolver as c8, PortalPageResolver as c9, NOTIFICATAION_POPUP_SERVER as cA, TOAST_SERVICE as cB, NOTIFICATION_WEBWORKER_FACTORY as cC, GeneralControlInfoModel as cD, StringControlInfoModel as cE, RichStringControlInfoModel as cF, NumberControlInfoModel as cG, FilePictureInfoModel as cH, FileControlInfoModel as cI, CommandControlInfoModel as cJ, IconControlInfoModel as cK, PictureFileControlInfoModel as cL, GaugeControlInfoModel as cM, RelationListControlInfoModel as cN, HistoryControlInfoModel as cO, RabetehAkseTakiListiControlInfoModel as cP, RelatedReportControlInfoModel as cQ, CodeEditorControlInfoModel as cR, EnumControlInfoModel as cS, RowDataOption as cT, DateTimeControlInfoModel as cU, BoolControlInfoModel as cV, CalculateControlInfoModel as cW, SubformControlInfoModel as cX, LinearListControlInfoModel as cY, ListRelationModel as cZ, SingleRelationControlInfoModel as c_, PortalReportPageResolver as ca, TileGroupBreadcrumResolver as cb, LoginSettingsResolver as cc, ReportBreadcrumbResolver as cd, DateService as ce, DateHijriService as cf, DateMiladiService as cg, DateShamsiService as ch, EntitySettingsStore as ci, CalendarSettingsStore as cj, FormNewComponent as ck, ReportContainerComponent as cl, FormComponent as cm, FieldUiComponent as cn, BarsaSapUiFormPageModule as co, ReportNavigatorComponent as cp, BaseController as cq, FieldBaseController as cr, ViewBase as cs, ModalRootComponent as ct, ButtonLoadingComponent as cu, UnlimitSessionComponent as cv, SplitterComponent as cw, APP_VERSION as cx, DIALOG_SERVICE as cy, FORM_DIALOG_COMPONENT as cz, DynamicFormComponent as d, getLabelWidth as d$, MoForReportModelBase as d0, MoForReportModel as d1, ReportBaseInfo as d2, FormToolbarButton as d3, ReportExtraInfo as d4, MetaobjectRelationModel as d5, FieldInfoTypeEnum as d6, BaseReportModel as d7, DefaultCommandsAccessValue as d8, CustomCommand as d9, PageBaseComponent as dA, NumberBaseComponent as dB, FilesValidationHelper as dC, BarsaApi as dD, ReportViewBaseComponent as dE, FormPropsBaseComponent as dF, LinearListHelper as dG, PageWithFormHandlerBaseComponent as dH, FormPageBaseComponent as dI, FormPageComponent as dJ, BaseColumnPropsComponent as dK, TilePropsComponent as dL, FormFieldReportPageComponent as dM, ColumnRendererBase as dN, ColumnRendererViewBase as dO, BaseUlvSettingComponent as dP, TableHeaderWidthMode as dQ, setTableThWidth as dR, calculateColumnContent as dS, calculateColumnWidth as dT, setColumnWidthByMaxMoContentWidth as dU, calculateMoDataListContentWidthByColumnName as dV, calculateFreeColumnSize as dW, calculateColumnWidthFitToContainer as dX, calcContextMenuWidth as dY, RotateImage as dZ, isInLocalMode as d_, ReportModel as da, ReportListModel as db, ReportFormModel as dc, ReportCalendarModel as dd, ReportTreeModel as de, ReportViewColumn as df, DefaultGridSetting as dg, GridSetting as dh, ColSetting as di, SortSetting as dj, ReportField as dk, DateRanges as dl, SortDirection as dm, SelectionMode as dn, UlvHeightSizeType as dp, FieldBaseComponent as dq, FieldViewBase as dr, FormBaseComponent as ds, FormToolbarBaseComponent as dt, SystemBaseComponent as du, ReportBaseComponent as dv, ReportItemBaseComponent as dw, ApplicationBaseComponent as dx, LayoutItemBaseComponent as dy, LayoutPanelBaseComponent as dz, DynamicItemComponent as e, availablePrefixes as e$, getColumnValueOfMoDataList as e0, throwIfAlreadyLoaded as e1, measureText2 as e2, measureText as e3, measureTextBy as e4, genrateInlineMoId as e5, enumValueToStringSize as e6, isVersionBiggerThan as e7, compareVersions as e8, scrollToElement as e9, getIcon as eA, isImage as eB, GetAllColumnsSorted as eC, GetVisibleValue as eD, GroupBy as eE, FindGroup as eF, FillAllLayoutControls as eG, FindToolbarItem as eH, FindLayoutSettingFromLayout94 as eI, GetAllHorizontalFromLayout94 as eJ, getGridSettings as eK, getResetGridSettings as eL, GetDefaultMoObjectInfo as eM, getLayout94ObjectInfo as eN, getFormSettings as eO, createFormPanelMetaConditions as eP, getNewMoGridEditor as eQ, createGridEditorFormPanel as eR, getLayoutControl as eS, getControlList as eT, shallowEqual as eU, toNumber as eV, InputNumber as eW, AffixRespondEvents as eX, isTargetWindow as eY, getTargetRect as eZ, getFieldValue as e_, executeUlvCommandHandler as ea, getUniqueId as eb, getDateService as ec, getAllItemsPerChildren as ed, setOneDepthLevel as ee, isFirefox as ef, getImagePath as eg, checkPermission as eh, fixUnclosedParentheses as ei, isFunction as ej, DeviceWidth as ek, getHeaderValue as el, elementInViewport2 as em, PreventDefaulEvent as en, stopPropagation as eo, getParentHeight as ep, getComponentDefined as eq, isSafari as er, isFF as es, getDeviceIsPhone as et, getDeviceIsDesktop as eu, getDeviceIsTablet as ev, getDeviceIsMobile as ew, getControlSizeMode as ex, formatBytes as ey, getValidExtension as ez, formRoutes as f, requestAnimationFramePolyfill as f0, ExecuteDynamicCommand as f1, ExecuteWorkflowChoiceDef as f2, getRequestAnimationFrame as f3, cancelRequestAnimationFrame as f4, easeInOutCubic as f5, WordMimeType as f6, ImageMimeType as f7, PdfMimeType as f8, AllFilesMimeType as f9, IntersectionStatus as fA, fromIntersectionObserver as fB, CustomRouteReuseStrategy as fC, AuthGuard as fD, RedirectHomeGuard as fE, RootPageComponent as fF, ResizableComponent as fG, ResizableDirective as fH, ResizableModule as fI, PushBannerComponent as fJ, REPORT_GRID_VIEWPORT_CLASS as fK, DEFAULT_REPORT_LAYOUT_POLICY as fL, REPORT_TYPE_DEFAULT_POLICIES as fM, scrollLayoutModeToContextEnvironment as fN, contextDefaultsFromEnvironment as fO, resolveFinalScroll as fP, resolveReportLayoutPolicy as fQ, getReportTypeDefaultPolicy as fR, extractLayoutPolicyFromView as fS, BarsaNovinRayCoreModule as fT, VideoMimeType as fa, AudioMimeType as fb, MimeTypes as fc, GetContentType as fd, GetViewableExtensions as fe, ChangeLayoutInfoCustomUi as ff, mobile_regex as fg, number_only as fh, forbiddenValidator as fi, GetImgTags as fj, ImagetoPrint as fk, PrintImage as fl, SaveImageToFile as fm, validateAllFormFields as fn, getFocusableTagNames as fo, addCssVariableToRoot as fp, flattenTree as fq, IsDarkMode as fr, nullOrUndefinedString as fs, fromEntries as ft, bodyClick as fu, removeDynamicStyle as fv, addDynamicVariableTo as fw, AddDynamicFormStyles as fx, RemoveDynamicFormStyles as fy, ContainerComponent 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 };
|
|
19903
|
+
//# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-D50KRKKo.mjs.map
|