barsa-novin-ray-core 2.3.165 → 3.0.1
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-Q1H9o6KT.mjs → barsa-novin-ray-core-barsa-novin-ray-core-BneCvL2Z.mjs} +647 -93
- package/fesm2022/barsa-novin-ray-core-barsa-novin-ray-core-BneCvL2Z.mjs.map +1 -0
- package/fesm2022/{barsa-novin-ray-core-barsa-report-page.module-DKTPWXYB.mjs → barsa-novin-ray-core-barsa-report-page.module-CpACJpmQ.mjs} +2 -2
- package/fesm2022/{barsa-novin-ray-core-barsa-report-page.module-DKTPWXYB.mjs.map → barsa-novin-ray-core-barsa-report-page.module-CpACJpmQ.mjs.map} +1 -1
- package/fesm2022/barsa-novin-ray-core.mjs +1 -1
- package/package.json +1 -1
- package/types/barsa-novin-ray-core.d.ts +197 -17
- package/fesm2022/barsa-novin-ray-core-barsa-novin-ray-core-Q1H9o6KT.mjs.map +0 -1
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, Injector, EnvironmentInjector, ApplicationRef, createComponent, Compiler, DOCUMENT
|
|
3
|
-
import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, shareReplay, catchError, timer, combineLatest, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, forkJoin, withLatestFrom as withLatestFrom$1, fromEvent, throwError, merge, interval, filter as filter$1, lastValueFrom, timeout, takeUntil as takeUntil$1, take, skip, Observable, tap as tap$1, mergeWith, Subscription } from 'rxjs';
|
|
2
|
+
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, signal, ChangeDetectorRef, effect, Injector, EnvironmentInjector, ApplicationRef, createComponent, InjectionToken, Compiler, DOCUMENT as DOCUMENT$1, NgZone, ViewContainerRef, isDevMode, SecurityContext, EventEmitter, Renderer2, HostBinding, Output, HostListener, ViewChild, Directive, TemplateRef, input, booleanAttribute, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, ErrorHandler, provideAppInitializer } from '@angular/core';
|
|
3
|
+
import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, shareReplay, catchError, timer, combineLatest, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, forkJoin, withLatestFrom as withLatestFrom$1, fromEvent, EMPTY, throwError, merge, interval, filter as filter$1, lastValueFrom, timeout, 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';
|
|
7
|
-
import { filter, startWith, map, tap, takeUntil, exhaustMap as exhaustMap$1, withLatestFrom, delay, debounceTime, distinctUntilChanged, concatMap, finalize, publishReplay, refCount,
|
|
7
|
+
import { filter, startWith, map, tap, takeUntil, exhaustMap as exhaustMap$1, withLatestFrom, delay, debounceTime, distinctUntilChanged, concatMap, finalize, publishReplay, refCount, switchMap as switchMap$1, shareReplay as shareReplay$1, catchError as catchError$1, merge as merge$1, pluck, mergeWith as mergeWith$1 } from 'rxjs/operators';
|
|
8
8
|
import moment from 'moment';
|
|
9
9
|
import moment$1 from 'moment-hijri';
|
|
10
10
|
import moment$2 from 'moment-jalaali';
|
|
11
11
|
import { _isNumberValue } from '@angular/cdk/coercion';
|
|
12
12
|
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
13
|
-
import { HttpClient, HttpEventType, HttpErrorResponse, HttpHeaders, provideHttpClient, withXhr, withInterceptorsFromDi } from '@angular/common/http';
|
|
14
|
-
import { loadRemoteModule } from '@angular-architects/native-federation';
|
|
15
13
|
import * as i1$1 from '@angular/common';
|
|
16
|
-
import { Location, TitleCasePipe, CommonModule } from '@angular/common';
|
|
14
|
+
import { DOCUMENT, Location, TitleCasePipe, CommonModule } from '@angular/common';
|
|
15
|
+
import { HttpClient, HttpEventType, HttpErrorResponse, HttpHeaders, provideHttpClient, withXhr, withInterceptorsFromDi } from '@angular/common/http';
|
|
17
16
|
import RecordRTC from 'recordrtc';
|
|
18
17
|
import { SwUpdate, SwPush } from '@angular/service-worker';
|
|
19
18
|
import { openDB } from 'idb';
|
|
@@ -1750,6 +1749,40 @@ function calculateColumnWidthFitToContainer(container, canView, disableContextMe
|
|
|
1750
1749
|
// });
|
|
1751
1750
|
return { columns: [...columns], contextMenuWidth };
|
|
1752
1751
|
}
|
|
1752
|
+
/**
|
|
1753
|
+
* تشخیص میدهد که آیا جدول باید از حالتِ FitToContainer به FreeColumnSize (عرضِ طبیعی + اسکرولِ افقی)
|
|
1754
|
+
* سوییچ کند یا نه. برای اینکه یک ستونِ outlier کلِ جدول را اسکرولی نکند، فقط وقتی `true` میدهد که
|
|
1755
|
+
* **حداقل `threshold` ستون** در سهمِ برابرِ کانتینر بیش از `maxHiddenRatio` (پیشفرض ۳۰٪) پنهان بمانند.
|
|
1756
|
+
*/
|
|
1757
|
+
function shouldUseFreeColumnSize(containerWidth, columns, threshold = 2, maxHiddenRatio = 0.3, reservedWidth = 0) {
|
|
1758
|
+
if (!containerWidth || containerWidth <= 0 || !columns?.length) {
|
|
1759
|
+
return false;
|
|
1760
|
+
}
|
|
1761
|
+
// ستونِ رنگِ اولِ ردیف (FieldTypeId===41) و ستونهای مخفی را کنار میگذاریم (همراستا با FitToContainer)
|
|
1762
|
+
const visibleColumns = columns.filter((c, i) => !c.Hidden && !(i === 0 && c.FieldTypeId === 41));
|
|
1763
|
+
const visibleCount = visibleColumns.length;
|
|
1764
|
+
if (visibleCount === 0) {
|
|
1765
|
+
return false;
|
|
1766
|
+
}
|
|
1767
|
+
// فضای واقعیِ در دسترسِ ستونهای داده = عرضِ کانتینر منهای سربار (چکباکس/منوی زمینه/دکمهی view)
|
|
1768
|
+
const availableWidth = containerWidth - reservedWidth;
|
|
1769
|
+
if (availableWidth <= 0) {
|
|
1770
|
+
return true;
|
|
1771
|
+
}
|
|
1772
|
+
const fairShare = availableWidth / visibleCount;
|
|
1773
|
+
let crampedCount = 0;
|
|
1774
|
+
for (const col of visibleColumns) {
|
|
1775
|
+
const neededWidth = setColumnCaptionWidth(col);
|
|
1776
|
+
// «بیش از maxHiddenRatio پنهان» ⇔ سهمِ برابر < (۱-ratio)×عرضِ لازم
|
|
1777
|
+
if (neededWidth * (1 - maxHiddenRatio) > fairShare) {
|
|
1778
|
+
crampedCount++;
|
|
1779
|
+
if (crampedCount >= threshold) {
|
|
1780
|
+
return true;
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
return false;
|
|
1785
|
+
}
|
|
1753
1786
|
function calcContextMenuWidth(contextMenuItems, disableContextMenuOverflow) {
|
|
1754
1787
|
let contextMenuWidth = contextMenuItems.length > 1 ? 40 : 0;
|
|
1755
1788
|
const btnPadding = 14 + 2 + 10; // padding + border + if text is overflowed then add 5 pixel.so we always 5 px to it.
|
|
@@ -1870,6 +1903,20 @@ function measureTextBy(text, fontSize, fontName) {
|
|
|
1870
1903
|
function genrateInlineMoId() {
|
|
1871
1904
|
return (BarsaApi.idGenerator--).toString();
|
|
1872
1905
|
}
|
|
1906
|
+
/**
|
|
1907
|
+
* تبدیل مقدار زمانی با ساختار hh:mm که از سرور بهصورت عددِ اعشاریِ «ساعت.دقیقه» میآید، به میلیثانیه.
|
|
1908
|
+
* بخشِ صحیح = ساعت و دو رقمِ اعشار = دقیقه؛ مثلاً "0.01" = 00:01 = یک دقیقه، "1.30" = 01:30 = نود دقیقه.
|
|
1909
|
+
* برای مقدار نامعتبر، خالی یا صفر و منفی، عددِ 0 (یعنی «خاموش») برمیگرداند.
|
|
1910
|
+
*/
|
|
1911
|
+
function hhmmToMs(value) {
|
|
1912
|
+
const num = Number(value);
|
|
1913
|
+
if (!num || num <= 0) {
|
|
1914
|
+
return 0;
|
|
1915
|
+
}
|
|
1916
|
+
const hours = Math.floor(num);
|
|
1917
|
+
const minutes = Math.round((num - hours) * 100);
|
|
1918
|
+
return (hours * 60 + minutes) * 60 * 1000;
|
|
1919
|
+
}
|
|
1873
1920
|
function enumValueToStringSize(value, defaultValue) {
|
|
1874
1921
|
switch (value) {
|
|
1875
1922
|
case '1':
|
|
@@ -3326,6 +3373,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3326
3373
|
}]
|
|
3327
3374
|
}], ctorParameters: () => [] });
|
|
3328
3375
|
|
|
3376
|
+
/**
|
|
3377
|
+
* پورتِ جاواسکریپتیِ DateTimeHelper.ToRelativeDate (سیشارپ).
|
|
3378
|
+
* فاصلهی تاریخِ ورودی تا «الان» را بهصورت متنِ نسبیِ فارسی برمیگرداند.
|
|
3379
|
+
*
|
|
3380
|
+
* نمونهها: «چند ثانیه پیش»، «۲ دقیقه پیش»، «۳ ساعت دیگر»، «فردا»، «۵ روز پیش»، «۲ ماه دیگر».
|
|
3381
|
+
*
|
|
3382
|
+
* @param value تاریخ ورودی (Date | رشته | timestamp میلیثانیه).
|
|
3383
|
+
* @param now مبنای «الان» بر حسب میلیثانیه؛ برای تستپذیری و بهروزرسانیِ سیگنالی قابل تزریق است.
|
|
3384
|
+
*/
|
|
3385
|
+
function toRelativeDate(value, now = Date.now()) {
|
|
3386
|
+
if (value === null || value === undefined || value === '') {
|
|
3387
|
+
return 'نامشخص';
|
|
3388
|
+
}
|
|
3389
|
+
const date = value instanceof Date ? value.getTime() : new Date(value).getTime();
|
|
3390
|
+
// تاریخِ نامعتبر یا مقدارِ پیشفرضِ DateTime (DateTime.MinValue)
|
|
3391
|
+
if (Number.isNaN(date)) {
|
|
3392
|
+
return 'نامشخص';
|
|
3393
|
+
}
|
|
3394
|
+
const tsSeconds = (date - now) / 1000; // مثبت => آینده، منفی => گذشته
|
|
3395
|
+
const delta = Math.abs(tsSeconds);
|
|
3396
|
+
const isFuture = tsSeconds > 0;
|
|
3397
|
+
const suffix = isFuture ? 'دیگر' : 'پیش';
|
|
3398
|
+
if (delta < 60) {
|
|
3399
|
+
return isFuture ? 'چند ثانیه دیگر' : 'چند ثانیه پیش';
|
|
3400
|
+
}
|
|
3401
|
+
if (delta < 3600) {
|
|
3402
|
+
return `${Math.floor(delta / 60)} دقیقه ${suffix}`;
|
|
3403
|
+
}
|
|
3404
|
+
if (delta < 86400) {
|
|
3405
|
+
return `${Math.floor(delta / 3600)} ساعت ${suffix}`;
|
|
3406
|
+
}
|
|
3407
|
+
if (delta < 172800) {
|
|
3408
|
+
return isFuture ? 'فردا' : 'دیروز';
|
|
3409
|
+
}
|
|
3410
|
+
if (delta < 604800) {
|
|
3411
|
+
return `${Math.floor(delta / 86400)} روز ${suffix}`;
|
|
3412
|
+
}
|
|
3413
|
+
if (delta < 2592000) {
|
|
3414
|
+
return `${Math.floor(delta / 604800)} هفته ${suffix}`;
|
|
3415
|
+
}
|
|
3416
|
+
if (delta < 31536000) {
|
|
3417
|
+
return `${Math.floor(delta / 2592000)} ماه ${suffix}`;
|
|
3418
|
+
}
|
|
3419
|
+
return `${Math.floor(delta / 31536000)} سال ${suffix}`;
|
|
3420
|
+
}
|
|
3421
|
+
|
|
3329
3422
|
class MoValuePipe {
|
|
3330
3423
|
constructor() { }
|
|
3331
3424
|
transform(name, mo, caption) {
|
|
@@ -4093,7 +4186,9 @@ class ColumnIconPipe {
|
|
|
4093
4186
|
const data = mo[colName];
|
|
4094
4187
|
let icon = mo[colName + '$Icon'];
|
|
4095
4188
|
if (typeof data === 'object' && data) {
|
|
4096
|
-
|
|
4189
|
+
// برای رابطهی تکی، آیکنِ خودِ آبجکت (data.$Icon) اولویت دارد؛
|
|
4190
|
+
// در غیر این صورت آیکنِ فیلد همسایه (mo[colName + '$Icon']) حفظ میشود.
|
|
4191
|
+
icon = data.$Icon ?? icon;
|
|
4097
4192
|
}
|
|
4098
4193
|
return icon;
|
|
4099
4194
|
}
|
|
@@ -4108,6 +4203,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4108
4203
|
}]
|
|
4109
4204
|
}] });
|
|
4110
4205
|
|
|
4206
|
+
/** آیکن عمومیِ پیشفرض وقتی نه رکورد و نه موجودیت آیکن ندارند. */
|
|
4207
|
+
const DEFAULT_OBJECT_ICON = '/assets/Images/A/16/object.png';
|
|
4208
|
+
/**
|
|
4209
|
+
* آیکنِ یک رکورد را resolve میکند:
|
|
4210
|
+
* ۱- آیکنِ خودِ رکورد (`mo.$Icon`)
|
|
4211
|
+
* ۲- آیکنِ تعیینشده برای موجودیت (`Setting.Data.Icon`)
|
|
4212
|
+
* ۳- آیکنِ عمومیِ پیشفرض
|
|
4213
|
+
*
|
|
4214
|
+
* استفاده: `mo | moIcon: UlvMainCtrlr`
|
|
4215
|
+
*/
|
|
4216
|
+
class MoIconPipe {
|
|
4217
|
+
transform(mo, Setting) {
|
|
4218
|
+
return mo?.$Icon ?? Setting?.Data?.Icon ?? DEFAULT_OBJECT_ICON;
|
|
4219
|
+
}
|
|
4220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: MoIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4221
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: MoIconPipe, isStandalone: false, name: "moIcon" }); }
|
|
4222
|
+
}
|
|
4223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: MoIconPipe, decorators: [{
|
|
4224
|
+
type: Pipe,
|
|
4225
|
+
args: [{
|
|
4226
|
+
name: 'moIcon',
|
|
4227
|
+
standalone: false
|
|
4228
|
+
}]
|
|
4229
|
+
}] });
|
|
4230
|
+
|
|
4111
4231
|
class RowNumberPipe {
|
|
4112
4232
|
transform(moId, setting, moDataList) {
|
|
4113
4233
|
if (!moId) {
|
|
@@ -4460,11 +4580,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4460
4580
|
}]
|
|
4461
4581
|
}] });
|
|
4462
4582
|
|
|
4583
|
+
class ReadableTextColorPipe {
|
|
4584
|
+
constructor() {
|
|
4585
|
+
this._document = inject(DOCUMENT);
|
|
4586
|
+
}
|
|
4587
|
+
transform(backgroundColor, context) {
|
|
4588
|
+
if (typeof backgroundColor !== 'string' || !backgroundColor.trim()) {
|
|
4589
|
+
return null;
|
|
4590
|
+
}
|
|
4591
|
+
const rgb = this._resolveColor(backgroundColor.trim(), context);
|
|
4592
|
+
if (!rgb) {
|
|
4593
|
+
return null;
|
|
4594
|
+
}
|
|
4595
|
+
const blackContrast = this._getContrastRatio(rgb, [0, 0, 0]);
|
|
4596
|
+
const whiteContrast = this._getContrastRatio(rgb, [255, 255, 255]);
|
|
4597
|
+
return whiteContrast > blackContrast ? '#ffffff' : '#000000';
|
|
4598
|
+
}
|
|
4599
|
+
_resolveColor(color, context) {
|
|
4600
|
+
const view = this._document.defaultView;
|
|
4601
|
+
const host = context || this._document.body || this._document.documentElement;
|
|
4602
|
+
if (!view || !host) {
|
|
4603
|
+
return null;
|
|
4604
|
+
}
|
|
4605
|
+
if (view.CSS?.supports && !view.CSS.supports('color', color)) {
|
|
4606
|
+
return null;
|
|
4607
|
+
}
|
|
4608
|
+
const probe = this._document.createElement('span');
|
|
4609
|
+
probe.style.color = color;
|
|
4610
|
+
probe.style.display = 'none';
|
|
4611
|
+
if (!probe.style.color) {
|
|
4612
|
+
return null;
|
|
4613
|
+
}
|
|
4614
|
+
host.appendChild(probe);
|
|
4615
|
+
const resolvedColor = view.getComputedStyle(probe).color;
|
|
4616
|
+
probe.remove();
|
|
4617
|
+
if (!resolvedColor) {
|
|
4618
|
+
return null;
|
|
4619
|
+
}
|
|
4620
|
+
const canvas = this._document.createElement('canvas');
|
|
4621
|
+
canvas.width = 1;
|
|
4622
|
+
canvas.height = 1;
|
|
4623
|
+
const canvasContext = canvas.getContext('2d');
|
|
4624
|
+
if (!canvasContext) {
|
|
4625
|
+
return null;
|
|
4626
|
+
}
|
|
4627
|
+
canvasContext.clearRect(0, 0, 1, 1);
|
|
4628
|
+
canvasContext.fillStyle = resolvedColor;
|
|
4629
|
+
canvasContext.fillRect(0, 0, 1, 1);
|
|
4630
|
+
const [red, green, blue, alpha] = canvasContext.getImageData(0, 0, 1, 1).data;
|
|
4631
|
+
return alpha === 0 ? null : [red, green, blue];
|
|
4632
|
+
}
|
|
4633
|
+
_getContrastRatio(firstColor, secondColor) {
|
|
4634
|
+
const firstLuminance = this._getLuminance(firstColor);
|
|
4635
|
+
const secondLuminance = this._getLuminance(secondColor);
|
|
4636
|
+
const brightest = Math.max(firstLuminance, secondLuminance);
|
|
4637
|
+
const darkest = Math.min(firstLuminance, secondLuminance);
|
|
4638
|
+
return (brightest + 0.05) / (darkest + 0.05);
|
|
4639
|
+
}
|
|
4640
|
+
_getLuminance(rgb) {
|
|
4641
|
+
const [red, green, blue] = rgb.map((value) => {
|
|
4642
|
+
const channel = value / 255;
|
|
4643
|
+
return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);
|
|
4644
|
+
});
|
|
4645
|
+
return 0.2126 * red + 0.7152 * green + 0.0722 * blue;
|
|
4646
|
+
}
|
|
4647
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReadableTextColorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4648
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: ReadableTextColorPipe, isStandalone: false, name: "readableTextColor" }); }
|
|
4649
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReadableTextColorPipe, providedIn: 'root' }); }
|
|
4650
|
+
}
|
|
4651
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReadableTextColorPipe, decorators: [{
|
|
4652
|
+
type: Injectable,
|
|
4653
|
+
args: [{ providedIn: 'root' }]
|
|
4654
|
+
}, {
|
|
4655
|
+
type: Pipe,
|
|
4656
|
+
args: [{
|
|
4657
|
+
name: 'readableTextColor',
|
|
4658
|
+
standalone: false
|
|
4659
|
+
}]
|
|
4660
|
+
}] });
|
|
4661
|
+
|
|
4463
4662
|
class DynamicDarkColorPipe {
|
|
4464
4663
|
constructor() {
|
|
4465
4664
|
this.cache = new Map();
|
|
4466
4665
|
this.darkBackground = [18, 18, 18]; // #121212
|
|
4467
4666
|
this.minContrast = 4.5;
|
|
4667
|
+
this._readableTextColorPipe = inject(ReadableTextColorPipe);
|
|
4468
4668
|
}
|
|
4469
4669
|
transform(styleStr) {
|
|
4470
4670
|
if (!IsDarkMode() || !styleStr) {
|
|
@@ -4482,9 +4682,8 @@ class DynamicDarkColorPipe {
|
|
|
4482
4682
|
// BACKGROUND EXISTS BUT NO TEXT COLOR
|
|
4483
4683
|
// ---------------------------------------------------
|
|
4484
4684
|
if (bgMatch && !colorMatch) {
|
|
4485
|
-
const
|
|
4486
|
-
if (
|
|
4487
|
-
const textColor = this.getReadableTextColor(bgRgb);
|
|
4685
|
+
const textColor = this._readableTextColorPipe.transform(bgMatch[1].trim());
|
|
4686
|
+
if (textColor) {
|
|
4488
4687
|
newStyle += `; color: ${textColor};`;
|
|
4489
4688
|
}
|
|
4490
4689
|
this.cache.set(styleStr, newStyle);
|
|
@@ -4508,11 +4707,6 @@ class DynamicDarkColorPipe {
|
|
|
4508
4707
|
this.cache.set(styleStr, newStyle);
|
|
4509
4708
|
return newStyle;
|
|
4510
4709
|
}
|
|
4511
|
-
getReadableTextColor(bgRgb) {
|
|
4512
|
-
const whiteContrast = this.getContrastRatio([255, 255, 255], bgRgb);
|
|
4513
|
-
const blackContrast = this.getContrastRatio([0, 0, 0], bgRgb);
|
|
4514
|
-
return whiteContrast > blackContrast ? '#ffffff' : '#000000';
|
|
4515
|
-
}
|
|
4516
4710
|
// ---------------------------------------------------
|
|
4517
4711
|
// 🎯 Adjust until contrast >= 4.5
|
|
4518
4712
|
// ---------------------------------------------------
|
|
@@ -4875,6 +5069,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4875
5069
|
}]
|
|
4876
5070
|
}] });
|
|
4877
5071
|
|
|
5072
|
+
/**
|
|
5073
|
+
* یک ساعتِ سراسری بهصورت سیگنال؛ هر چند ثانیه یکبار «الان» را بهروز میکند
|
|
5074
|
+
* تا متنهای نسبیِ زمان (مثلِ «۲ دقیقه پیش») خودشان زنده بهروز شوند.
|
|
5075
|
+
*
|
|
5076
|
+
* چون یک تایمرِ مشترک برای کلِ برنامه استفاده میشود، تعدادِ زیادی متنِ نسبی
|
|
5077
|
+
* هم بدونِ ساختنِ تایمرِ جداگانه برای هرکدام، همزمان بهروز میمانند.
|
|
5078
|
+
*/
|
|
5079
|
+
class RelativeTimeService {
|
|
5080
|
+
constructor() {
|
|
5081
|
+
this._now = signal(Date.now(), /* @ts-ignore */
|
|
5082
|
+
...(ngDevMode ? [{ debugName: "_now" }] : /* istanbul ignore next */ []));
|
|
5083
|
+
this._nowReadonly = this._now.asReadonly();
|
|
5084
|
+
this.intervalId = setInterval(() => this._now.set(Date.now()), RelativeTimeService.TICK_MS);
|
|
5085
|
+
}
|
|
5086
|
+
/** فاصلهی بهروزرسانیِ «الان» بر حسبِ میلیثانیه. */
|
|
5087
|
+
static { this.TICK_MS = 10_000; }
|
|
5088
|
+
/** سیگنالِ «الان» (میلیثانیه)؛ بهصورتِ دورهای بهروز میشود. */
|
|
5089
|
+
get now() {
|
|
5090
|
+
return this._nowReadonly;
|
|
5091
|
+
}
|
|
5092
|
+
ngOnDestroy() {
|
|
5093
|
+
clearInterval(this.intervalId);
|
|
5094
|
+
}
|
|
5095
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RelativeTimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5096
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RelativeTimeService, providedIn: 'root' }); }
|
|
5097
|
+
}
|
|
5098
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RelativeTimeService, decorators: [{
|
|
5099
|
+
type: Injectable,
|
|
5100
|
+
args: [{ providedIn: 'root' }]
|
|
5101
|
+
}] });
|
|
5102
|
+
|
|
5103
|
+
/**
|
|
5104
|
+
* تاریخ را به متنِ نسبیِ فارسی تبدیل میکند و با گذرِ زمان خودش زنده بهروز میشود.
|
|
5105
|
+
*
|
|
5106
|
+
* استفاده در قالب:
|
|
5107
|
+
* ```html
|
|
5108
|
+
* <span>{{ lastUpdateTime | relativeDate }}</span>
|
|
5109
|
+
* ```
|
|
5110
|
+
*
|
|
5111
|
+
* پایپ ناخالص (`pure: false`) است تا با تغییرِ زمان دوباره اجرا شود. زمانِ مرجع از
|
|
5112
|
+
* سیگنالِ مشترکِ {@link RelativeTimeService} میآید و در هر تیکِ آن، ویو برای بازبینی
|
|
5113
|
+
* علامت زده میشود (سازگار با OnPush و حالتِ zoneless). Angular خروجیِ درونیابی را
|
|
5114
|
+
* فقط وقتی متن **واقعاً تغییر کند** در DOM اعمال میکند، پس رندرِ بیهوده رخ نمیدهد.
|
|
5115
|
+
*/
|
|
5116
|
+
class RelativeDatePipe {
|
|
5117
|
+
constructor() {
|
|
5118
|
+
this.relativeTime = inject(RelativeTimeService);
|
|
5119
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
5120
|
+
// The shared clock signal only drives periodic re-checks (OnPush/zoneless friendly).
|
|
5121
|
+
effect(() => {
|
|
5122
|
+
this.relativeTime.now();
|
|
5123
|
+
this.cdr.markForCheck();
|
|
5124
|
+
});
|
|
5125
|
+
}
|
|
5126
|
+
transform(value) {
|
|
5127
|
+
// Compare against the real wall clock, not the signal: the signal ticks every few
|
|
5128
|
+
// seconds and can lag behind "now", which would make a just-set timestamp read as
|
|
5129
|
+
// being in the future («چند ثانیه دیگر») until the next tick.
|
|
5130
|
+
return toRelativeDate(value);
|
|
5131
|
+
}
|
|
5132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RelativeDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
5133
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: RelativeDatePipe, isStandalone: false, name: "relativeDate", pure: false }); }
|
|
5134
|
+
}
|
|
5135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: RelativeDatePipe, decorators: [{
|
|
5136
|
+
type: Pipe,
|
|
5137
|
+
args: [{
|
|
5138
|
+
name: 'relativeDate',
|
|
5139
|
+
pure: false,
|
|
5140
|
+
standalone: false
|
|
5141
|
+
}]
|
|
5142
|
+
}], ctorParameters: () => [] });
|
|
5143
|
+
|
|
4878
5144
|
class ApiService {
|
|
4879
5145
|
constructor() {
|
|
4880
5146
|
this.portalLoginUrl = `/api/auth/portal/login`;
|
|
@@ -5132,11 +5398,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
5132
5398
|
type: Input
|
|
5133
5399
|
}] } });
|
|
5134
5400
|
|
|
5401
|
+
const APP_VERSION = new InjectionToken('AppVersion');
|
|
5402
|
+
const DIALOG_SERVICE = new InjectionToken('DIALOG_SERVICE');
|
|
5403
|
+
const FORM_DIALOG_COMPONENT = new InjectionToken('FORM_DIALOG_COMPONENT');
|
|
5404
|
+
const NOTIFICATAION_POPUP_SERVER = new InjectionToken('NOTIFICATAION_POPUP_SERVER');
|
|
5405
|
+
const TOAST_SERVICE = new InjectionToken('TOAST_SERVICE');
|
|
5406
|
+
const NATIVE_FEDERATION_RUNTIME = new InjectionToken('NativeFederationRuntime');
|
|
5407
|
+
const NOTIFICATION_WEBWORKER_FACTORY = new InjectionToken('notificaion-worker');
|
|
5408
|
+
|
|
5135
5409
|
class DynamicComponentService {
|
|
5136
5410
|
constructor() {
|
|
5137
5411
|
this._injector = inject(Injector);
|
|
5138
5412
|
this._compiler = inject(Compiler);
|
|
5139
5413
|
this._environmentInjector = inject(EnvironmentInjector);
|
|
5414
|
+
this._nativeFederationRuntime = inject(NATIVE_FEDERATION_RUNTIME, { optional: true });
|
|
5140
5415
|
// NgModule های لود شده (روش قدیمی)
|
|
5141
5416
|
this._dynamicModuleWithComponents = {};
|
|
5142
5417
|
// cache برای remote های standalone که قبلاً لود شدن
|
|
@@ -5212,12 +5487,7 @@ class DynamicComponentService {
|
|
|
5212
5487
|
const cacheKey = remoteEntry;
|
|
5213
5488
|
let componentMap$ = this._remoteCache.get(cacheKey);
|
|
5214
5489
|
if (!componentMap$) {
|
|
5215
|
-
componentMap$ = from(
|
|
5216
|
-
// Native Federation نام remote رو از خود remoteEntry.json میخونه؛
|
|
5217
|
-
// فقط آدرس مانیفست و ماژول expose شده لازمه.
|
|
5218
|
-
remoteEntry, // .../remoteEntry.json
|
|
5219
|
-
exposedModule: './ComponentMap' // ثابت — طبق public-api.ts remote
|
|
5220
|
-
})).pipe(map$1((m) => m.COMPONENT_MAP), shareReplay(1));
|
|
5490
|
+
componentMap$ = from(this._loadRemoteComponentMap(remoteEntry, component.Module)).pipe(shareReplay(1));
|
|
5221
5491
|
this._remoteCache.set(cacheKey, componentMap$);
|
|
5222
5492
|
}
|
|
5223
5493
|
return componentMap$.pipe(map$1((componentMap) => {
|
|
@@ -5241,6 +5511,18 @@ class DynamicComponentService {
|
|
|
5241
5511
|
return of(componentRef);
|
|
5242
5512
|
}));
|
|
5243
5513
|
}
|
|
5514
|
+
async _loadRemoteComponentMap(remoteEntry, remoteName) {
|
|
5515
|
+
const runtime = this._nativeFederationRuntime;
|
|
5516
|
+
if (!runtime) {
|
|
5517
|
+
throw new Error(`runtime مربوط به Native Federation برای remote "${remoteName}" در هاست provide نشده است.`);
|
|
5518
|
+
}
|
|
5519
|
+
await runtime.initRemoteEntry(remoteEntry, remoteName);
|
|
5520
|
+
const remoteModule = await runtime.loadRemoteModule(remoteName, './ComponentMap');
|
|
5521
|
+
if (!remoteModule?.COMPONENT_MAP) {
|
|
5522
|
+
throw new Error(`خروجی COMPONENT_MAP در remote "${remoteName}" از آدرس "${remoteEntry}" پیدا نشد.`);
|
|
5523
|
+
}
|
|
5524
|
+
return remoteModule.COMPONENT_MAP;
|
|
5525
|
+
}
|
|
5244
5526
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: DynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5245
5527
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: DynamicComponentService, providedIn: 'root' }); }
|
|
5246
5528
|
}
|
|
@@ -5656,6 +5938,7 @@ class FormPanelService extends BaseComponent {
|
|
|
5656
5938
|
}
|
|
5657
5939
|
_refresh(context) {
|
|
5658
5940
|
this.context = context;
|
|
5941
|
+
this._context = context;
|
|
5659
5942
|
const isModal = BarsaApi.Common.Util.TryGetValue(this, '_context.Setting.IsModal', false);
|
|
5660
5943
|
if (this._context?.IsSubForm || isModal || this._isModal.getValue()) {
|
|
5661
5944
|
return;
|
|
@@ -6139,7 +6422,7 @@ class ApplicationCtrlrService {
|
|
|
6139
6422
|
this._selectedSystemTitle$ = new Subject();
|
|
6140
6423
|
this._systemLocationHref$ = new BehaviorSubject({});
|
|
6141
6424
|
this._isMobile = getDeviceIsMobile();
|
|
6142
|
-
this._document = inject(DOCUMENT);
|
|
6425
|
+
this._document = inject(DOCUMENT$1);
|
|
6143
6426
|
this._router = inject(Router);
|
|
6144
6427
|
this._searchService = inject(SearchService);
|
|
6145
6428
|
this._titleService = inject(Title);
|
|
@@ -6551,7 +6834,7 @@ function reportRoutes(authGuard = false) {
|
|
|
6551
6834
|
return {
|
|
6552
6835
|
path: 'report/:id',
|
|
6553
6836
|
canActivate: authGuard ? [AuthGuard] : [],
|
|
6554
|
-
loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-
|
|
6837
|
+
loadChildren: () => import('./barsa-novin-ray-core-barsa-report-page.module-CpACJpmQ.mjs').then((m) => m.BarsaReportPageModule),
|
|
6555
6838
|
resolve: {
|
|
6556
6839
|
breadcrumb: ReportBreadcrumbResolver
|
|
6557
6840
|
}
|
|
@@ -6581,7 +6864,7 @@ class PortalService {
|
|
|
6581
6864
|
this._router = inject(Router);
|
|
6582
6865
|
this._location = inject(Location);
|
|
6583
6866
|
this._localStorage = inject(LocalStorageService);
|
|
6584
|
-
this._document = inject(DOCUMENT);
|
|
6867
|
+
this._document = inject(DOCUMENT$1);
|
|
6585
6868
|
this._applicationCtrlrService = inject(ApplicationCtrlrService);
|
|
6586
6869
|
this._deviceSizeSource = new BehaviorSubject(this._initalizeDeviceSize());
|
|
6587
6870
|
this._loggedInSource = new BehaviorSubject(false);
|
|
@@ -7329,7 +7612,9 @@ class PortalService {
|
|
|
7329
7612
|
}
|
|
7330
7613
|
return params;
|
|
7331
7614
|
}
|
|
7332
|
-
ShowFormPanelControl(formpanelCtrlr, router, activatedRoute, dialogComponent, isPage, vcr, isReload = false
|
|
7615
|
+
ShowFormPanelControl(formpanelCtrlr, router, activatedRoute, dialogComponent, isPage, vcr, isReload = false,
|
|
7616
|
+
// اگر RoutingServiceِ فراخوان (فرمِ والد) خودش مودال باز شده باشد، فرمِ فرزند هم مودال باز میشود.
|
|
7617
|
+
callerIsModal = false) {
|
|
7333
7618
|
if (!formpanelCtrlr) {
|
|
7334
7619
|
console.warn('form panel controler is undefined!');
|
|
7335
7620
|
return;
|
|
@@ -7344,6 +7629,9 @@ class PortalService {
|
|
|
7344
7629
|
if (modalSetting) {
|
|
7345
7630
|
isModal = true;
|
|
7346
7631
|
}
|
|
7632
|
+
// «مودال، مودال میزاید»: اگر فرمِ والد مودال بود، این فرم هم مودال باز شود
|
|
7633
|
+
// تا با ناوبریِ صفحه، دیالوگِ والد بسته نشود.
|
|
7634
|
+
isModal = isModal || callerIsModal;
|
|
7347
7635
|
formpanelCtrlr.Setting.IsModal = isModal;
|
|
7348
7636
|
formpanelCtrlr.IsModal = isModal;
|
|
7349
7637
|
const id = getUniqueId(4);
|
|
@@ -7575,7 +7863,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7575
7863
|
}], ctorParameters: () => [] });
|
|
7576
7864
|
|
|
7577
7865
|
class UlvMainService {
|
|
7578
|
-
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
7579
7866
|
constructor() {
|
|
7580
7867
|
this.moDataListSource = new BehaviorSubject([]);
|
|
7581
7868
|
this._cartableTemplates$ = new BehaviorSubject({});
|
|
@@ -7657,6 +7944,7 @@ class UlvMainService {
|
|
|
7657
7944
|
this._parentHeightSource = new BehaviorSubject(0);
|
|
7658
7945
|
this._moveUpAccessSource = new BehaviorSubject(false);
|
|
7659
7946
|
this._reorderGroupbySource = new BehaviorSubject([]);
|
|
7947
|
+
this._pollingInterval = new BehaviorSubject(0);
|
|
7660
7948
|
this.context$ = this._contextSource
|
|
7661
7949
|
.asObservable()
|
|
7662
7950
|
.pipe(takeUntil(this._onDestroy$), tap((context) => (this.context = context)), tap((context) => this._initialize(context)), tap((context) => this._addEventListener(context)))
|
|
@@ -7677,6 +7965,12 @@ class UlvMainService {
|
|
|
7677
7965
|
this.searchPanelUi$ = this._searchPanelUiSource.asObservable().pipe(takeUntil(this._onDestroy$), tap((searchPanel) => this._addDefaultSearchPanelSettings(searchPanel)));
|
|
7678
7966
|
this.openSearchPanelHiddenSettings$ = this._openSearchPanelHiddenSettingsSource.asObservable();
|
|
7679
7967
|
this.pagingSetting$ = this._pagingSettingSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
7968
|
+
this._pollingInterval
|
|
7969
|
+
.asObservable()
|
|
7970
|
+
.pipe(takeUntil(this._onDestroy$), distinctUntilChanged(),
|
|
7971
|
+
// با هر بار تغییر بازه، interval قبلی کنسل و از نو ساخته میشود؛ صفر یا منفی یعنی polling خاموش.
|
|
7972
|
+
switchMap$1((ms) => (ms > 0 ? timer(ms, ms) : EMPTY)), tap(() => this.executeToolbarButton('RefreshReport', {})))
|
|
7973
|
+
.subscribe();
|
|
7680
7974
|
this.toolbarButtons$ = combineLatest([
|
|
7681
7975
|
this._toolbarButtonsWorkflowButtons.asObservable(),
|
|
7682
7976
|
this._toolbarButtonsSource.asObservable()
|
|
@@ -7934,6 +8228,10 @@ class UlvMainService {
|
|
|
7934
8228
|
this._inlineEditModeSource
|
|
7935
8229
|
]).pipe(map(([moveUp, groupby, inlineEdit]) => moveUp === true && !groupby.length && !inlineEdit), distinctUntilChanged());
|
|
7936
8230
|
}
|
|
8231
|
+
setPollingInterval(pollingInterval) {
|
|
8232
|
+
// مقدار از سرور بهصورت عددِ اعشاریِ ساعت.دقیقه (hh:mm) میآید؛ به میلیثانیه تبدیل میشود.
|
|
8233
|
+
this._pollingInterval.next(hhmmToMs(pollingInterval));
|
|
8234
|
+
}
|
|
7937
8235
|
setReorderGroupby(groupby) {
|
|
7938
8236
|
this._reorderGroupbySource.next(groupby ?? []);
|
|
7939
8237
|
}
|
|
@@ -9228,13 +9526,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
9228
9526
|
type: Injectable
|
|
9229
9527
|
}], ctorParameters: () => [] });
|
|
9230
9528
|
|
|
9231
|
-
const APP_VERSION = new InjectionToken('AppVersion');
|
|
9232
|
-
const DIALOG_SERVICE = new InjectionToken('DIALOG_SERVICE');
|
|
9233
|
-
const FORM_DIALOG_COMPONENT = new InjectionToken('FORM_DIALOG_COMPONENT');
|
|
9234
|
-
const NOTIFICATAION_POPUP_SERVER = new InjectionToken('NOTIFICATAION_POPUP_SERVER');
|
|
9235
|
-
const TOAST_SERVICE = new InjectionToken('TOAST_SERVICE');
|
|
9236
|
-
const NOTIFICATION_WEBWORKER_FACTORY = new InjectionToken('notificaion-worker');
|
|
9237
|
-
|
|
9238
9529
|
class ServiceWorkerNotificationService {
|
|
9239
9530
|
constructor() {
|
|
9240
9531
|
this.hasRegistration = false;
|
|
@@ -9955,6 +10246,8 @@ class RoutingService {
|
|
|
9955
10246
|
}
|
|
9956
10247
|
};
|
|
9957
10248
|
this.isFirstPage = true;
|
|
10249
|
+
/** true اگر فرمِ این RoutingService خودش بهصورت مودال (داخل دیالوگ) باز شده باشد. */
|
|
10250
|
+
this.isOpenedAsModal = false;
|
|
9958
10251
|
this.masterDetails = false;
|
|
9959
10252
|
this.isMobile = getDeviceIsMobile();
|
|
9960
10253
|
this._activatedRoute = inject(ActivatedRoute);
|
|
@@ -10009,7 +10302,7 @@ class RoutingService {
|
|
|
10009
10302
|
BarsaApi.Bw.FormHandler = this.parentContainer;
|
|
10010
10303
|
}
|
|
10011
10304
|
_showFormPanel(refreshOnly = false) {
|
|
10012
|
-
this._portalService.ShowFormPanelControl(this.formpanelCtrlr, this._router, this._activatedRoute, this._formDialogComponent, this.isFirstPage, this._vcr, refreshOnly);
|
|
10305
|
+
this._portalService.ShowFormPanelControl(this.formpanelCtrlr, this._router, this._activatedRoute, this._formDialogComponent, this.isFirstPage, this._vcr, refreshOnly, this.isOpenedAsModal);
|
|
10013
10306
|
}
|
|
10014
10307
|
navigate(navigation, isRelative, queryParams, state) {
|
|
10015
10308
|
if (this.masterDetails && !this.isMobile) {
|
|
@@ -10580,6 +10873,9 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
10580
10873
|
get customFieldInfo() {
|
|
10581
10874
|
return this.context.Setting.CustomFieldInfo;
|
|
10582
10875
|
}
|
|
10876
|
+
get Mo() {
|
|
10877
|
+
return this._formPanelService.mo;
|
|
10878
|
+
}
|
|
10583
10879
|
constructor() {
|
|
10584
10880
|
super();
|
|
10585
10881
|
this.valueChange = new EventEmitter();
|
|
@@ -10610,6 +10906,7 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
10610
10906
|
this._renderer2 = inject(Renderer2);
|
|
10611
10907
|
this._activatedRoute = inject(ActivatedRoute);
|
|
10612
10908
|
this._domSanitizer = inject(DomSanitizer);
|
|
10909
|
+
this._formPanelService = inject(FormPanelService);
|
|
10613
10910
|
this._uploadService = inject(UploadService, { self: true, optional: true });
|
|
10614
10911
|
this._dateService = inject(DateService, { self: true, optional: true });
|
|
10615
10912
|
this._audioRecorder = inject(AudioRecordingService, { self: true, optional: true });
|
|
@@ -12330,7 +12627,7 @@ class ReportViewBaseComponent extends BaseComponent {
|
|
|
12330
12627
|
this.rowIndicator = Number(columns[0].MetaFieldTypeId) === 41;
|
|
12331
12628
|
}
|
|
12332
12629
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportViewBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12333
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ReportViewBaseComponent, isStandalone: false, selector: "bnrc-report-view-base", inputs: { contextView: "contextView", viewSetting: "viewSetting", allColumns: "allColumns", isCheckList: "isCheckList", simpleInlineEdit: "simpleInlineEdit", alternateRowMode: "alternateRowMode", inlineEditWithoutSelection: "inlineEditWithoutSelection", hideToolbar: "hideToolbar", hideTitle: "hideTitle", toolbarButtons: "toolbarButtons", allChecked: "allChecked", moDataList: "moDataList", UlvMainCtrlr: "UlvMainCtrlr", access: "access", allowRecordReorder: "allowRecordReorder", groupby: "groupby", selectedCount: "selectedCount", conditionalFormats: "conditionalFormats", parentHeight: "parentHeight", deviceName: "deviceName", deviceSize: "deviceSize", contextMenuItems: "contextMenuItems", columns: "columns", allowInlineEdit: "allowInlineEdit", secondaryColumns: "secondaryColumns", popin: "popin", customFieldInfo: "customFieldInfo", hasSummary: "hasSummary", layoutInfo: "layoutInfo", hasSelected: "hasSelected", hideIcon: "hideIcon", columnsCount: "columnsCount", hideOpenIcon: "hideOpenIcon", openOnClick: "openOnClick", typeDefId: "typeDefId", reportId: "reportId", listEditViewId: "listEditViewId", typeViewId: "typeViewId", extraRelation: "extraRelation", relationList: "relationList", disableResponsive: "disableResponsive", rowItem: "rowItem", mobileOrTablet: "mobileOrTablet", inDialog: "inDialog", isMultiSelect: "isMultiSelect", fullscreen: "fullscreen", hideSearchpanel: "hideSearchpanel", newInlineEditMo: "newInlineEditMo", selectedMo: "selectedMo", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", rowHoverable: "rowHoverable", groupSummary: "groupSummary", tlbButtons: "tlbButtons", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", rowActivable: "rowActivable", isReportPage: "isReportPage", ulvHeightSizeType: "ulvHeightSizeType", contentHeight: "contentHeight", alternateEditObjectColumn: "alternateEditObjectColumn", disableHyperLink: "disableHyperLink", columnsHyperLink: "columnsHyperLink", effectiveReportLayout: "effectiveReportLayout", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", contextSetting: "contextSetting", gridFreeColumnSizing: "gridFreeColumnSizing", navigationArrow: "navigationArrow", cartableTemplates: "cartableTemplates", cartableChildsMo: "cartableChildsMo", pagingSetting: "pagingSetting", minEmptyRows: "minEmptyRows", containerWidth: "containerWidth" }, outputs: { columnSummary: "columnSummary", escapeKey: "escapeKey", resetWorkflowState: "resetWorkflowState", deselectAll: "deselectAll", editFormPanelCancel: "editFormPanelCancel", editFormPanelSave: "editFormPanelSave", selectNextInlineRecord: "selectNextInlineRecord", editFormPanelValueChange: "editFormPanelValueChange", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", workflowShareButtons: "workflowShareButtons", sortDescending: "sortDescending", filter: "filter", executeToolbarButton: "executeToolbarButton", resetGridSettings: "resetGridSettings", sortSettingsChange: "sortSettingsChange", rowCheck: "rowCheck", rowClick: "rowClick", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", allCheckbox: "allCheckbox", mandatory: "mandatory", columnResized: "columnResized", hasDetailsInRow: "hasDetailsInRow" }, host: { properties: { "class.report-view": "this._reportView", "style.visibility": "this._visibility" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12630
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ReportViewBaseComponent, isStandalone: false, selector: "bnrc-report-view-base", inputs: { contextView: "contextView", viewSetting: "viewSetting", allColumns: "allColumns", isCheckList: "isCheckList", simpleInlineEdit: "simpleInlineEdit", alternateRowMode: "alternateRowMode", inlineEditWithoutSelection: "inlineEditWithoutSelection", hideToolbar: "hideToolbar", hideTitle: "hideTitle", toolbarButtons: "toolbarButtons", allChecked: "allChecked", moDataList: "moDataList", UlvMainCtrlr: "UlvMainCtrlr", access: "access", allowRecordReorder: "allowRecordReorder", groupby: "groupby", selectedCount: "selectedCount", conditionalFormats: "conditionalFormats", parentHeight: "parentHeight", deviceName: "deviceName", deviceSize: "deviceSize", contextMenuItems: "contextMenuItems", columns: "columns", allowInlineEdit: "allowInlineEdit", secondaryColumns: "secondaryColumns", popin: "popin", customFieldInfo: "customFieldInfo", hasSummary: "hasSummary", layoutInfo: "layoutInfo", hasSelected: "hasSelected", hideIcon: "hideIcon", columnsCount: "columnsCount", hideOpenIcon: "hideOpenIcon", openOnClick: "openOnClick", typeDefId: "typeDefId", reportId: "reportId", listEditViewId: "listEditViewId", typeViewId: "typeViewId", extraRelation: "extraRelation", relationList: "relationList", disableResponsive: "disableResponsive", rowItem: "rowItem", mobileOrTablet: "mobileOrTablet", inDialog: "inDialog", isMultiSelect: "isMultiSelect", fullscreen: "fullscreen", hideSearchpanel: "hideSearchpanel", newInlineEditMo: "newInlineEditMo", selectedMo: "selectedMo", inlineEditMode: "inlineEditMode", onlyInlineEdit: "onlyInlineEdit", rowHoverable: "rowHoverable", groupSummary: "groupSummary", tlbButtons: "tlbButtons", formSetting: "formSetting", disableOverflowContextMenu: "disableOverflowContextMenu", rowActivable: "rowActivable", isReportPage: "isReportPage", ulvHeightSizeType: "ulvHeightSizeType", contentHeight: "contentHeight", alternateEditObjectColumn: "alternateEditObjectColumn", disableHyperLink: "disableHyperLink", columnsHyperLink: "columnsHyperLink", effectiveReportLayout: "effectiveReportLayout", contentDensity: "contentDensity", rtl: "rtl", showOkCancelButtons: "showOkCancelButtons", title: "title", hasInlineDeleteButton: "hasInlineDeleteButton", hasInlineEditButton: "hasInlineEditButton", contextSetting: "contextSetting", gridFreeColumnSizing: "gridFreeColumnSizing", navigationArrow: "navigationArrow", cartableTemplates: "cartableTemplates", $Component: "$Component", cartableChildsMo: "cartableChildsMo", pagingSetting: "pagingSetting", minEmptyRows: "minEmptyRows", containerWidth: "containerWidth" }, outputs: { columnSummary: "columnSummary", escapeKey: "escapeKey", resetWorkflowState: "resetWorkflowState", deselectAll: "deselectAll", editFormPanelCancel: "editFormPanelCancel", editFormPanelSave: "editFormPanelSave", selectNextInlineRecord: "selectNextInlineRecord", editFormPanelValueChange: "editFormPanelValueChange", ulvCommandClick: "ulvCommandClick", sortAscending: "sortAscending", workflowShareButtons: "workflowShareButtons", sortDescending: "sortDescending", filter: "filter", executeToolbarButton: "executeToolbarButton", resetGridSettings: "resetGridSettings", sortSettingsChange: "sortSettingsChange", rowCheck: "rowCheck", rowClick: "rowClick", cartableFormClosed: "cartableFormClosed", createNewMo: "createNewMo", updateMo: "updateMo", expandClick: "expandClick", trackBySelectedFn: "trackBySelectedFn", allCheckbox: "allCheckbox", mandatory: "mandatory", columnResized: "columnResized", hasDetailsInRow: "hasDetailsInRow" }, host: { properties: { "class.report-view": "this._reportView", "style.visibility": "this._visibility" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12334
12631
|
}
|
|
12335
12632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportViewBaseComponent, decorators: [{
|
|
12336
12633
|
type: Component,
|
|
@@ -12494,6 +12791,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
12494
12791
|
type: Input
|
|
12495
12792
|
}], cartableTemplates: [{
|
|
12496
12793
|
type: Input
|
|
12794
|
+
}], $Component: [{
|
|
12795
|
+
type: Input
|
|
12497
12796
|
}], cartableChildsMo: [{
|
|
12498
12797
|
type: Input
|
|
12499
12798
|
}], pagingSetting: [{
|
|
@@ -13007,6 +13306,11 @@ class FormComponent extends BaseComponent {
|
|
|
13007
13306
|
if (this._routingService) {
|
|
13008
13307
|
this._routingService.FormPanelCtrlr = formpanelCtrlr;
|
|
13009
13308
|
formpanelCtrlr.Page = this._routingService;
|
|
13309
|
+
// اگر این فرم داخل دیالوگ (مودال) باز شده، RoutingServiceاش را مودال علامت میزنیم تا
|
|
13310
|
+
// فرمهای فرزندش هم مودال باز شوند (قانونِ «مودال، مودال میزاید» در ShowFormPanelControl).
|
|
13311
|
+
if (this.params && this.params.inDialog) {
|
|
13312
|
+
this._routingService.isOpenedAsModal = true;
|
|
13313
|
+
}
|
|
13010
13314
|
}
|
|
13011
13315
|
const nav = this._router.getCurrentNavigation();
|
|
13012
13316
|
formpanelCtrlr.FormRequestParams.state = nav?.extras.state;
|
|
@@ -13862,6 +14166,14 @@ class FillEmptySpaceDirective extends BaseDirective {
|
|
|
13862
14166
|
const roTarget = this.getContainerElement();
|
|
13863
14167
|
this._ro = new ResizeObserver(() => this.scheduleMeasure());
|
|
13864
14168
|
this._ro.observe(roTarget);
|
|
14169
|
+
// Also observe the host itself. In `viewport` mode the container resolves to
|
|
14170
|
+
// `document.documentElement`, which never resizes when the host transitions from
|
|
14171
|
+
// hidden/0-size (e.g. an inactive tab) to visible — so the fill height would never
|
|
14172
|
+
// be (re)applied. Observing the host recovers the measurement once it gains a box.
|
|
14173
|
+
const host = this._el.nativeElement;
|
|
14174
|
+
if (host !== roTarget) {
|
|
14175
|
+
this._ro.observe(host);
|
|
14176
|
+
}
|
|
13865
14177
|
window.addEventListener('resize', this._onWindowResize);
|
|
13866
14178
|
}
|
|
13867
14179
|
teardownFillLayoutWatchers() {
|
|
@@ -13920,6 +14232,15 @@ class FillEmptySpaceDirective extends BaseDirective {
|
|
|
13920
14232
|
}
|
|
13921
14233
|
applyFillHeight(dom, px) {
|
|
13922
14234
|
const prop = this.getStyleProperty();
|
|
14235
|
+
const signature = `${prop}:${px}`;
|
|
14236
|
+
// Skip redundant writes. Because we now also observe the host element, applying the
|
|
14237
|
+
// same height again would leave the ResizeObserver firing on a no-op change (harmless,
|
|
14238
|
+
// but noisy) and re-emit `heightChanged`. Guarding keeps it idempotent and avoids
|
|
14239
|
+
// "ResizeObserver loop" warnings.
|
|
14240
|
+
if (signature === this._lastAppliedSignature) {
|
|
14241
|
+
return;
|
|
14242
|
+
}
|
|
14243
|
+
this._lastAppliedSignature = signature;
|
|
13923
14244
|
if (prop === 'min-height' || prop === 'max-height') {
|
|
13924
14245
|
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13925
14246
|
}
|
|
@@ -14656,6 +14977,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14656
14977
|
this._parentFormPanelService = inject(FormPanelService, { optional: true, skipSelf: true });
|
|
14657
14978
|
this._formPanelService = inject(FormPanelService, { optional: true, self: true });
|
|
14658
14979
|
this._ulvMainService = inject(UlvMainService, { optional: true });
|
|
14980
|
+
this._renderer2 = inject(Renderer2);
|
|
14659
14981
|
this._saveEditedMo$ = new Subject();
|
|
14660
14982
|
this._formpanelValueChanged$ = new Subject();
|
|
14661
14983
|
this._saveEditedMo$
|
|
@@ -14666,7 +14988,9 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14666
14988
|
.subscribe((res) => {
|
|
14667
14989
|
if (res.saved) {
|
|
14668
14990
|
this.mo.$IsChecked = false;
|
|
14669
|
-
this.
|
|
14991
|
+
if (this.extraRelation && this.extraRelation.RelationType !== 'Composition') {
|
|
14992
|
+
this.mo.$State = 'Unchanged';
|
|
14993
|
+
}
|
|
14670
14994
|
this.editFormPanelValueChange.emit({ mo: this.mo, fieldDbName: '$InlineMoState' });
|
|
14671
14995
|
// this._formpanelValueChanged$.next('');
|
|
14672
14996
|
this._cdr.markForCheck();
|
|
@@ -14715,10 +15039,11 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14715
15039
|
this._log.error(nullOrUndefinedString('BaseViewItemPropsComponent=> _formPanelService'));
|
|
14716
15040
|
}
|
|
14717
15041
|
}
|
|
15042
|
+
this._addLastClass(this.last);
|
|
14718
15043
|
}
|
|
14719
15044
|
ngOnChanges(changes) {
|
|
14720
15045
|
super.ngOnChanges(changes);
|
|
14721
|
-
const { isChecked, inlineEditMode } = changes;
|
|
15046
|
+
const { isChecked, inlineEditMode, last } = changes;
|
|
14722
15047
|
let needToLoadForm = false;
|
|
14723
15048
|
if (this.inlineEditMode) {
|
|
14724
15049
|
if (isChecked) {
|
|
@@ -14732,6 +15057,9 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14732
15057
|
}
|
|
14733
15058
|
}
|
|
14734
15059
|
}
|
|
15060
|
+
if (last) {
|
|
15061
|
+
this._addLastClass(last.currentValue);
|
|
15062
|
+
}
|
|
14735
15063
|
if (isChecked && !isChecked.firstChange) {
|
|
14736
15064
|
this._raiseWorkflowShareButtons(isChecked.currentValue);
|
|
14737
15065
|
}
|
|
@@ -14848,6 +15176,11 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14848
15176
|
_trackByColumn(index, column) {
|
|
14849
15177
|
return `${column.Name}${index}`;
|
|
14850
15178
|
}
|
|
15179
|
+
_addLastClass(lastItem) {
|
|
15180
|
+
lastItem
|
|
15181
|
+
? this._renderer2.addClass(this._el.nativeElement, 'last-item')
|
|
15182
|
+
: this._renderer2.removeClass(this._el.nativeElement, 'last-item');
|
|
15183
|
+
}
|
|
14851
15184
|
_handleResetWorkflowState() {
|
|
14852
15185
|
this._resetBruleActionMessage();
|
|
14853
15186
|
this.workflowState.set({ state: '', error: null });
|
|
@@ -15014,7 +15347,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
15014
15347
|
const customFormPanelUi = formPanelCtrlr.Adapter.Control;
|
|
15015
15348
|
const parentMo = this._parentFormPanelService ? this._parentFormPanelService.mo : null;
|
|
15016
15349
|
if (this.extraRelation && parentMo && this.extraRelation.RelationType === 'Composition') {
|
|
15017
|
-
formPanelCtrlr.Mo.SetFValue(this.extraRelation.ParentFdName, parentMo);
|
|
15350
|
+
formPanelCtrlr.Mo.SetFValue(this.extraRelation.ParentFdName, parentMo.Id);
|
|
15018
15351
|
// newFormSettings.Data.Mo[relation.ParentFdName] = parentMo.GetChangedObject();
|
|
15019
15352
|
// newFormSettings.Data.Mo[relation.ParentFdName].$State = parentMo.$State;
|
|
15020
15353
|
}
|
|
@@ -15819,10 +16152,30 @@ class RootPortalComponent extends PageBaseComponent {
|
|
|
15819
16152
|
xl:tw-grid-cols-9 xl:tw-grid-cols-10 xl:tw-grid-cols-11 xl:tw-grid-cols-12"
|
|
15820
16153
|
></div>
|
|
15821
16154
|
<div
|
|
15822
|
-
class="tw-hidden 2xl:grid-cols-0 2xl:tw-grid-cols-1 2xl:tw-grid-cols-2 2xl:tw-grid-cols-3
|
|
15823
|
-
2xl:tw-grid-cols-4 2xl:tw-grid-cols-5 2xl:tw-grid-cols-6 2xl:tw-grid-cols-7 2xl:tw-grid-cols-8 2xl:tw-grid-cols-9
|
|
16155
|
+
class="tw-hidden 2xl:grid-cols-0 2xl:tw-grid-cols-1 2xl:tw-grid-cols-2 2xl:tw-grid-cols-3
|
|
16156
|
+
2xl:tw-grid-cols-4 2xl:tw-grid-cols-5 2xl:tw-grid-cols-6 2xl:tw-grid-cols-7 2xl:tw-grid-cols-8 2xl:tw-grid-cols-9
|
|
15824
16157
|
2xl:tw-grid-cols-10 2xl:tw-grid-cols-11 2xl:tw-grid-cols-12"
|
|
15825
16158
|
></div>
|
|
16159
|
+
<div
|
|
16160
|
+
class="tw-hidden tw-col-span-1 tw-col-span-2 tw-col-span-3 tw-col-span-4 tw-col-span-5 tw-col-span-6
|
|
16161
|
+
tw-col-span-7 tw-col-span-8 tw-col-span-9 tw-col-span-10 tw-col-span-11 tw-col-span-12"
|
|
16162
|
+
></div>
|
|
16163
|
+
<div
|
|
16164
|
+
class="tw-hidden md:tw-col-span-1 md:tw-col-span-2 md:tw-col-span-3 md:tw-col-span-4 md:tw-col-span-5
|
|
16165
|
+
md:tw-col-span-6 md:tw-col-span-7 md:tw-col-span-8 md:tw-col-span-9 md:tw-col-span-10 md:tw-col-span-11 md:tw-col-span-12"
|
|
16166
|
+
></div>
|
|
16167
|
+
<div
|
|
16168
|
+
class="tw-hidden lg:tw-col-span-1 lg:tw-col-span-2 lg:tw-col-span-3 lg:tw-col-span-4 lg:tw-col-span-5
|
|
16169
|
+
lg:tw-col-span-6 lg:tw-col-span-7 lg:tw-col-span-8 lg:tw-col-span-9 lg:tw-col-span-10 lg:tw-col-span-11 lg:tw-col-span-12"
|
|
16170
|
+
></div>
|
|
16171
|
+
<div
|
|
16172
|
+
class="tw-hidden xl:tw-col-span-1 xl:tw-col-span-2 xl:tw-col-span-3 xl:tw-col-span-4 xl:tw-col-span-5
|
|
16173
|
+
xl:tw-col-span-6 xl:tw-col-span-7 xl:tw-col-span-8 xl:tw-col-span-9 xl:tw-col-span-10 xl:tw-col-span-11 xl:tw-col-span-12"
|
|
16174
|
+
></div>
|
|
16175
|
+
<div
|
|
16176
|
+
class="tw-hidden 2xl:tw-col-span-1 2xl:tw-col-span-2 2xl:tw-col-span-3 2xl:tw-col-span-4 2xl:tw-col-span-5
|
|
16177
|
+
2xl:tw-col-span-6 2xl:tw-col-span-7 2xl:tw-col-span-8 2xl:tw-col-span-9 2xl:tw-col-span-10 2xl:tw-col-span-11 2xl:tw-col-span-12"
|
|
16178
|
+
></div>
|
|
15826
16179
|
@if(inLocalMode()){
|
|
15827
16180
|
<div class="fd-toolbar" style="flex-wrap:wrap;padding:0.5rem;height:auto">
|
|
15828
16181
|
<button class="fd-button fd-button--attention is-compact" (click)="onRemoveOfflineData()">
|
|
@@ -15900,10 +16253,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
15900
16253
|
xl:tw-grid-cols-9 xl:tw-grid-cols-10 xl:tw-grid-cols-11 xl:tw-grid-cols-12"
|
|
15901
16254
|
></div>
|
|
15902
16255
|
<div
|
|
15903
|
-
class="tw-hidden 2xl:grid-cols-0 2xl:tw-grid-cols-1 2xl:tw-grid-cols-2 2xl:tw-grid-cols-3
|
|
15904
|
-
2xl:tw-grid-cols-4 2xl:tw-grid-cols-5 2xl:tw-grid-cols-6 2xl:tw-grid-cols-7 2xl:tw-grid-cols-8 2xl:tw-grid-cols-9
|
|
16256
|
+
class="tw-hidden 2xl:grid-cols-0 2xl:tw-grid-cols-1 2xl:tw-grid-cols-2 2xl:tw-grid-cols-3
|
|
16257
|
+
2xl:tw-grid-cols-4 2xl:tw-grid-cols-5 2xl:tw-grid-cols-6 2xl:tw-grid-cols-7 2xl:tw-grid-cols-8 2xl:tw-grid-cols-9
|
|
15905
16258
|
2xl:tw-grid-cols-10 2xl:tw-grid-cols-11 2xl:tw-grid-cols-12"
|
|
15906
16259
|
></div>
|
|
16260
|
+
<div
|
|
16261
|
+
class="tw-hidden tw-col-span-1 tw-col-span-2 tw-col-span-3 tw-col-span-4 tw-col-span-5 tw-col-span-6
|
|
16262
|
+
tw-col-span-7 tw-col-span-8 tw-col-span-9 tw-col-span-10 tw-col-span-11 tw-col-span-12"
|
|
16263
|
+
></div>
|
|
16264
|
+
<div
|
|
16265
|
+
class="tw-hidden md:tw-col-span-1 md:tw-col-span-2 md:tw-col-span-3 md:tw-col-span-4 md:tw-col-span-5
|
|
16266
|
+
md:tw-col-span-6 md:tw-col-span-7 md:tw-col-span-8 md:tw-col-span-9 md:tw-col-span-10 md:tw-col-span-11 md:tw-col-span-12"
|
|
16267
|
+
></div>
|
|
16268
|
+
<div
|
|
16269
|
+
class="tw-hidden lg:tw-col-span-1 lg:tw-col-span-2 lg:tw-col-span-3 lg:tw-col-span-4 lg:tw-col-span-5
|
|
16270
|
+
lg:tw-col-span-6 lg:tw-col-span-7 lg:tw-col-span-8 lg:tw-col-span-9 lg:tw-col-span-10 lg:tw-col-span-11 lg:tw-col-span-12"
|
|
16271
|
+
></div>
|
|
16272
|
+
<div
|
|
16273
|
+
class="tw-hidden xl:tw-col-span-1 xl:tw-col-span-2 xl:tw-col-span-3 xl:tw-col-span-4 xl:tw-col-span-5
|
|
16274
|
+
xl:tw-col-span-6 xl:tw-col-span-7 xl:tw-col-span-8 xl:tw-col-span-9 xl:tw-col-span-10 xl:tw-col-span-11 xl:tw-col-span-12"
|
|
16275
|
+
></div>
|
|
16276
|
+
<div
|
|
16277
|
+
class="tw-hidden 2xl:tw-col-span-1 2xl:tw-col-span-2 2xl:tw-col-span-3 2xl:tw-col-span-4 2xl:tw-col-span-5
|
|
16278
|
+
2xl:tw-col-span-6 2xl:tw-col-span-7 2xl:tw-col-span-8 2xl:tw-col-span-9 2xl:tw-col-span-10 2xl:tw-col-span-11 2xl:tw-col-span-12"
|
|
16279
|
+
></div>
|
|
15907
16280
|
@if(inLocalMode()){
|
|
15908
16281
|
<div class="fd-toolbar" style="flex-wrap:wrap;padding:0.5rem;height:auto">
|
|
15909
16282
|
<button class="fd-button fd-button--attention is-compact" (click)="onRemoveOfflineData()">
|
|
@@ -16183,59 +16556,88 @@ class ImageLazyDirective extends BaseDirective {
|
|
|
16183
16556
|
super();
|
|
16184
16557
|
this.auto = true;
|
|
16185
16558
|
this.threshold = 20;
|
|
16559
|
+
this.imageLoadStarted = new EventEmitter();
|
|
16186
16560
|
this.imageLoaded = new EventEmitter();
|
|
16187
|
-
this.
|
|
16188
|
-
this.
|
|
16561
|
+
this.imageLoadError = new EventEmitter();
|
|
16562
|
+
this._observer = null;
|
|
16563
|
+
this._initialized = false;
|
|
16564
|
+
this._loadHandler = () => {
|
|
16565
|
+
if (!this.imgLazy || this._imgEl.getAttribute('src') !== this.imgLazy) {
|
|
16566
|
+
return;
|
|
16567
|
+
}
|
|
16568
|
+
this._portalService.cachedImages[this.imgLazy] = true;
|
|
16569
|
+
this._imgEl.parentElement?.setAttribute('imgLoaded', 'true');
|
|
16570
|
+
this.imageLoaded.emit();
|
|
16571
|
+
};
|
|
16572
|
+
this._errorHandler = () => {
|
|
16573
|
+
if (!this.imgLazy || this._imgEl.getAttribute('src') !== this.imgLazy) {
|
|
16574
|
+
return;
|
|
16575
|
+
}
|
|
16576
|
+
this.imageLoadError.emit();
|
|
16577
|
+
};
|
|
16189
16578
|
this._imgEl = this._el.nativeElement;
|
|
16190
16579
|
}
|
|
16191
16580
|
ngOnInit() {
|
|
16192
16581
|
super.ngOnInit();
|
|
16193
|
-
|
|
16194
|
-
|
|
16195
|
-
|
|
16196
|
-
|
|
16197
|
-
|
|
16582
|
+
this._initialized = true;
|
|
16583
|
+
this._imgEl.setAttribute('loading', 'lazy');
|
|
16584
|
+
this._imgEl.setAttribute('decoding', 'async');
|
|
16585
|
+
this._imgEl.addEventListener('load', this._loadHandler);
|
|
16586
|
+
this._imgEl.addEventListener('error', this._errorHandler);
|
|
16587
|
+
this._observeCurrentImage();
|
|
16588
|
+
}
|
|
16589
|
+
ngOnChanges(changes) {
|
|
16590
|
+
super.ngOnChanges(changes);
|
|
16591
|
+
if (!this._initialized || !changes['imgLazy']) {
|
|
16198
16592
|
return;
|
|
16199
16593
|
}
|
|
16200
|
-
|
|
16201
|
-
|
|
16202
|
-
|
|
16203
|
-
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
|
|
16208
|
-
.pipe(takeUntil(this._imageViewed$), takeUntil(this._onDestroy$), debounceTime(20), filter(() => this.isInViewport()), tap(() => this.showImage()))
|
|
16209
|
-
.subscribe();
|
|
16210
|
-
}
|
|
16594
|
+
this._resetImage();
|
|
16595
|
+
this._observeCurrentImage();
|
|
16596
|
+
}
|
|
16597
|
+
ngOnDestroy() {
|
|
16598
|
+
this._disconnectObserver();
|
|
16599
|
+
this._imgEl.removeEventListener('load', this._loadHandler);
|
|
16600
|
+
this._imgEl.removeEventListener('error', this._errorHandler);
|
|
16601
|
+
super.ngOnDestroy();
|
|
16211
16602
|
}
|
|
16212
16603
|
showImage() {
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
16604
|
+
if (!this.imgLazy) {
|
|
16605
|
+
return;
|
|
16606
|
+
}
|
|
16607
|
+
if (this._imgEl.getAttribute('src') === this.imgLazy) {
|
|
16216
16608
|
return;
|
|
16217
16609
|
}
|
|
16218
|
-
this.
|
|
16219
|
-
|
|
16220
|
-
this.
|
|
16221
|
-
this._imageViewed$.next();
|
|
16610
|
+
this.imageLoadStarted.emit();
|
|
16611
|
+
this._imgEl.setAttribute('src', this.imgLazy);
|
|
16612
|
+
this._disconnectObserver();
|
|
16222
16613
|
}
|
|
16223
|
-
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
}
|
|
16614
|
+
_observeCurrentImage() {
|
|
16615
|
+
this._disconnectObserver();
|
|
16616
|
+
if (!this.auto || !this.imgLazy) {
|
|
16617
|
+
return;
|
|
16618
|
+
}
|
|
16619
|
+
if (typeof IntersectionObserver === 'undefined') {
|
|
16620
|
+
this.showImage();
|
|
16621
|
+
return;
|
|
16622
|
+
}
|
|
16623
|
+
this._observer = new IntersectionObserver((entries) => {
|
|
16624
|
+
if (entries.some((entry) => entry.isIntersecting)) {
|
|
16625
|
+
this.showImage();
|
|
16626
|
+
}
|
|
16627
|
+
}, { rootMargin: `${Math.max(0, this.threshold)}px` });
|
|
16628
|
+
this._observer.observe(this._imgEl);
|
|
16228
16629
|
}
|
|
16229
|
-
|
|
16230
|
-
|
|
16231
|
-
|
|
16232
|
-
|
|
16233
|
-
|
|
16234
|
-
|
|
16235
|
-
|
|
16630
|
+
_resetImage() {
|
|
16631
|
+
this._disconnectObserver();
|
|
16632
|
+
this._imgEl.removeAttribute('src');
|
|
16633
|
+
this._imgEl.parentElement?.removeAttribute('imgLoaded');
|
|
16634
|
+
}
|
|
16635
|
+
_disconnectObserver() {
|
|
16636
|
+
this._observer?.disconnect();
|
|
16637
|
+
this._observer = null;
|
|
16236
16638
|
}
|
|
16237
16639
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageLazyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
16238
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ImageLazyDirective, isStandalone: false, selector: "[imgLazy]", inputs: { auto: "auto", threshold: "threshold", imgLazy: "imgLazy" }, outputs: { imageLoaded: "imageLoaded" }, usesInheritance: true, ngImport: i0 }); }
|
|
16640
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ImageLazyDirective, isStandalone: false, selector: "[imgLazy]", inputs: { auto: "auto", threshold: "threshold", imgLazy: "imgLazy" }, outputs: { imageLoadStarted: "imageLoadStarted", imageLoaded: "imageLoaded", imageLoadError: "imageLoadError" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
16239
16641
|
}
|
|
16240
16642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageLazyDirective, decorators: [{
|
|
16241
16643
|
type: Directive,
|
|
@@ -16247,8 +16649,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
16247
16649
|
type: Input
|
|
16248
16650
|
}], threshold: [{
|
|
16249
16651
|
type: Input
|
|
16652
|
+
}], imageLoadStarted: [{
|
|
16653
|
+
type: Output
|
|
16250
16654
|
}], imageLoaded: [{
|
|
16251
16655
|
type: Output
|
|
16656
|
+
}], imageLoadError: [{
|
|
16657
|
+
type: Output
|
|
16252
16658
|
}], imgLazy: [{
|
|
16253
16659
|
type: Input
|
|
16254
16660
|
}] } });
|
|
@@ -17102,7 +17508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
17102
17508
|
class BodyClickDirective extends BaseDirective {
|
|
17103
17509
|
constructor() {
|
|
17104
17510
|
super(...arguments);
|
|
17105
|
-
this._document = inject(DOCUMENT);
|
|
17511
|
+
this._document = inject(DOCUMENT$1);
|
|
17106
17512
|
}
|
|
17107
17513
|
onClick() {
|
|
17108
17514
|
if (this.disableBodyClick) {
|
|
@@ -17355,7 +17761,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
17355
17761
|
class LabelmandatoryDirective extends BaseDirective {
|
|
17356
17762
|
constructor() {
|
|
17357
17763
|
super(...arguments);
|
|
17358
|
-
this._document = inject(DOCUMENT);
|
|
17764
|
+
this._document = inject(DOCUMENT$1);
|
|
17359
17765
|
}
|
|
17360
17766
|
ngOnInit() {
|
|
17361
17767
|
super.ngOnInit();
|
|
@@ -18134,7 +18540,7 @@ class TooltipDirective {
|
|
|
18134
18540
|
...(ngDevMode ? [{ debugName: "bnrcTooltip" }] : /* istanbul ignore next */ []));
|
|
18135
18541
|
this.hostRef = inject(ElementRef);
|
|
18136
18542
|
this.renderer = inject(Renderer2);
|
|
18137
|
-
this.document = inject(DOCUMENT);
|
|
18543
|
+
this.document = inject(DOCUMENT$1);
|
|
18138
18544
|
this.tooltipEl = null;
|
|
18139
18545
|
}
|
|
18140
18546
|
ngOnDestroy() {
|
|
@@ -18345,6 +18751,132 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
18345
18751
|
type: Input
|
|
18346
18752
|
}] } });
|
|
18347
18753
|
|
|
18754
|
+
/**
|
|
18755
|
+
* یک container-query دستیِ قابلِاستفادهی مجدد: عرضِ خودِ المان (نه viewport) را با
|
|
18756
|
+
* `ResizeObserver` رصد میکند و بر اساس آن، تعدادِ ستونهای گریدِ ۱۲تاییِ فاندامنتال را
|
|
18757
|
+
* محاسبه و از طریقِ `(colSpanChange)` منتشر میکند. همچنین با `exportAs` قابلِ خواندنِ
|
|
18758
|
+
* مستقیمِ `colSpan`/`breakpoint` در همان قالب است.
|
|
18759
|
+
*
|
|
18760
|
+
* نمونه:
|
|
18761
|
+
* ```html
|
|
18762
|
+
* <fd-layout-grid
|
|
18763
|
+
* [bsuResponsiveGridCols]="{ s: 1, m: 2, l: 3, xl: 4 }"
|
|
18764
|
+
* (colSpanChange)="colSpan = $event">
|
|
18765
|
+
* <div [fdLayoutGridCol]="colSpan">...</div>
|
|
18766
|
+
* </fd-layout-grid>
|
|
18767
|
+
* ```
|
|
18768
|
+
*/
|
|
18769
|
+
class ResponsiveGridColsDirective {
|
|
18770
|
+
constructor() {
|
|
18771
|
+
/** تعدادِ کارت در ردیف بهازای هر breakpoint. */
|
|
18772
|
+
this.config = null;
|
|
18773
|
+
/** آستانهها؛ پیشفرض همراستا با گریدِ فاندامنتال. */
|
|
18774
|
+
this.breakpoints = { m: 601, l: 1025, xl: 1441 };
|
|
18775
|
+
/** span مؤثرِ گریدِ ۱۲تاییِ فاندامنتال (۱..۱۲) بر اساس عرضِ کانتینر. */
|
|
18776
|
+
this.colSpanChange = new EventEmitter();
|
|
18777
|
+
/** تعدادِ ستون در ردیف (برای گریدهای غیرِ ۱۲تایی مثل CSS/Tailwind grid). */
|
|
18778
|
+
this.colsPerRowChange = new EventEmitter();
|
|
18779
|
+
/** breakpoint فعلیِ کانتینر. */
|
|
18780
|
+
this.breakpointChange = new EventEmitter();
|
|
18781
|
+
this.breakpoint = 's';
|
|
18782
|
+
this.colSpan = 12;
|
|
18783
|
+
this.colsPerRow = 1;
|
|
18784
|
+
this._el = inject(ElementRef);
|
|
18785
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
18786
|
+
this._zone = inject(NgZone);
|
|
18787
|
+
}
|
|
18788
|
+
ngAfterViewInit() {
|
|
18789
|
+
this._apply(this._width());
|
|
18790
|
+
try {
|
|
18791
|
+
this._ro = new ResizeObserver((entries) => {
|
|
18792
|
+
const width = entries[0]?.contentRect?.width ?? this._width();
|
|
18793
|
+
this._zone.run(() => this._apply(width));
|
|
18794
|
+
});
|
|
18795
|
+
this._ro.observe(this._el.nativeElement);
|
|
18796
|
+
}
|
|
18797
|
+
catch {
|
|
18798
|
+
// مرورگرِ خیلی قدیمی بدونِ ResizeObserver → فقط اندازهی اولیه اعمال میشود
|
|
18799
|
+
}
|
|
18800
|
+
}
|
|
18801
|
+
ngOnChanges(changes) {
|
|
18802
|
+
// تغییرِ config/breakpoints در زمانِ اجرا هم دوباره اعمال شود
|
|
18803
|
+
if ((changes.config && !changes.config.firstChange) ||
|
|
18804
|
+
(changes.breakpoints && !changes.breakpoints.firstChange)) {
|
|
18805
|
+
this._apply(this._width());
|
|
18806
|
+
}
|
|
18807
|
+
}
|
|
18808
|
+
ngOnDestroy() {
|
|
18809
|
+
this._ro?.disconnect();
|
|
18810
|
+
}
|
|
18811
|
+
_width() {
|
|
18812
|
+
return this._el.nativeElement.getBoundingClientRect().width;
|
|
18813
|
+
}
|
|
18814
|
+
_resolveBreakpoint(width) {
|
|
18815
|
+
const { m, l, xl } = this.breakpoints;
|
|
18816
|
+
return width < m ? 's' : width < l ? 'm' : width < xl ? 'l' : 'xl';
|
|
18817
|
+
}
|
|
18818
|
+
/** تعدادِ کارت در ردیف برای این breakpoint، با fallback به breakpointهای کوچکتر. */
|
|
18819
|
+
_colsPerRow(bp) {
|
|
18820
|
+
const c = this.config || {};
|
|
18821
|
+
const chain = {
|
|
18822
|
+
s: [c.s],
|
|
18823
|
+
m: [c.m, c.s],
|
|
18824
|
+
l: [c.l, c.m, c.s],
|
|
18825
|
+
xl: [c.xl, c.l, c.m, c.s]
|
|
18826
|
+
};
|
|
18827
|
+
const value = chain[bp].find((v) => v != null && +v > 0);
|
|
18828
|
+
return value && +value > 0 ? +value : 1;
|
|
18829
|
+
}
|
|
18830
|
+
_apply(width) {
|
|
18831
|
+
if (!width) {
|
|
18832
|
+
return;
|
|
18833
|
+
}
|
|
18834
|
+
const bp = this._resolveBreakpoint(width);
|
|
18835
|
+
const perRow = this._colsPerRow(bp);
|
|
18836
|
+
const span = Math.max(1, Math.min(12, Math.round(12 / perRow)));
|
|
18837
|
+
const bpChanged = bp !== this.breakpoint;
|
|
18838
|
+
const perRowChanged = perRow !== this.colsPerRow;
|
|
18839
|
+
const spanChanged = span !== this.colSpan;
|
|
18840
|
+
if (!bpChanged && !perRowChanged && !spanChanged) {
|
|
18841
|
+
return;
|
|
18842
|
+
}
|
|
18843
|
+
this.breakpoint = bp;
|
|
18844
|
+
this.colsPerRow = perRow;
|
|
18845
|
+
this.colSpan = span;
|
|
18846
|
+
this._cdr.markForCheck();
|
|
18847
|
+
if (spanChanged) {
|
|
18848
|
+
this.colSpanChange.emit(span);
|
|
18849
|
+
}
|
|
18850
|
+
if (perRowChanged) {
|
|
18851
|
+
this.colsPerRowChange.emit(perRow);
|
|
18852
|
+
}
|
|
18853
|
+
if (bpChanged) {
|
|
18854
|
+
this.breakpointChange.emit(bp);
|
|
18855
|
+
}
|
|
18856
|
+
}
|
|
18857
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ResponsiveGridColsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18858
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ResponsiveGridColsDirective, isStandalone: false, selector: "[bsuResponsiveGridCols]", inputs: { config: ["bsuResponsiveGridCols", "config"], breakpoints: "breakpoints" }, outputs: { colSpanChange: "colSpanChange", colsPerRowChange: "colsPerRowChange", breakpointChange: "breakpointChange" }, exportAs: ["bsuResponsiveGridCols"], usesOnChanges: true, ngImport: i0 }); }
|
|
18859
|
+
}
|
|
18860
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ResponsiveGridColsDirective, decorators: [{
|
|
18861
|
+
type: Directive,
|
|
18862
|
+
args: [{
|
|
18863
|
+
selector: '[bsuResponsiveGridCols]',
|
|
18864
|
+
exportAs: 'bsuResponsiveGridCols',
|
|
18865
|
+
standalone: false
|
|
18866
|
+
}]
|
|
18867
|
+
}], propDecorators: { config: [{
|
|
18868
|
+
type: Input,
|
|
18869
|
+
args: ['bsuResponsiveGridCols']
|
|
18870
|
+
}], breakpoints: [{
|
|
18871
|
+
type: Input
|
|
18872
|
+
}], colSpanChange: [{
|
|
18873
|
+
type: Output
|
|
18874
|
+
}], colsPerRowChange: [{
|
|
18875
|
+
type: Output
|
|
18876
|
+
}], breakpointChange: [{
|
|
18877
|
+
type: Output
|
|
18878
|
+
}] } });
|
|
18879
|
+
|
|
18348
18880
|
class SafeBottomDirective extends BaseDirective {
|
|
18349
18881
|
constructor() {
|
|
18350
18882
|
super(...arguments);
|
|
@@ -18809,6 +19341,9 @@ class ReportContainerComponent extends BaseComponent {
|
|
|
18809
19341
|
}
|
|
18810
19342
|
ngOnInit() {
|
|
18811
19343
|
super.ngOnInit();
|
|
19344
|
+
this._addUlvMainUi();
|
|
19345
|
+
}
|
|
19346
|
+
_addUlvMainUi() {
|
|
18812
19347
|
let ulvParam;
|
|
18813
19348
|
if (!this.settings.RelatedReport) {
|
|
18814
19349
|
const id = this._activatedRoute.snapshot.params['id'];
|
|
@@ -18840,7 +19375,12 @@ class ReportContainerComponent extends BaseComponent {
|
|
|
18840
19375
|
UlvParams: ulvParam
|
|
18841
19376
|
}, this.vcr, this._injector, this._environmentInjector, this.settings.IsReportPage)
|
|
18842
19377
|
.pipe(takeUntil(this._onDestroy$), catchError$1((err) => throwError(err)), finalize(() => this._loadingSource.next(false)))
|
|
18843
|
-
.subscribe();
|
|
19378
|
+
.subscribe((ulvMainCtrl) => (this._ulvMainCtrlr = ulvMainCtrl));
|
|
19379
|
+
}
|
|
19380
|
+
ReloadReport() {
|
|
19381
|
+
this.vcr.clear();
|
|
19382
|
+
this._ulvMainCtrlr && this._ulvMainCtrlr.Destroy();
|
|
19383
|
+
this._addUlvMainUi();
|
|
18844
19384
|
}
|
|
18845
19385
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18846
19386
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ReportContainerComponent, isStandalone: false, selector: "bnrc-report-container", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: "@if ((loading$ | async)!!) {\r\n<bsu-mask></bsu-mask>\r\n}\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -19120,10 +19660,12 @@ class ReportNavigatorComponent extends BaseComponent {
|
|
|
19120
19660
|
// tap((c) => (c.isReportPage ? (this.minheight = 'auto') : '100vh')),
|
|
19121
19661
|
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
|
|
19122
19662
|
.renderUlvMainUi(resolved, this.containerRef, this._injector, this._environmentInjector, resolved.isReportPage)
|
|
19123
|
-
.pipe(catchError$1((_err) =>
|
|
19124
|
-
|
|
19125
|
-
|
|
19126
|
-
|
|
19663
|
+
.pipe(catchError$1((_err) => {
|
|
19664
|
+
// this._location.back();
|
|
19665
|
+
// return throwError(() => new Error(err));
|
|
19666
|
+
console.error('Error rendering ULV main UI, rendering NotFoundComponent instead.', _err);
|
|
19667
|
+
return of(true);
|
|
19668
|
+
}))))), tap((ulv) => this._setActiveReport(ulv)), finalize(() => {
|
|
19127
19669
|
this._setLoading(false);
|
|
19128
19670
|
}))
|
|
19129
19671
|
.subscribe(() => {
|
|
@@ -19287,7 +19829,7 @@ class ReportEmptyPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
19287
19829
|
</ng-template>
|
|
19288
19830
|
<ng-container #containerRef></ng-container>
|
|
19289
19831
|
<router-outlet></router-outlet>
|
|
19290
|
-
`, isInline: true, styles: [":host{display:
|
|
19832
|
+
`, isInline: true, styles: [":host{display:flex;min-height:0;height:100%;flex-direction:column;flex:1}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ReportNavigatorComponent, selector: "bnrc-report-navigator" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19291
19833
|
}
|
|
19292
19834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportEmptyPageComponent, decorators: [{
|
|
19293
19835
|
type: Component,
|
|
@@ -19297,7 +19839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
19297
19839
|
</ng-template>
|
|
19298
19840
|
<ng-container #containerRef></ng-container>
|
|
19299
19841
|
<router-outlet></router-outlet>
|
|
19300
|
-
`, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:
|
|
19842
|
+
`, providers: [RoutingService, ContainerService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{display:flex;min-height:0;height:100%;flex-direction:column;flex:1}\n"] }]
|
|
19301
19843
|
}], propDecorators: { blockTemplate: [{
|
|
19302
19844
|
type: ViewChild,
|
|
19303
19845
|
args: ['block', { static: true }]
|
|
@@ -19480,7 +20022,7 @@ class ResizableDirective {
|
|
|
19480
20022
|
constructor() {
|
|
19481
20023
|
this.resizableComplete = new EventEmitter();
|
|
19482
20024
|
this.resizableStart = new EventEmitter();
|
|
19483
|
-
this.documentRef = inject(DOCUMENT);
|
|
20025
|
+
this.documentRef = inject(DOCUMENT$1);
|
|
19484
20026
|
this.elementRef = inject(ElementRef);
|
|
19485
20027
|
this.resizable = fromEvent(this.elementRef.nativeElement, 'mousedown').pipe(tap((e) => e.preventDefault()), tap(() => this.resizableStart.emit()), switchMap$1(() => {
|
|
19486
20028
|
const elDom = this.elementRef.nativeElement;
|
|
@@ -20095,6 +20637,7 @@ const directives = [
|
|
|
20095
20637
|
SimplebarDirective,
|
|
20096
20638
|
LeafletLongPressDirective,
|
|
20097
20639
|
ResizeHandlerDirective,
|
|
20640
|
+
ResponsiveGridColsDirective,
|
|
20098
20641
|
SafeBottomDirective,
|
|
20099
20642
|
MoLinkerDirective
|
|
20100
20643
|
];
|
|
@@ -20134,6 +20677,7 @@ const pipes = [
|
|
|
20134
20677
|
EnumCaptionPipe,
|
|
20135
20678
|
CanUploadFilePipe,
|
|
20136
20679
|
RemoveNewlinePipe,
|
|
20680
|
+
RelativeDatePipe,
|
|
20137
20681
|
ConvertToStylePipe,
|
|
20138
20682
|
FilterPipe,
|
|
20139
20683
|
FilterTabPipe,
|
|
@@ -20168,6 +20712,7 @@ const pipes = [
|
|
|
20168
20712
|
SanitizeTextPipe,
|
|
20169
20713
|
ColumnCustomComponentPipe,
|
|
20170
20714
|
ColumnIconPipe,
|
|
20715
|
+
MoIconPipe,
|
|
20171
20716
|
ColumnValuePipe,
|
|
20172
20717
|
RowNumberPipe,
|
|
20173
20718
|
ComboRowImagePipe,
|
|
@@ -20187,6 +20732,7 @@ const pipes = [
|
|
|
20187
20732
|
LabelStarTrimPipe,
|
|
20188
20733
|
SplitPipe,
|
|
20189
20734
|
DynamicDarkColorPipe,
|
|
20735
|
+
ReadableTextColorPipe,
|
|
20190
20736
|
ChunkArrayPipe,
|
|
20191
20737
|
MapToChatMessagePipe,
|
|
20192
20738
|
PicturesByGroupIdPipe,
|
|
@@ -20336,6 +20882,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20336
20882
|
EnumCaptionPipe,
|
|
20337
20883
|
CanUploadFilePipe,
|
|
20338
20884
|
RemoveNewlinePipe,
|
|
20885
|
+
RelativeDatePipe,
|
|
20339
20886
|
ConvertToStylePipe,
|
|
20340
20887
|
FilterPipe,
|
|
20341
20888
|
FilterTabPipe,
|
|
@@ -20370,6 +20917,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20370
20917
|
SanitizeTextPipe,
|
|
20371
20918
|
ColumnCustomComponentPipe,
|
|
20372
20919
|
ColumnIconPipe,
|
|
20920
|
+
MoIconPipe,
|
|
20373
20921
|
ColumnValuePipe,
|
|
20374
20922
|
RowNumberPipe,
|
|
20375
20923
|
ComboRowImagePipe,
|
|
@@ -20389,6 +20937,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20389
20937
|
LabelStarTrimPipe,
|
|
20390
20938
|
SplitPipe,
|
|
20391
20939
|
DynamicDarkColorPipe,
|
|
20940
|
+
ReadableTextColorPipe,
|
|
20392
20941
|
ChunkArrayPipe,
|
|
20393
20942
|
MapToChatMessagePipe,
|
|
20394
20943
|
PicturesByGroupIdPipe,
|
|
@@ -20447,6 +20996,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20447
20996
|
SimplebarDirective,
|
|
20448
20997
|
LeafletLongPressDirective,
|
|
20449
20998
|
ResizeHandlerDirective,
|
|
20999
|
+
ResponsiveGridColsDirective,
|
|
20450
21000
|
SafeBottomDirective,
|
|
20451
21001
|
MoLinkerDirective], imports: [CommonModule,
|
|
20452
21002
|
BarsaNovinRayCoreRoutingModule,
|
|
@@ -20485,6 +21035,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20485
21035
|
EnumCaptionPipe,
|
|
20486
21036
|
CanUploadFilePipe,
|
|
20487
21037
|
RemoveNewlinePipe,
|
|
21038
|
+
RelativeDatePipe,
|
|
20488
21039
|
ConvertToStylePipe,
|
|
20489
21040
|
FilterPipe,
|
|
20490
21041
|
FilterTabPipe,
|
|
@@ -20519,6 +21070,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20519
21070
|
SanitizeTextPipe,
|
|
20520
21071
|
ColumnCustomComponentPipe,
|
|
20521
21072
|
ColumnIconPipe,
|
|
21073
|
+
MoIconPipe,
|
|
20522
21074
|
ColumnValuePipe,
|
|
20523
21075
|
RowNumberPipe,
|
|
20524
21076
|
ComboRowImagePipe,
|
|
@@ -20538,6 +21090,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20538
21090
|
LabelStarTrimPipe,
|
|
20539
21091
|
SplitPipe,
|
|
20540
21092
|
DynamicDarkColorPipe,
|
|
21093
|
+
ReadableTextColorPipe,
|
|
20541
21094
|
ChunkArrayPipe,
|
|
20542
21095
|
MapToChatMessagePipe,
|
|
20543
21096
|
PicturesByGroupIdPipe,
|
|
@@ -20596,6 +21149,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20596
21149
|
SimplebarDirective,
|
|
20597
21150
|
LeafletLongPressDirective,
|
|
20598
21151
|
ResizeHandlerDirective,
|
|
21152
|
+
ResponsiveGridColsDirective,
|
|
20599
21153
|
SafeBottomDirective,
|
|
20600
21154
|
MoLinkerDirective] }); }
|
|
20601
21155
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BarsaNovinRayCoreModule, providers: [provideHttpClient(withXhr(), withInterceptorsFromDi())], imports: [CommonModule,
|
|
@@ -20627,5 +21181,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
20627
21181
|
* Generated bundle index. Do not edit.
|
|
20628
21182
|
*/
|
|
20629
21183
|
|
|
20630
|
-
export { ColSetting as $, APP_VERSION as A, BaseModule as B, BaseFormToolbaritemPropsComponent as C, DynamicComponentService as D, BaseItemContentPropsComponent as E, BaseReportModel as F, BaseSettingsService as G, BaseUlvSettingComponent as H, BaseViewContentPropsComponent as I, BaseViewItemPropsComponent as J, BaseViewPropsComponent as K, BbbTranslatePipe as L, BodyClickDirective as M, BoolControlInfoModel as N, BreadcrumbService as O, ButtonLoadingComponent as P, CalculateControlInfoModel as Q, ReportEmptyPageComponent as R, CalendarSettingsStore as S, CanUploadFilePipe as T, CardBaseItemContentPropsComponent as U, CardDynamicItemComponent as V, CardMediaSizePipe as W, CardViewService as X, ChangeLayoutInfoCustomUi as Y, ChunkArrayPipe as Z, CodeEditorControlInfoModel as _, AbsoluteDivBodyDirective as a, FileInfoCountPipe as a$, ColumnCustomComponentPipe as a0, ColumnCustomUiPipe as a1, ColumnIconPipe as a2, ColumnRendererBase as a3, ColumnRendererViewBase as a4, ColumnResizerDirective as a5, ColumnService as a6, ColumnValueDirective as a7, ColumnValueOfParametersPipe as a8, ColumnValuePipe as a9, DynamicDarkColorPipe as aA, DynamicFormComponent as aB, DynamicFormToolbaritemComponent as aC, DynamicItemComponent as aD, DynamicLayoutComponent as aE, DynamicRootVariableDirective as aF, DynamicStyleDirective as aG, DynamicUlvPagingComponent as aH, DynamicUlvToolbarComponent as aI, EllapsisTextDirective as aJ, EllipsifyDirective as aK, EmptyPageComponent as aL, EmptyPageWithRouterAndRouterOutletComponent as aM, EntitySettingsStore as aN, EnumCaptionPipe as aO, EnumControlInfoModel as aP, ExecuteDynamicCommand as aQ, ExecuteWorkflowChoiceDef as aR, ExistsColumnsPipe as aS, FORM_DIALOG_COMPONENT as aT, FieldBaseComponent as aU, FieldBaseController as aV, FieldDirective as aW, FieldInfoTypeEnum as aX, FieldUiComponent as aY, FieldViewBase as aZ, FileControlInfoModel as a_, ComboRowImagePipe as aa, CommandControlInfoModel as ab, ContainerComponent as ac, ContainerService as ad, ContextMenuPipe as ae, ControlUiPipe as af, ConvertToStylePipe as ag, CopyDirective as ah, CountDownDirective as ai, CustomCommand as aj, CustomInjector as ak, CustomRouteReuseStrategy as al, CustomUiRegistryService as am, DEFAULT_REPORT_LAYOUT_POLICY as an, DIALOG_SERVICE as ao, DateHijriService as ap, DateMiladiService as aq, DateRanges as ar, DateService as as, DateShamsiService as at, DateTimeControlInfoModel as au, DefaultCommandsAccessValue as av, DefaultGridSetting as aw, DeviceWidth as ax, DialogParams as ay, DynamicCommandDirective as az, AddDynamicFormStyles as b, ItemsRendererDirective as b$, FilePictureInfoModel as b0, FilesValidationHelper as b1, FillAllLayoutControls as b2, FillEmptySpaceDirective as b3, FilterColumnsByDetailsPipe as b4, FilterInlineActionListPipe as b5, FilterPipe as b6, FilterStringPipe as b7, FilterTabPipe as b8, FilterToolbarControlPipe as b9, GetDefaultMoObjectInfo as bA, GetImgTags as bB, GetViewableExtensions as bC, GetVisibleValue as bD, GridSetting as bE, GroupBy as bF, GroupByPipe as bG, GroupByService as bH, HeaderFacetValuePipe as bI, HideAcceptCancelButtonsPipe as bJ, HideColumnsInmobilePipe as bK, HistoryControlInfoModel as bL, HorizontalLayoutService as bM, HorizontalResponsiveDirective as bN, IconControlInfoModel as bO, IdbService as bP, ImageLazyDirective as bQ, ImageMimeType as bR, ImagetoPrint as bS, InMemoryStorageService as bT, IndexedDbService as bU, InputNumber as bV, IntersectionObserverDirective as bW, IntersectionStatus as bX, IsDarkMode as bY, IsExpandedNodePipe as bZ, IsImagePipe as b_, FilterWorkflowInMobilePipe as ba, FindColumnByDbNamePipe as bb, FindColumnsPipe as bc, FindGroup as bd, FindLayoutSettingFromLayout94 as be, FindPreviewColumnPipe as bf, FindToolbarItem as bg, FioriIconPipe as bh, FormBaseComponent as bi, FormCloseDirective as bj, FormComponent as bk, FormFieldReportPageComponent as bl, FormNewComponent as bm, FormPageBaseComponent as bn, FormPageComponent as bo, FormPanelService as bp, FormPropsBaseComponent as bq, FormService as br, FormToolbarBaseComponent as bs, FormToolbarButton as bt, GaugeControlInfoModel as bu, GeneralControlInfoModel as bv, GetAllColumnsSorted as bw, GetAllHorizontalFromLayout94 as bx, GetContentType as by, GetCssVariableValuePipe as bz, AffixRespondEvents as c, PushBannerComponent as c$, LabelStarTrimPipe as c0, LabelmandatoryDirective as c1, LayoutItemBaseComponent as c2, LayoutMainContentService as c3, LayoutPanelBaseComponent as c4, LayoutService as c5, LeafletLongPressDirective as c6, LinearListControlInfoModel as c7, LinearListHelper as c8, ListCountPipe as c9, NotFoundComponent as cA, NotificationService as cB, NowraptextDirective as cC, NumberBaseComponent as cD, NumberControlInfoModel as cE, NumbersOnlyInputDirective as cF, NumeralPipe as cG, OverflowTextDirective as cH, PageBaseComponent as cI, PageWithFormHandlerBaseComponent as cJ, PdfMimeType as cK, PictureFieldSourcePipe as cL, PictureFileControlInfoModel as cM, PicturesByGroupIdPipe as cN, PlaceHolderDirective as cO, PortalDynamicPageResolver as cP, PortalFormPageResolver as cQ, PortalPageComponent as cR, PortalPageResolver as cS, PortalPageSidebarComponent as cT, PortalReportPageResolver as cU, PortalService as cV, PreventDefaulEvent as cW, PreventDefaultDirective as cX, PrintFilesDirective as cY, PrintImage as cZ, PromptUpdateService as c_, ListRelationModel as ca, LoadExternalFilesDirective as cb, LocalStorageService as cc, LogService as cd, LoginSettingsResolver as ce, MapToChatMessagePipe as cf, MasterDetailsPageComponent as cg, MeasureFormTitleWidthDirective as ch, MergeFieldsToColumnsPipe as ci, MetaobjectDataModel as cj, MetaobjectRelationModel as ck, MimeTypes as cl, MoForReportModel as cm, MoForReportModelBase as cn, MoInfoUlvMoListPipe as co, MoInfoUlvPagingPipe as cp, MoLinkerDirective as cq, MoReportValueConcatPipe as cr, MoReportValuePipe as cs, MoValuePipe as ct, MobileDirective as cu, ModalRootComponent as cv, MultipleGroupByPipe as cw, NOTIFICATAION_POPUP_SERVER as cx, NOTIFICATION_WEBWORKER_FACTORY as cy, NetworkStatusService as cz, AllFilesMimeType as d, ShortcutRegisterDirective as d$, PushCheckService as d0, PushNotificationService as d1, REPORT_GRID_VIEWPORT_CLASS as d2, REPORT_TYPE_DEFAULT_POLICIES as d3, RUNTIME_NAV_STATE_SCHEMA_V1 as d4, RabetehAkseTakiListiControlInfoModel as d5, RedirectHomeGuard as d6, RelatedReportControlInfoModel as d7, RelationListControlInfoModel as d8, RemoveDynamicFormStyles as d9, ResizeObserverDirective as dA, ReversePipe as dB, RichStringControlInfoModel as dC, RootPageComponent as dD, RootPortalComponent as dE, RotateImage as dF, RouteFormChangeDirective as dG, RoutingService as dH, RowDataOption as dI, RowNumberPipe as dJ, RowState as dK, RuntimeNavStateCacheService as dL, SafeBottomDirective as dM, SanitizeTextPipe as dN, SaveImageDirective as dO, SaveImageToFile as dP, SaveScrollPositionService as dQ, ScopedCssPipe as dR, ScrollLayoutContextHolder as dS, ScrollPersistDirective as dT, ScrollToSelectedDirective as dU, SelectionMode as dV, SeperatorFixPipe as dW, ServiceWorkerCommuncationService as dX, ServiceWorkerNotificationService as dY, ShellbarHeightService as dZ, ShortcutHandlerDirective as d_, RemoveNewlinePipe as da, RenderUlvDirective as db, RenderUlvPaginDirective as dc, RenderUlvViewerDirective as dd, ReplacePipe as de, ReportActionListPipe as df, ReportBaseComponent as dg, ReportBaseInfo as dh, ReportBreadcrumbResolver as di, ReportCalendarModel as dj, ReportContainerComponent as dk, ReportExtraInfo as dl, ReportField as dm, ReportFormModel as dn, ReportItemBaseComponent as dp, ReportListModel as dq, ReportModel as dr, ReportNavigatorComponent as ds, ReportTreeModel as dt, ReportViewBaseComponent as du, ReportViewColumn as dv, ResizableComponent as dw, ResizableDirective as dx, ResizableModule as dy, ResizeHandlerDirective as dz, AnchorScrollDirective as e, flattenTree as e$, SimpleTemplateEngine as e0, SimplebarDirective as e1, SingleRelationControlInfoModel as e2, SortDirection as e3, SortPipe as e4, SortSetting as e5, SplideSliderDirective as e6, SplitPipe as e7, SplitterComponent as e8, StopPropagationDirective as e9, VisibleValuePipe as eA, WebOtpDirective as eB, WordMimeType as eC, WorfkflowwChoiceCommandDirective as eD, addCssVariableToRoot as eE, addDynamicVariableTo as eF, availablePrefixes as eG, bodyClick as eH, buildRuntimeNavStateCacheKey as eI, calcContextMenuWidth as eJ, calculateColumnContent as eK, calculateColumnWidth as eL, calculateColumnWidthFitToContainer as eM, calculateFreeColumnSize as eN, calculateMoDataListContentWidthByColumnName as eO, cancelRequestAnimationFrame as eP, checkPermission as eQ, compareVersions as eR, contextDefaultsFromEnvironment as eS, createFormPanelMetaConditions as eT, createGridEditorFormPanel as eU, easeInOutCubic as eV, elementInViewport2 as eW, enumValueToStringSize as eX, executeUlvCommandHandler as eY, extractLayoutPolicyFromView as eZ, fixUnclosedParentheses as e_, StringControlInfoModel as ea, StringToNumberPipe as eb, SubformControlInfoModel as ec, SystemBaseComponent as ed, TEMPLATE_ENGINE as ee, TOAST_SERVICE as ef, TableHeaderWidthMode as eg, TableResizerDirective as eh, TabpageService as ei, ThImageOrIconePipe as ej, TileGroupBreadcrumResolver as ek, TilePropsComponent as el, TlbButtonsPipe as em, ToolbarSettingsPipe as en, TooltipDirective as eo, TotalSummaryPipe as ep, UiService as eq, UlvCommandDirective as er, UlvHeightSizeType as es, UlvMainService as et, UnlimitSessionComponent as eu, UntilInViewDirective as ev, UploadService as ew, VideoMimeType as ex, VideoRecordingService as ey, ViewBase as ez, formRoutes as f, stopPropagation as f$, forbiddenValidator as f0, formatBytes as f1, fromEntries as f2, fromIntersectionObserver as f3, genrateInlineMoId as f4, getAllItemsPerChildren as f5, getColumnValueOfMoDataList as f6, getComponentDefined as f7, getControlList as f8, getControlSizeMode as f9, isFunction as fA, isIOS as fB, isImage as fC, isInLocalMode as fD, isSafari as fE, isTargetWindow as fF, isVersionBiggerThan as fG, measureText as fH, measureText2 as fI, measureTextBy as fJ, mobile_regex as fK, multilevelSort as fL, nullOrUndefinedString as fM, number_only as fN, removeDynamicStyle as fO, requestAnimationFramePolyfill as fP, resolveFinalScroll as fQ, resolveReportLayoutPolicy as fR, scrollLayoutModeToContextEnvironment as fS, scrollToElement as fT, searchEx as fU, setColumnWidthByMaxMoContentWidth as fV, setOneDepthLevel as fW, setTableThWidth as fX, shallowEqual as fY, sort as fZ, sortEx as f_, getDateService as fa, getDeviceIsDesktop as fb, getDeviceIsMobile as fc, getDeviceIsPhone as fd, getDeviceIsTablet as fe, getFieldValue as ff, getFocusableTagNames as fg, getFormSettings as fh, getGridSettings as fi, getHeaderValue as fj, getIcon as fk, getImagePath as fl, getLabelWidth as fm, getLayout94ObjectInfo as fn, getLayoutControl as fo, getNestedValue as fp, getNewMoGridEditor as fq, getParentHeight as fr, getReportTypeDefaultPolicy as fs, getRequestAnimationFrame as ft, getResetGridSettings as fu, getTargetRect as fv, getUniqueId as fw, getValidExtension as fx, isFF as fy, isFirefox as fz, ApiService as g, throwIfAlreadyLoaded as g0, toNumber as g1, validateAllFormFields as g2, ApplicationBaseComponent as h, ApplicationCtrlrService as i, AttrRtlDirective as j, AudioMimeType as k, AudioRecordingService as l, AuthGuard as m, BarsaApi as n, BarsaDialogService as o, BarsaIconDictPipe as p, BarsaNovinRayCoreModule as q, reportRoutes as r, BarsaReadonlyDirective as s, BarsaSapUiFormPageModule as t, BarsaStorageService as u, BaseColumnPropsComponent as v, BaseComponent as w, BaseController as x, BaseDirective as y, BaseDynamicComponent as z };
|
|
20631
|
-
//# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-
|
|
21184
|
+
export { ColSetting as $, APP_VERSION as A, BaseModule as B, BaseFormToolbaritemPropsComponent as C, DynamicComponentService as D, BaseItemContentPropsComponent as E, BaseReportModel as F, BaseSettingsService as G, BaseUlvSettingComponent as H, BaseViewContentPropsComponent as I, BaseViewItemPropsComponent as J, BaseViewPropsComponent as K, BbbTranslatePipe as L, BodyClickDirective as M, BoolControlInfoModel as N, BreadcrumbService as O, ButtonLoadingComponent as P, CalculateControlInfoModel as Q, ReportEmptyPageComponent as R, CalendarSettingsStore as S, CanUploadFilePipe as T, CardBaseItemContentPropsComponent as U, CardDynamicItemComponent as V, CardMediaSizePipe as W, CardViewService as X, ChangeLayoutInfoCustomUi as Y, ChunkArrayPipe as Z, CodeEditorControlInfoModel as _, AbsoluteDivBodyDirective as a, FileControlInfoModel as a$, ColumnCustomComponentPipe as a0, ColumnCustomUiPipe as a1, ColumnIconPipe as a2, ColumnRendererBase as a3, ColumnRendererViewBase as a4, ColumnResizerDirective as a5, ColumnService as a6, ColumnValueDirective as a7, ColumnValueOfParametersPipe as a8, ColumnValuePipe as a9, DynamicCommandDirective as aA, DynamicDarkColorPipe as aB, DynamicFormComponent as aC, DynamicFormToolbaritemComponent as aD, DynamicItemComponent as aE, DynamicLayoutComponent as aF, DynamicRootVariableDirective as aG, DynamicStyleDirective as aH, DynamicUlvPagingComponent as aI, DynamicUlvToolbarComponent as aJ, EllapsisTextDirective as aK, EllipsifyDirective as aL, EmptyPageComponent as aM, EmptyPageWithRouterAndRouterOutletComponent as aN, EntitySettingsStore as aO, EnumCaptionPipe as aP, EnumControlInfoModel as aQ, ExecuteDynamicCommand as aR, ExecuteWorkflowChoiceDef as aS, ExistsColumnsPipe as aT, FORM_DIALOG_COMPONENT as aU, FieldBaseComponent as aV, FieldBaseController as aW, FieldDirective as aX, FieldInfoTypeEnum as aY, FieldUiComponent as aZ, FieldViewBase as a_, ComboRowImagePipe as aa, CommandControlInfoModel as ab, ContainerComponent as ac, ContainerService as ad, ContextMenuPipe as ae, ControlUiPipe as af, ConvertToStylePipe as ag, CopyDirective as ah, CountDownDirective as ai, CustomCommand as aj, CustomInjector as ak, CustomRouteReuseStrategy as al, CustomUiRegistryService as am, DEFAULT_OBJECT_ICON as an, DEFAULT_REPORT_LAYOUT_POLICY as ao, DIALOG_SERVICE as ap, DateHijriService as aq, DateMiladiService as ar, DateRanges as as, DateService as at, DateShamsiService as au, DateTimeControlInfoModel as av, DefaultCommandsAccessValue as aw, DefaultGridSetting as ax, DeviceWidth as ay, DialogParams as az, AddDynamicFormStyles as b, IsImagePipe as b$, FileInfoCountPipe as b0, FilePictureInfoModel as b1, FilesValidationHelper as b2, FillAllLayoutControls as b3, FillEmptySpaceDirective as b4, FilterColumnsByDetailsPipe as b5, FilterInlineActionListPipe as b6, FilterPipe as b7, FilterStringPipe as b8, FilterTabPipe as b9, GetCssVariableValuePipe as bA, GetDefaultMoObjectInfo as bB, GetImgTags as bC, GetViewableExtensions as bD, GetVisibleValue as bE, GridSetting as bF, GroupBy as bG, GroupByPipe as bH, GroupByService as bI, HeaderFacetValuePipe as bJ, HideAcceptCancelButtonsPipe as bK, HideColumnsInmobilePipe as bL, HistoryControlInfoModel as bM, HorizontalLayoutService as bN, HorizontalResponsiveDirective as bO, IconControlInfoModel as bP, IdbService as bQ, ImageLazyDirective as bR, ImageMimeType as bS, ImagetoPrint as bT, InMemoryStorageService as bU, IndexedDbService as bV, InputNumber as bW, IntersectionObserverDirective as bX, IntersectionStatus as bY, IsDarkMode as bZ, IsExpandedNodePipe as b_, FilterToolbarControlPipe as ba, FilterWorkflowInMobilePipe as bb, FindColumnByDbNamePipe as bc, FindColumnsPipe as bd, FindGroup as be, FindLayoutSettingFromLayout94 as bf, FindPreviewColumnPipe as bg, FindToolbarItem as bh, FioriIconPipe as bi, FormBaseComponent as bj, FormCloseDirective as bk, FormComponent as bl, FormFieldReportPageComponent as bm, FormNewComponent as bn, FormPageBaseComponent as bo, FormPageComponent as bp, FormPanelService as bq, FormPropsBaseComponent as br, FormService as bs, FormToolbarBaseComponent as bt, FormToolbarButton as bu, GaugeControlInfoModel as bv, GeneralControlInfoModel as bw, GetAllColumnsSorted as bx, GetAllHorizontalFromLayout94 as by, GetContentType as bz, AffixRespondEvents as c, PrintFilesDirective as c$, ItemsRendererDirective as c0, LabelStarTrimPipe as c1, LabelmandatoryDirective as c2, LayoutItemBaseComponent as c3, LayoutMainContentService as c4, LayoutPanelBaseComponent as c5, LayoutService as c6, LeafletLongPressDirective as c7, LinearListControlInfoModel as c8, LinearListHelper as c9, NOTIFICATAION_POPUP_SERVER as cA, NOTIFICATION_WEBWORKER_FACTORY as cB, NetworkStatusService as cC, NotFoundComponent as cD, NotificationService as cE, NowraptextDirective as cF, NumberBaseComponent as cG, NumberControlInfoModel as cH, NumbersOnlyInputDirective as cI, NumeralPipe as cJ, OverflowTextDirective as cK, PageBaseComponent as cL, PageWithFormHandlerBaseComponent as cM, PdfMimeType as cN, PictureFieldSourcePipe as cO, PictureFileControlInfoModel as cP, PicturesByGroupIdPipe as cQ, PlaceHolderDirective as cR, PortalDynamicPageResolver as cS, PortalFormPageResolver as cT, PortalPageComponent as cU, PortalPageResolver as cV, PortalPageSidebarComponent as cW, PortalReportPageResolver as cX, PortalService as cY, PreventDefaulEvent as cZ, PreventDefaultDirective as c_, ListCountPipe as ca, ListRelationModel as cb, LoadExternalFilesDirective as cc, LocalStorageService as cd, LogService as ce, LoginSettingsResolver as cf, MapToChatMessagePipe as cg, MasterDetailsPageComponent as ch, MeasureFormTitleWidthDirective as ci, MergeFieldsToColumnsPipe as cj, MetaobjectDataModel as ck, MetaobjectRelationModel as cl, MimeTypes as cm, MoForReportModel as cn, MoForReportModelBase as co, MoIconPipe as cp, MoInfoUlvMoListPipe as cq, MoInfoUlvPagingPipe as cr, MoLinkerDirective as cs, MoReportValueConcatPipe as ct, MoReportValuePipe as cu, MoValuePipe as cv, MobileDirective as cw, ModalRootComponent as cx, MultipleGroupByPipe as cy, NATIVE_FEDERATION_RUNTIME as cz, AllFilesMimeType as d, ScrollToSelectedDirective as d$, PrintImage as d0, PromptUpdateService as d1, PushBannerComponent as d2, PushCheckService as d3, PushNotificationService as d4, REPORT_GRID_VIEWPORT_CLASS as d5, REPORT_TYPE_DEFAULT_POLICIES as d6, RUNTIME_NAV_STATE_SCHEMA_V1 as d7, RabetehAkseTakiListiControlInfoModel as d8, ReadableTextColorPipe as d9, ReportViewBaseComponent as dA, ReportViewColumn as dB, ResizableComponent as dC, ResizableDirective as dD, ResizableModule as dE, ResizeHandlerDirective as dF, ResizeObserverDirective as dG, ResponsiveGridColsDirective as dH, ReversePipe as dI, RichStringControlInfoModel as dJ, RootPageComponent as dK, RootPortalComponent as dL, RotateImage as dM, RouteFormChangeDirective as dN, RoutingService as dO, RowDataOption as dP, RowNumberPipe as dQ, RowState as dR, RuntimeNavStateCacheService as dS, SafeBottomDirective as dT, SanitizeTextPipe as dU, SaveImageDirective as dV, SaveImageToFile as dW, SaveScrollPositionService as dX, ScopedCssPipe as dY, ScrollLayoutContextHolder as dZ, ScrollPersistDirective as d_, RedirectHomeGuard as da, RelatedReportControlInfoModel as db, RelationListControlInfoModel as dc, RelativeDatePipe as dd, RelativeTimeService as de, RemoveDynamicFormStyles as df, RemoveNewlinePipe as dg, RenderUlvDirective as dh, RenderUlvPaginDirective as di, RenderUlvViewerDirective as dj, ReplacePipe as dk, ReportActionListPipe as dl, ReportBaseComponent as dm, ReportBaseInfo as dn, ReportBreadcrumbResolver as dp, ReportCalendarModel as dq, ReportContainerComponent as dr, ReportExtraInfo as ds, ReportField as dt, ReportFormModel as du, ReportItemBaseComponent as dv, ReportListModel as dw, ReportModel as dx, ReportNavigatorComponent as dy, ReportTreeModel as dz, AnchorScrollDirective as e, createGridEditorFormPanel as e$, SelectionMode as e0, SeperatorFixPipe as e1, ServiceWorkerCommuncationService as e2, ServiceWorkerNotificationService as e3, ShellbarHeightService as e4, ShortcutHandlerDirective as e5, ShortcutRegisterDirective as e6, SimpleTemplateEngine as e7, SimplebarDirective as e8, SingleRelationControlInfoModel as e9, UlvMainService as eA, UnlimitSessionComponent as eB, UntilInViewDirective as eC, UploadService as eD, VideoMimeType as eE, VideoRecordingService as eF, ViewBase as eG, VisibleValuePipe as eH, WebOtpDirective as eI, WordMimeType as eJ, WorfkflowwChoiceCommandDirective as eK, addCssVariableToRoot as eL, addDynamicVariableTo as eM, availablePrefixes as eN, bodyClick as eO, buildRuntimeNavStateCacheKey as eP, calcContextMenuWidth as eQ, calculateColumnContent as eR, calculateColumnWidth as eS, calculateColumnWidthFitToContainer as eT, calculateFreeColumnSize as eU, calculateMoDataListContentWidthByColumnName as eV, cancelRequestAnimationFrame as eW, checkPermission as eX, compareVersions as eY, contextDefaultsFromEnvironment as eZ, createFormPanelMetaConditions as e_, SortDirection as ea, SortPipe as eb, SortSetting as ec, SplideSliderDirective as ed, SplitPipe as ee, SplitterComponent as ef, StopPropagationDirective as eg, StringControlInfoModel as eh, StringToNumberPipe as ei, SubformControlInfoModel as ej, SystemBaseComponent as ek, TEMPLATE_ENGINE as el, TOAST_SERVICE as em, TableHeaderWidthMode as en, TableResizerDirective as eo, TabpageService as ep, ThImageOrIconePipe as eq, TileGroupBreadcrumResolver as er, TilePropsComponent as es, TlbButtonsPipe as et, ToolbarSettingsPipe as eu, TooltipDirective as ev, TotalSummaryPipe as ew, UiService as ex, UlvCommandDirective as ey, UlvHeightSizeType as ez, formRoutes as f, scrollToElement as f$, easeInOutCubic as f0, elementInViewport2 as f1, enumValueToStringSize as f2, executeUlvCommandHandler as f3, extractLayoutPolicyFromView as f4, fixUnclosedParentheses as f5, flattenTree as f6, forbiddenValidator as f7, formatBytes as f8, fromEntries as f9, getRequestAnimationFrame as fA, getResetGridSettings as fB, getTargetRect as fC, getUniqueId as fD, getValidExtension as fE, hhmmToMs as fF, isFF as fG, isFirefox as fH, isFunction as fI, isIOS as fJ, isImage as fK, isInLocalMode as fL, isSafari as fM, isTargetWindow as fN, isVersionBiggerThan as fO, measureText as fP, measureText2 as fQ, measureTextBy as fR, mobile_regex as fS, multilevelSort as fT, nullOrUndefinedString as fU, number_only as fV, removeDynamicStyle as fW, requestAnimationFramePolyfill as fX, resolveFinalScroll as fY, resolveReportLayoutPolicy as fZ, scrollLayoutModeToContextEnvironment as f_, fromIntersectionObserver as fa, genrateInlineMoId as fb, getAllItemsPerChildren as fc, getColumnValueOfMoDataList as fd, getComponentDefined as fe, getControlList as ff, getControlSizeMode as fg, getDateService as fh, getDeviceIsDesktop as fi, getDeviceIsMobile as fj, getDeviceIsPhone as fk, getDeviceIsTablet as fl, getFieldValue as fm, getFocusableTagNames as fn, getFormSettings as fo, getGridSettings as fp, getHeaderValue as fq, getIcon as fr, getImagePath as fs, getLabelWidth as ft, getLayout94ObjectInfo as fu, getLayoutControl as fv, getNestedValue as fw, getNewMoGridEditor as fx, getParentHeight as fy, getReportTypeDefaultPolicy as fz, ApiService as g, searchEx as g0, setColumnWidthByMaxMoContentWidth as g1, setOneDepthLevel as g2, setTableThWidth as g3, shallowEqual as g4, shouldUseFreeColumnSize as g5, sort as g6, sortEx as g7, stopPropagation as g8, throwIfAlreadyLoaded as g9, toNumber as ga, toRelativeDate as gb, validateAllFormFields as gc, ApplicationBaseComponent as h, ApplicationCtrlrService as i, AttrRtlDirective as j, AudioMimeType as k, AudioRecordingService as l, AuthGuard as m, BarsaApi as n, BarsaDialogService as o, BarsaIconDictPipe as p, BarsaNovinRayCoreModule as q, reportRoutes as r, BarsaReadonlyDirective as s, BarsaSapUiFormPageModule as t, BarsaStorageService as u, BaseColumnPropsComponent as v, BaseComponent as w, BaseController as x, BaseDirective as y, BaseDynamicComponent as z };
|
|
21185
|
+
//# sourceMappingURL=barsa-novin-ray-core-barsa-novin-ray-core-BneCvL2Z.mjs.map
|