barsa-novin-ray-core 2.3.167 → 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-CKKXv9DX.mjs → barsa-novin-ray-core-barsa-novin-ray-core-BneCvL2Z.mjs} +615 -74
- 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-BIBAUbnS.mjs → barsa-novin-ray-core-barsa-report-page.module-CpACJpmQ.mjs} +2 -2
- package/fesm2022/{barsa-novin-ray-core-barsa-report-page.module-BIBAUbnS.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 +188 -16
- package/fesm2022/barsa-novin-ray-core-barsa-novin-ray-core-CKKXv9DX.mjs.map +0 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, Injector, EnvironmentInjector, ApplicationRef, createComponent, InjectionToken, Compiler, DOCUMENT, NgZone,
|
|
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
13
|
import * as i1$1 from '@angular/common';
|
|
15
|
-
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';
|
|
16
16
|
import RecordRTC from 'recordrtc';
|
|
17
17
|
import { SwUpdate, SwPush } from '@angular/service-worker';
|
|
18
18
|
import { openDB } from 'idb';
|
|
@@ -1749,6 +1749,40 @@ function calculateColumnWidthFitToContainer(container, canView, disableContextMe
|
|
|
1749
1749
|
// });
|
|
1750
1750
|
return { columns: [...columns], contextMenuWidth };
|
|
1751
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
|
+
}
|
|
1752
1786
|
function calcContextMenuWidth(contextMenuItems, disableContextMenuOverflow) {
|
|
1753
1787
|
let contextMenuWidth = contextMenuItems.length > 1 ? 40 : 0;
|
|
1754
1788
|
const btnPadding = 14 + 2 + 10; // padding + border + if text is overflowed then add 5 pixel.so we always 5 px to it.
|
|
@@ -1869,6 +1903,20 @@ function measureTextBy(text, fontSize, fontName) {
|
|
|
1869
1903
|
function genrateInlineMoId() {
|
|
1870
1904
|
return (BarsaApi.idGenerator--).toString();
|
|
1871
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
|
+
}
|
|
1872
1920
|
function enumValueToStringSize(value, defaultValue) {
|
|
1873
1921
|
switch (value) {
|
|
1874
1922
|
case '1':
|
|
@@ -3325,6 +3373,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3325
3373
|
}]
|
|
3326
3374
|
}], ctorParameters: () => [] });
|
|
3327
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
|
+
|
|
3328
3422
|
class MoValuePipe {
|
|
3329
3423
|
constructor() { }
|
|
3330
3424
|
transform(name, mo, caption) {
|
|
@@ -4092,7 +4186,9 @@ class ColumnIconPipe {
|
|
|
4092
4186
|
const data = mo[colName];
|
|
4093
4187
|
let icon = mo[colName + '$Icon'];
|
|
4094
4188
|
if (typeof data === 'object' && data) {
|
|
4095
|
-
|
|
4189
|
+
// برای رابطهی تکی، آیکنِ خودِ آبجکت (data.$Icon) اولویت دارد؛
|
|
4190
|
+
// در غیر این صورت آیکنِ فیلد همسایه (mo[colName + '$Icon']) حفظ میشود.
|
|
4191
|
+
icon = data.$Icon ?? icon;
|
|
4096
4192
|
}
|
|
4097
4193
|
return icon;
|
|
4098
4194
|
}
|
|
@@ -4107,6 +4203,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4107
4203
|
}]
|
|
4108
4204
|
}] });
|
|
4109
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
|
+
|
|
4110
4231
|
class RowNumberPipe {
|
|
4111
4232
|
transform(moId, setting, moDataList) {
|
|
4112
4233
|
if (!moId) {
|
|
@@ -4459,11 +4580,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4459
4580
|
}]
|
|
4460
4581
|
}] });
|
|
4461
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
|
+
|
|
4462
4662
|
class DynamicDarkColorPipe {
|
|
4463
4663
|
constructor() {
|
|
4464
4664
|
this.cache = new Map();
|
|
4465
4665
|
this.darkBackground = [18, 18, 18]; // #121212
|
|
4466
4666
|
this.minContrast = 4.5;
|
|
4667
|
+
this._readableTextColorPipe = inject(ReadableTextColorPipe);
|
|
4467
4668
|
}
|
|
4468
4669
|
transform(styleStr) {
|
|
4469
4670
|
if (!IsDarkMode() || !styleStr) {
|
|
@@ -4481,9 +4682,8 @@ class DynamicDarkColorPipe {
|
|
|
4481
4682
|
// BACKGROUND EXISTS BUT NO TEXT COLOR
|
|
4482
4683
|
// ---------------------------------------------------
|
|
4483
4684
|
if (bgMatch && !colorMatch) {
|
|
4484
|
-
const
|
|
4485
|
-
if (
|
|
4486
|
-
const textColor = this.getReadableTextColor(bgRgb);
|
|
4685
|
+
const textColor = this._readableTextColorPipe.transform(bgMatch[1].trim());
|
|
4686
|
+
if (textColor) {
|
|
4487
4687
|
newStyle += `; color: ${textColor};`;
|
|
4488
4688
|
}
|
|
4489
4689
|
this.cache.set(styleStr, newStyle);
|
|
@@ -4507,11 +4707,6 @@ class DynamicDarkColorPipe {
|
|
|
4507
4707
|
this.cache.set(styleStr, newStyle);
|
|
4508
4708
|
return newStyle;
|
|
4509
4709
|
}
|
|
4510
|
-
getReadableTextColor(bgRgb) {
|
|
4511
|
-
const whiteContrast = this.getContrastRatio([255, 255, 255], bgRgb);
|
|
4512
|
-
const blackContrast = this.getContrastRatio([0, 0, 0], bgRgb);
|
|
4513
|
-
return whiteContrast > blackContrast ? '#ffffff' : '#000000';
|
|
4514
|
-
}
|
|
4515
4710
|
// ---------------------------------------------------
|
|
4516
4711
|
// 🎯 Adjust until contrast >= 4.5
|
|
4517
4712
|
// ---------------------------------------------------
|
|
@@ -4874,6 +5069,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4874
5069
|
}]
|
|
4875
5070
|
}] });
|
|
4876
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
|
+
|
|
4877
5144
|
class ApiService {
|
|
4878
5145
|
constructor() {
|
|
4879
5146
|
this.portalLoginUrl = `/api/auth/portal/login`;
|
|
@@ -6155,7 +6422,7 @@ class ApplicationCtrlrService {
|
|
|
6155
6422
|
this._selectedSystemTitle$ = new Subject();
|
|
6156
6423
|
this._systemLocationHref$ = new BehaviorSubject({});
|
|
6157
6424
|
this._isMobile = getDeviceIsMobile();
|
|
6158
|
-
this._document = inject(DOCUMENT);
|
|
6425
|
+
this._document = inject(DOCUMENT$1);
|
|
6159
6426
|
this._router = inject(Router);
|
|
6160
6427
|
this._searchService = inject(SearchService);
|
|
6161
6428
|
this._titleService = inject(Title);
|
|
@@ -6567,7 +6834,7 @@ function reportRoutes(authGuard = false) {
|
|
|
6567
6834
|
return {
|
|
6568
6835
|
path: 'report/:id',
|
|
6569
6836
|
canActivate: authGuard ? [AuthGuard] : [],
|
|
6570
|
-
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),
|
|
6571
6838
|
resolve: {
|
|
6572
6839
|
breadcrumb: ReportBreadcrumbResolver
|
|
6573
6840
|
}
|
|
@@ -6597,7 +6864,7 @@ class PortalService {
|
|
|
6597
6864
|
this._router = inject(Router);
|
|
6598
6865
|
this._location = inject(Location);
|
|
6599
6866
|
this._localStorage = inject(LocalStorageService);
|
|
6600
|
-
this._document = inject(DOCUMENT);
|
|
6867
|
+
this._document = inject(DOCUMENT$1);
|
|
6601
6868
|
this._applicationCtrlrService = inject(ApplicationCtrlrService);
|
|
6602
6869
|
this._deviceSizeSource = new BehaviorSubject(this._initalizeDeviceSize());
|
|
6603
6870
|
this._loggedInSource = new BehaviorSubject(false);
|
|
@@ -7345,7 +7612,9 @@ class PortalService {
|
|
|
7345
7612
|
}
|
|
7346
7613
|
return params;
|
|
7347
7614
|
}
|
|
7348
|
-
ShowFormPanelControl(formpanelCtrlr, router, activatedRoute, dialogComponent, isPage, vcr, isReload = false
|
|
7615
|
+
ShowFormPanelControl(formpanelCtrlr, router, activatedRoute, dialogComponent, isPage, vcr, isReload = false,
|
|
7616
|
+
// اگر RoutingServiceِ فراخوان (فرمِ والد) خودش مودال باز شده باشد، فرمِ فرزند هم مودال باز میشود.
|
|
7617
|
+
callerIsModal = false) {
|
|
7349
7618
|
if (!formpanelCtrlr) {
|
|
7350
7619
|
console.warn('form panel controler is undefined!');
|
|
7351
7620
|
return;
|
|
@@ -7360,6 +7629,9 @@ class PortalService {
|
|
|
7360
7629
|
if (modalSetting) {
|
|
7361
7630
|
isModal = true;
|
|
7362
7631
|
}
|
|
7632
|
+
// «مودال، مودال میزاید»: اگر فرمِ والد مودال بود، این فرم هم مودال باز شود
|
|
7633
|
+
// تا با ناوبریِ صفحه، دیالوگِ والد بسته نشود.
|
|
7634
|
+
isModal = isModal || callerIsModal;
|
|
7363
7635
|
formpanelCtrlr.Setting.IsModal = isModal;
|
|
7364
7636
|
formpanelCtrlr.IsModal = isModal;
|
|
7365
7637
|
const id = getUniqueId(4);
|
|
@@ -7591,7 +7863,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7591
7863
|
}], ctorParameters: () => [] });
|
|
7592
7864
|
|
|
7593
7865
|
class UlvMainService {
|
|
7594
|
-
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
7595
7866
|
constructor() {
|
|
7596
7867
|
this.moDataListSource = new BehaviorSubject([]);
|
|
7597
7868
|
this._cartableTemplates$ = new BehaviorSubject({});
|
|
@@ -7673,6 +7944,7 @@ class UlvMainService {
|
|
|
7673
7944
|
this._parentHeightSource = new BehaviorSubject(0);
|
|
7674
7945
|
this._moveUpAccessSource = new BehaviorSubject(false);
|
|
7675
7946
|
this._reorderGroupbySource = new BehaviorSubject([]);
|
|
7947
|
+
this._pollingInterval = new BehaviorSubject(0);
|
|
7676
7948
|
this.context$ = this._contextSource
|
|
7677
7949
|
.asObservable()
|
|
7678
7950
|
.pipe(takeUntil(this._onDestroy$), tap((context) => (this.context = context)), tap((context) => this._initialize(context)), tap((context) => this._addEventListener(context)))
|
|
@@ -7693,6 +7965,12 @@ class UlvMainService {
|
|
|
7693
7965
|
this.searchPanelUi$ = this._searchPanelUiSource.asObservable().pipe(takeUntil(this._onDestroy$), tap((searchPanel) => this._addDefaultSearchPanelSettings(searchPanel)));
|
|
7694
7966
|
this.openSearchPanelHiddenSettings$ = this._openSearchPanelHiddenSettingsSource.asObservable();
|
|
7695
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();
|
|
7696
7974
|
this.toolbarButtons$ = combineLatest([
|
|
7697
7975
|
this._toolbarButtonsWorkflowButtons.asObservable(),
|
|
7698
7976
|
this._toolbarButtonsSource.asObservable()
|
|
@@ -7950,6 +8228,10 @@ class UlvMainService {
|
|
|
7950
8228
|
this._inlineEditModeSource
|
|
7951
8229
|
]).pipe(map(([moveUp, groupby, inlineEdit]) => moveUp === true && !groupby.length && !inlineEdit), distinctUntilChanged());
|
|
7952
8230
|
}
|
|
8231
|
+
setPollingInterval(pollingInterval) {
|
|
8232
|
+
// مقدار از سرور بهصورت عددِ اعشاریِ ساعت.دقیقه (hh:mm) میآید؛ به میلیثانیه تبدیل میشود.
|
|
8233
|
+
this._pollingInterval.next(hhmmToMs(pollingInterval));
|
|
8234
|
+
}
|
|
7953
8235
|
setReorderGroupby(groupby) {
|
|
7954
8236
|
this._reorderGroupbySource.next(groupby ?? []);
|
|
7955
8237
|
}
|
|
@@ -9964,6 +10246,8 @@ class RoutingService {
|
|
|
9964
10246
|
}
|
|
9965
10247
|
};
|
|
9966
10248
|
this.isFirstPage = true;
|
|
10249
|
+
/** true اگر فرمِ این RoutingService خودش بهصورت مودال (داخل دیالوگ) باز شده باشد. */
|
|
10250
|
+
this.isOpenedAsModal = false;
|
|
9967
10251
|
this.masterDetails = false;
|
|
9968
10252
|
this.isMobile = getDeviceIsMobile();
|
|
9969
10253
|
this._activatedRoute = inject(ActivatedRoute);
|
|
@@ -10018,7 +10302,7 @@ class RoutingService {
|
|
|
10018
10302
|
BarsaApi.Bw.FormHandler = this.parentContainer;
|
|
10019
10303
|
}
|
|
10020
10304
|
_showFormPanel(refreshOnly = false) {
|
|
10021
|
-
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);
|
|
10022
10306
|
}
|
|
10023
10307
|
navigate(navigation, isRelative, queryParams, state) {
|
|
10024
10308
|
if (this.masterDetails && !this.isMobile) {
|
|
@@ -10589,6 +10873,9 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
10589
10873
|
get customFieldInfo() {
|
|
10590
10874
|
return this.context.Setting.CustomFieldInfo;
|
|
10591
10875
|
}
|
|
10876
|
+
get Mo() {
|
|
10877
|
+
return this._formPanelService.mo;
|
|
10878
|
+
}
|
|
10592
10879
|
constructor() {
|
|
10593
10880
|
super();
|
|
10594
10881
|
this.valueChange = new EventEmitter();
|
|
@@ -10619,6 +10906,7 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
10619
10906
|
this._renderer2 = inject(Renderer2);
|
|
10620
10907
|
this._activatedRoute = inject(ActivatedRoute);
|
|
10621
10908
|
this._domSanitizer = inject(DomSanitizer);
|
|
10909
|
+
this._formPanelService = inject(FormPanelService);
|
|
10622
10910
|
this._uploadService = inject(UploadService, { self: true, optional: true });
|
|
10623
10911
|
this._dateService = inject(DateService, { self: true, optional: true });
|
|
10624
10912
|
this._audioRecorder = inject(AudioRecordingService, { self: true, optional: true });
|
|
@@ -13018,6 +13306,11 @@ class FormComponent extends BaseComponent {
|
|
|
13018
13306
|
if (this._routingService) {
|
|
13019
13307
|
this._routingService.FormPanelCtrlr = formpanelCtrlr;
|
|
13020
13308
|
formpanelCtrlr.Page = this._routingService;
|
|
13309
|
+
// اگر این فرم داخل دیالوگ (مودال) باز شده، RoutingServiceاش را مودال علامت میزنیم تا
|
|
13310
|
+
// فرمهای فرزندش هم مودال باز شوند (قانونِ «مودال، مودال میزاید» در ShowFormPanelControl).
|
|
13311
|
+
if (this.params && this.params.inDialog) {
|
|
13312
|
+
this._routingService.isOpenedAsModal = true;
|
|
13313
|
+
}
|
|
13021
13314
|
}
|
|
13022
13315
|
const nav = this._router.getCurrentNavigation();
|
|
13023
13316
|
formpanelCtrlr.FormRequestParams.state = nav?.extras.state;
|
|
@@ -13873,6 +14166,14 @@ class FillEmptySpaceDirective extends BaseDirective {
|
|
|
13873
14166
|
const roTarget = this.getContainerElement();
|
|
13874
14167
|
this._ro = new ResizeObserver(() => this.scheduleMeasure());
|
|
13875
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
|
+
}
|
|
13876
14177
|
window.addEventListener('resize', this._onWindowResize);
|
|
13877
14178
|
}
|
|
13878
14179
|
teardownFillLayoutWatchers() {
|
|
@@ -13931,6 +14232,15 @@ class FillEmptySpaceDirective extends BaseDirective {
|
|
|
13931
14232
|
}
|
|
13932
14233
|
applyFillHeight(dom, px) {
|
|
13933
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;
|
|
13934
14244
|
if (prop === 'min-height' || prop === 'max-height') {
|
|
13935
14245
|
this._renderer2.setStyle(dom, 'height', 'auto');
|
|
13936
14246
|
}
|
|
@@ -14667,6 +14977,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14667
14977
|
this._parentFormPanelService = inject(FormPanelService, { optional: true, skipSelf: true });
|
|
14668
14978
|
this._formPanelService = inject(FormPanelService, { optional: true, self: true });
|
|
14669
14979
|
this._ulvMainService = inject(UlvMainService, { optional: true });
|
|
14980
|
+
this._renderer2 = inject(Renderer2);
|
|
14670
14981
|
this._saveEditedMo$ = new Subject();
|
|
14671
14982
|
this._formpanelValueChanged$ = new Subject();
|
|
14672
14983
|
this._saveEditedMo$
|
|
@@ -14677,7 +14988,9 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14677
14988
|
.subscribe((res) => {
|
|
14678
14989
|
if (res.saved) {
|
|
14679
14990
|
this.mo.$IsChecked = false;
|
|
14680
|
-
this.
|
|
14991
|
+
if (this.extraRelation && this.extraRelation.RelationType !== 'Composition') {
|
|
14992
|
+
this.mo.$State = 'Unchanged';
|
|
14993
|
+
}
|
|
14681
14994
|
this.editFormPanelValueChange.emit({ mo: this.mo, fieldDbName: '$InlineMoState' });
|
|
14682
14995
|
// this._formpanelValueChanged$.next('');
|
|
14683
14996
|
this._cdr.markForCheck();
|
|
@@ -14726,10 +15039,11 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14726
15039
|
this._log.error(nullOrUndefinedString('BaseViewItemPropsComponent=> _formPanelService'));
|
|
14727
15040
|
}
|
|
14728
15041
|
}
|
|
15042
|
+
this._addLastClass(this.last);
|
|
14729
15043
|
}
|
|
14730
15044
|
ngOnChanges(changes) {
|
|
14731
15045
|
super.ngOnChanges(changes);
|
|
14732
|
-
const { isChecked, inlineEditMode } = changes;
|
|
15046
|
+
const { isChecked, inlineEditMode, last } = changes;
|
|
14733
15047
|
let needToLoadForm = false;
|
|
14734
15048
|
if (this.inlineEditMode) {
|
|
14735
15049
|
if (isChecked) {
|
|
@@ -14743,6 +15057,9 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14743
15057
|
}
|
|
14744
15058
|
}
|
|
14745
15059
|
}
|
|
15060
|
+
if (last) {
|
|
15061
|
+
this._addLastClass(last.currentValue);
|
|
15062
|
+
}
|
|
14746
15063
|
if (isChecked && !isChecked.firstChange) {
|
|
14747
15064
|
this._raiseWorkflowShareButtons(isChecked.currentValue);
|
|
14748
15065
|
}
|
|
@@ -14859,6 +15176,11 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
14859
15176
|
_trackByColumn(index, column) {
|
|
14860
15177
|
return `${column.Name}${index}`;
|
|
14861
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
|
+
}
|
|
14862
15184
|
_handleResetWorkflowState() {
|
|
14863
15185
|
this._resetBruleActionMessage();
|
|
14864
15186
|
this.workflowState.set({ state: '', error: null });
|
|
@@ -15025,7 +15347,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
15025
15347
|
const customFormPanelUi = formPanelCtrlr.Adapter.Control;
|
|
15026
15348
|
const parentMo = this._parentFormPanelService ? this._parentFormPanelService.mo : null;
|
|
15027
15349
|
if (this.extraRelation && parentMo && this.extraRelation.RelationType === 'Composition') {
|
|
15028
|
-
formPanelCtrlr.Mo.SetFValue(this.extraRelation.ParentFdName, parentMo);
|
|
15350
|
+
formPanelCtrlr.Mo.SetFValue(this.extraRelation.ParentFdName, parentMo.Id);
|
|
15029
15351
|
// newFormSettings.Data.Mo[relation.ParentFdName] = parentMo.GetChangedObject();
|
|
15030
15352
|
// newFormSettings.Data.Mo[relation.ParentFdName].$State = parentMo.$State;
|
|
15031
15353
|
}
|
|
@@ -15830,10 +16152,30 @@ class RootPortalComponent extends PageBaseComponent {
|
|
|
15830
16152
|
xl:tw-grid-cols-9 xl:tw-grid-cols-10 xl:tw-grid-cols-11 xl:tw-grid-cols-12"
|
|
15831
16153
|
></div>
|
|
15832
16154
|
<div
|
|
15833
|
-
class="tw-hidden 2xl:grid-cols-0 2xl:tw-grid-cols-1 2xl:tw-grid-cols-2 2xl:tw-grid-cols-3
|
|
15834
|
-
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
|
|
15835
16157
|
2xl:tw-grid-cols-10 2xl:tw-grid-cols-11 2xl:tw-grid-cols-12"
|
|
15836
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>
|
|
15837
16179
|
@if(inLocalMode()){
|
|
15838
16180
|
<div class="fd-toolbar" style="flex-wrap:wrap;padding:0.5rem;height:auto">
|
|
15839
16181
|
<button class="fd-button fd-button--attention is-compact" (click)="onRemoveOfflineData()">
|
|
@@ -15911,10 +16253,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
15911
16253
|
xl:tw-grid-cols-9 xl:tw-grid-cols-10 xl:tw-grid-cols-11 xl:tw-grid-cols-12"
|
|
15912
16254
|
></div>
|
|
15913
16255
|
<div
|
|
15914
|
-
class="tw-hidden 2xl:grid-cols-0 2xl:tw-grid-cols-1 2xl:tw-grid-cols-2 2xl:tw-grid-cols-3
|
|
15915
|
-
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
|
|
15916
16258
|
2xl:tw-grid-cols-10 2xl:tw-grid-cols-11 2xl:tw-grid-cols-12"
|
|
15917
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>
|
|
15918
16280
|
@if(inLocalMode()){
|
|
15919
16281
|
<div class="fd-toolbar" style="flex-wrap:wrap;padding:0.5rem;height:auto">
|
|
15920
16282
|
<button class="fd-button fd-button--attention is-compact" (click)="onRemoveOfflineData()">
|
|
@@ -16194,59 +16556,88 @@ class ImageLazyDirective extends BaseDirective {
|
|
|
16194
16556
|
super();
|
|
16195
16557
|
this.auto = true;
|
|
16196
16558
|
this.threshold = 20;
|
|
16559
|
+
this.imageLoadStarted = new EventEmitter();
|
|
16197
16560
|
this.imageLoaded = new EventEmitter();
|
|
16198
|
-
this.
|
|
16199
|
-
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
|
+
};
|
|
16200
16578
|
this._imgEl = this._el.nativeElement;
|
|
16201
16579
|
}
|
|
16202
16580
|
ngOnInit() {
|
|
16203
16581
|
super.ngOnInit();
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
|
|
16208
|
-
|
|
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']) {
|
|
16209
16592
|
return;
|
|
16210
16593
|
}
|
|
16211
|
-
|
|
16212
|
-
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
16216
|
-
|
|
16217
|
-
|
|
16218
|
-
|
|
16219
|
-
.pipe(takeUntil(this._imageViewed$), takeUntil(this._onDestroy$), debounceTime(20), filter(() => this.isInViewport()), tap(() => this.showImage()))
|
|
16220
|
-
.subscribe();
|
|
16221
|
-
}
|
|
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();
|
|
16222
16602
|
}
|
|
16223
16603
|
showImage() {
|
|
16224
|
-
|
|
16225
|
-
if (this.imgLazy === this._imgEl.src) {
|
|
16226
|
-
imgEl.parentElement?.setAttribute('imgLoaded', 'true');
|
|
16604
|
+
if (!this.imgLazy) {
|
|
16227
16605
|
return;
|
|
16228
16606
|
}
|
|
16229
|
-
this.
|
|
16230
|
-
|
|
16231
|
-
|
|
16232
|
-
this.
|
|
16607
|
+
if (this._imgEl.getAttribute('src') === this.imgLazy) {
|
|
16608
|
+
return;
|
|
16609
|
+
}
|
|
16610
|
+
this.imageLoadStarted.emit();
|
|
16611
|
+
this._imgEl.setAttribute('src', this.imgLazy);
|
|
16612
|
+
this._disconnectObserver();
|
|
16233
16613
|
}
|
|
16234
|
-
|
|
16235
|
-
|
|
16236
|
-
|
|
16237
|
-
|
|
16238
|
-
}
|
|
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);
|
|
16629
|
+
}
|
|
16630
|
+
_resetImage() {
|
|
16631
|
+
this._disconnectObserver();
|
|
16632
|
+
this._imgEl.removeAttribute('src');
|
|
16633
|
+
this._imgEl.parentElement?.removeAttribute('imgLoaded');
|
|
16239
16634
|
}
|
|
16240
|
-
|
|
16241
|
-
|
|
16242
|
-
|
|
16243
|
-
rect.left >= 0 &&
|
|
16244
|
-
rect.bottom - this.threshold <= (window.innerHeight || document.documentElement.clientHeight) &&
|
|
16245
|
-
rect.right <= (window.innerWidth || document.documentElement.clientWidth);
|
|
16246
|
-
return isInViewport;
|
|
16635
|
+
_disconnectObserver() {
|
|
16636
|
+
this._observer?.disconnect();
|
|
16637
|
+
this._observer = null;
|
|
16247
16638
|
}
|
|
16248
16639
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageLazyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
16249
|
-
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 }); }
|
|
16250
16641
|
}
|
|
16251
16642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ImageLazyDirective, decorators: [{
|
|
16252
16643
|
type: Directive,
|
|
@@ -16258,8 +16649,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
16258
16649
|
type: Input
|
|
16259
16650
|
}], threshold: [{
|
|
16260
16651
|
type: Input
|
|
16652
|
+
}], imageLoadStarted: [{
|
|
16653
|
+
type: Output
|
|
16261
16654
|
}], imageLoaded: [{
|
|
16262
16655
|
type: Output
|
|
16656
|
+
}], imageLoadError: [{
|
|
16657
|
+
type: Output
|
|
16263
16658
|
}], imgLazy: [{
|
|
16264
16659
|
type: Input
|
|
16265
16660
|
}] } });
|
|
@@ -17113,7 +17508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
17113
17508
|
class BodyClickDirective extends BaseDirective {
|
|
17114
17509
|
constructor() {
|
|
17115
17510
|
super(...arguments);
|
|
17116
|
-
this._document = inject(DOCUMENT);
|
|
17511
|
+
this._document = inject(DOCUMENT$1);
|
|
17117
17512
|
}
|
|
17118
17513
|
onClick() {
|
|
17119
17514
|
if (this.disableBodyClick) {
|
|
@@ -17366,7 +17761,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
17366
17761
|
class LabelmandatoryDirective extends BaseDirective {
|
|
17367
17762
|
constructor() {
|
|
17368
17763
|
super(...arguments);
|
|
17369
|
-
this._document = inject(DOCUMENT);
|
|
17764
|
+
this._document = inject(DOCUMENT$1);
|
|
17370
17765
|
}
|
|
17371
17766
|
ngOnInit() {
|
|
17372
17767
|
super.ngOnInit();
|
|
@@ -18145,7 +18540,7 @@ class TooltipDirective {
|
|
|
18145
18540
|
...(ngDevMode ? [{ debugName: "bnrcTooltip" }] : /* istanbul ignore next */ []));
|
|
18146
18541
|
this.hostRef = inject(ElementRef);
|
|
18147
18542
|
this.renderer = inject(Renderer2);
|
|
18148
|
-
this.document = inject(DOCUMENT);
|
|
18543
|
+
this.document = inject(DOCUMENT$1);
|
|
18149
18544
|
this.tooltipEl = null;
|
|
18150
18545
|
}
|
|
18151
18546
|
ngOnDestroy() {
|
|
@@ -18356,6 +18751,132 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
18356
18751
|
type: Input
|
|
18357
18752
|
}] } });
|
|
18358
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
|
+
|
|
18359
18880
|
class SafeBottomDirective extends BaseDirective {
|
|
18360
18881
|
constructor() {
|
|
18361
18882
|
super(...arguments);
|
|
@@ -18820,6 +19341,9 @@ class ReportContainerComponent extends BaseComponent {
|
|
|
18820
19341
|
}
|
|
18821
19342
|
ngOnInit() {
|
|
18822
19343
|
super.ngOnInit();
|
|
19344
|
+
this._addUlvMainUi();
|
|
19345
|
+
}
|
|
19346
|
+
_addUlvMainUi() {
|
|
18823
19347
|
let ulvParam;
|
|
18824
19348
|
if (!this.settings.RelatedReport) {
|
|
18825
19349
|
const id = this._activatedRoute.snapshot.params['id'];
|
|
@@ -18851,7 +19375,12 @@ class ReportContainerComponent extends BaseComponent {
|
|
|
18851
19375
|
UlvParams: ulvParam
|
|
18852
19376
|
}, this.vcr, this._injector, this._environmentInjector, this.settings.IsReportPage)
|
|
18853
19377
|
.pipe(takeUntil(this._onDestroy$), catchError$1((err) => throwError(err)), finalize(() => this._loadingSource.next(false)))
|
|
18854
|
-
.subscribe();
|
|
19378
|
+
.subscribe((ulvMainCtrl) => (this._ulvMainCtrlr = ulvMainCtrl));
|
|
19379
|
+
}
|
|
19380
|
+
ReloadReport() {
|
|
19381
|
+
this.vcr.clear();
|
|
19382
|
+
this._ulvMainCtrlr && this._ulvMainCtrlr.Destroy();
|
|
19383
|
+
this._addUlvMainUi();
|
|
18855
19384
|
}
|
|
18856
19385
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18857
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 }); }
|
|
@@ -19300,7 +19829,7 @@ class ReportEmptyPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
19300
19829
|
</ng-template>
|
|
19301
19830
|
<ng-container #containerRef></ng-container>
|
|
19302
19831
|
<router-outlet></router-outlet>
|
|
19303
|
-
`, 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 }); }
|
|
19304
19833
|
}
|
|
19305
19834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReportEmptyPageComponent, decorators: [{
|
|
19306
19835
|
type: Component,
|
|
@@ -19310,7 +19839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
19310
19839
|
</ng-template>
|
|
19311
19840
|
<ng-container #containerRef></ng-container>
|
|
19312
19841
|
<router-outlet></router-outlet>
|
|
19313
|
-
`, 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"] }]
|
|
19314
19843
|
}], propDecorators: { blockTemplate: [{
|
|
19315
19844
|
type: ViewChild,
|
|
19316
19845
|
args: ['block', { static: true }]
|
|
@@ -19493,7 +20022,7 @@ class ResizableDirective {
|
|
|
19493
20022
|
constructor() {
|
|
19494
20023
|
this.resizableComplete = new EventEmitter();
|
|
19495
20024
|
this.resizableStart = new EventEmitter();
|
|
19496
|
-
this.documentRef = inject(DOCUMENT);
|
|
20025
|
+
this.documentRef = inject(DOCUMENT$1);
|
|
19497
20026
|
this.elementRef = inject(ElementRef);
|
|
19498
20027
|
this.resizable = fromEvent(this.elementRef.nativeElement, 'mousedown').pipe(tap((e) => e.preventDefault()), tap(() => this.resizableStart.emit()), switchMap$1(() => {
|
|
19499
20028
|
const elDom = this.elementRef.nativeElement;
|
|
@@ -20108,6 +20637,7 @@ const directives = [
|
|
|
20108
20637
|
SimplebarDirective,
|
|
20109
20638
|
LeafletLongPressDirective,
|
|
20110
20639
|
ResizeHandlerDirective,
|
|
20640
|
+
ResponsiveGridColsDirective,
|
|
20111
20641
|
SafeBottomDirective,
|
|
20112
20642
|
MoLinkerDirective
|
|
20113
20643
|
];
|
|
@@ -20147,6 +20677,7 @@ const pipes = [
|
|
|
20147
20677
|
EnumCaptionPipe,
|
|
20148
20678
|
CanUploadFilePipe,
|
|
20149
20679
|
RemoveNewlinePipe,
|
|
20680
|
+
RelativeDatePipe,
|
|
20150
20681
|
ConvertToStylePipe,
|
|
20151
20682
|
FilterPipe,
|
|
20152
20683
|
FilterTabPipe,
|
|
@@ -20181,6 +20712,7 @@ const pipes = [
|
|
|
20181
20712
|
SanitizeTextPipe,
|
|
20182
20713
|
ColumnCustomComponentPipe,
|
|
20183
20714
|
ColumnIconPipe,
|
|
20715
|
+
MoIconPipe,
|
|
20184
20716
|
ColumnValuePipe,
|
|
20185
20717
|
RowNumberPipe,
|
|
20186
20718
|
ComboRowImagePipe,
|
|
@@ -20200,6 +20732,7 @@ const pipes = [
|
|
|
20200
20732
|
LabelStarTrimPipe,
|
|
20201
20733
|
SplitPipe,
|
|
20202
20734
|
DynamicDarkColorPipe,
|
|
20735
|
+
ReadableTextColorPipe,
|
|
20203
20736
|
ChunkArrayPipe,
|
|
20204
20737
|
MapToChatMessagePipe,
|
|
20205
20738
|
PicturesByGroupIdPipe,
|
|
@@ -20349,6 +20882,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20349
20882
|
EnumCaptionPipe,
|
|
20350
20883
|
CanUploadFilePipe,
|
|
20351
20884
|
RemoveNewlinePipe,
|
|
20885
|
+
RelativeDatePipe,
|
|
20352
20886
|
ConvertToStylePipe,
|
|
20353
20887
|
FilterPipe,
|
|
20354
20888
|
FilterTabPipe,
|
|
@@ -20383,6 +20917,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20383
20917
|
SanitizeTextPipe,
|
|
20384
20918
|
ColumnCustomComponentPipe,
|
|
20385
20919
|
ColumnIconPipe,
|
|
20920
|
+
MoIconPipe,
|
|
20386
20921
|
ColumnValuePipe,
|
|
20387
20922
|
RowNumberPipe,
|
|
20388
20923
|
ComboRowImagePipe,
|
|
@@ -20402,6 +20937,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20402
20937
|
LabelStarTrimPipe,
|
|
20403
20938
|
SplitPipe,
|
|
20404
20939
|
DynamicDarkColorPipe,
|
|
20940
|
+
ReadableTextColorPipe,
|
|
20405
20941
|
ChunkArrayPipe,
|
|
20406
20942
|
MapToChatMessagePipe,
|
|
20407
20943
|
PicturesByGroupIdPipe,
|
|
@@ -20460,6 +20996,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20460
20996
|
SimplebarDirective,
|
|
20461
20997
|
LeafletLongPressDirective,
|
|
20462
20998
|
ResizeHandlerDirective,
|
|
20999
|
+
ResponsiveGridColsDirective,
|
|
20463
21000
|
SafeBottomDirective,
|
|
20464
21001
|
MoLinkerDirective], imports: [CommonModule,
|
|
20465
21002
|
BarsaNovinRayCoreRoutingModule,
|
|
@@ -20498,6 +21035,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20498
21035
|
EnumCaptionPipe,
|
|
20499
21036
|
CanUploadFilePipe,
|
|
20500
21037
|
RemoveNewlinePipe,
|
|
21038
|
+
RelativeDatePipe,
|
|
20501
21039
|
ConvertToStylePipe,
|
|
20502
21040
|
FilterPipe,
|
|
20503
21041
|
FilterTabPipe,
|
|
@@ -20532,6 +21070,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20532
21070
|
SanitizeTextPipe,
|
|
20533
21071
|
ColumnCustomComponentPipe,
|
|
20534
21072
|
ColumnIconPipe,
|
|
21073
|
+
MoIconPipe,
|
|
20535
21074
|
ColumnValuePipe,
|
|
20536
21075
|
RowNumberPipe,
|
|
20537
21076
|
ComboRowImagePipe,
|
|
@@ -20551,6 +21090,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20551
21090
|
LabelStarTrimPipe,
|
|
20552
21091
|
SplitPipe,
|
|
20553
21092
|
DynamicDarkColorPipe,
|
|
21093
|
+
ReadableTextColorPipe,
|
|
20554
21094
|
ChunkArrayPipe,
|
|
20555
21095
|
MapToChatMessagePipe,
|
|
20556
21096
|
PicturesByGroupIdPipe,
|
|
@@ -20609,6 +21149,7 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
20609
21149
|
SimplebarDirective,
|
|
20610
21150
|
LeafletLongPressDirective,
|
|
20611
21151
|
ResizeHandlerDirective,
|
|
21152
|
+
ResponsiveGridColsDirective,
|
|
20612
21153
|
SafeBottomDirective,
|
|
20613
21154
|
MoLinkerDirective] }); }
|
|
20614
21155
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BarsaNovinRayCoreModule, providers: [provideHttpClient(withXhr(), withInterceptorsFromDi())], imports: [CommonModule,
|
|
@@ -20640,5 +21181,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
20640
21181
|
* Generated bundle index. Do not edit.
|
|
20641
21182
|
*/
|
|
20642
21183
|
|
|
20643
|
-
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, PromptUpdateService 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, NetworkStatusService as cA, NotFoundComponent as cB, NotificationService as cC, NowraptextDirective as cD, NumberBaseComponent as cE, NumberControlInfoModel as cF, NumbersOnlyInputDirective as cG, NumeralPipe as cH, OverflowTextDirective as cI, PageBaseComponent as cJ, PageWithFormHandlerBaseComponent as cK, PdfMimeType as cL, PictureFieldSourcePipe as cM, PictureFileControlInfoModel as cN, PicturesByGroupIdPipe as cO, PlaceHolderDirective as cP, PortalDynamicPageResolver as cQ, PortalFormPageResolver as cR, PortalPageComponent as cS, PortalPageResolver as cT, PortalPageSidebarComponent as cU, PortalReportPageResolver as cV, PortalService as cW, PreventDefaulEvent as cX, PreventDefaultDirective as cY, PrintFilesDirective as cZ, PrintImage 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, NATIVE_FEDERATION_RUNTIME as cx, NOTIFICATAION_POPUP_SERVER as cy, NOTIFICATION_WEBWORKER_FACTORY as cz, AllFilesMimeType as d, ShortcutHandlerDirective as d$, PushBannerComponent as d0, PushCheckService as d1, PushNotificationService as d2, REPORT_GRID_VIEWPORT_CLASS as d3, REPORT_TYPE_DEFAULT_POLICIES as d4, RUNTIME_NAV_STATE_SCHEMA_V1 as d5, RabetehAkseTakiListiControlInfoModel as d6, RedirectHomeGuard as d7, RelatedReportControlInfoModel as d8, RelationListControlInfoModel as d9, ResizeHandlerDirective as dA, ResizeObserverDirective as dB, ReversePipe as dC, RichStringControlInfoModel as dD, RootPageComponent as dE, RootPortalComponent as dF, RotateImage as dG, RouteFormChangeDirective as dH, RoutingService as dI, RowDataOption as dJ, RowNumberPipe as dK, RowState as dL, RuntimeNavStateCacheService as dM, SafeBottomDirective as dN, SanitizeTextPipe as dO, SaveImageDirective as dP, SaveImageToFile as dQ, SaveScrollPositionService as dR, ScopedCssPipe as dS, ScrollLayoutContextHolder as dT, ScrollPersistDirective as dU, ScrollToSelectedDirective as dV, SelectionMode as dW, SeperatorFixPipe as dX, ServiceWorkerCommuncationService as dY, ServiceWorkerNotificationService as dZ, ShellbarHeightService as d_, RemoveDynamicFormStyles as da, RemoveNewlinePipe as db, RenderUlvDirective as dc, RenderUlvPaginDirective as dd, RenderUlvViewerDirective as de, ReplacePipe as df, ReportActionListPipe as dg, ReportBaseComponent as dh, ReportBaseInfo as di, ReportBreadcrumbResolver as dj, ReportCalendarModel as dk, ReportContainerComponent as dl, ReportExtraInfo as dm, ReportField as dn, ReportFormModel as dp, ReportItemBaseComponent as dq, ReportListModel as dr, ReportModel as ds, ReportNavigatorComponent as dt, ReportTreeModel as du, ReportViewBaseComponent as dv, ReportViewColumn as dw, ResizableComponent as dx, ResizableDirective as dy, ResizableModule as dz, AnchorScrollDirective as e, fixUnclosedParentheses as e$, ShortcutRegisterDirective as e0, SimpleTemplateEngine as e1, SimplebarDirective as e2, SingleRelationControlInfoModel as e3, SortDirection as e4, SortPipe as e5, SortSetting as e6, SplideSliderDirective as e7, SplitPipe as e8, SplitterComponent as e9, ViewBase as eA, VisibleValuePipe as eB, WebOtpDirective as eC, WordMimeType as eD, WorfkflowwChoiceCommandDirective as eE, addCssVariableToRoot as eF, addDynamicVariableTo as eG, availablePrefixes as eH, bodyClick as eI, buildRuntimeNavStateCacheKey as eJ, calcContextMenuWidth as eK, calculateColumnContent as eL, calculateColumnWidth as eM, calculateColumnWidthFitToContainer as eN, calculateFreeColumnSize as eO, calculateMoDataListContentWidthByColumnName as eP, cancelRequestAnimationFrame as eQ, checkPermission as eR, compareVersions as eS, contextDefaultsFromEnvironment as eT, createFormPanelMetaConditions as eU, createGridEditorFormPanel as eV, easeInOutCubic as eW, elementInViewport2 as eX, enumValueToStringSize as eY, executeUlvCommandHandler as eZ, extractLayoutPolicyFromView as e_, StopPropagationDirective as ea, StringControlInfoModel as eb, StringToNumberPipe as ec, SubformControlInfoModel as ed, SystemBaseComponent as ee, TEMPLATE_ENGINE as ef, TOAST_SERVICE as eg, TableHeaderWidthMode as eh, TableResizerDirective as ei, TabpageService as ej, ThImageOrIconePipe as ek, TileGroupBreadcrumResolver as el, TilePropsComponent as em, TlbButtonsPipe as en, ToolbarSettingsPipe as eo, TooltipDirective as ep, TotalSummaryPipe as eq, UiService as er, UlvCommandDirective as es, UlvHeightSizeType as et, UlvMainService as eu, UnlimitSessionComponent as ev, UntilInViewDirective as ew, UploadService as ex, VideoMimeType as ey, VideoRecordingService as ez, formRoutes as f, sortEx as f$, flattenTree as f0, forbiddenValidator as f1, formatBytes as f2, fromEntries as f3, fromIntersectionObserver as f4, genrateInlineMoId as f5, getAllItemsPerChildren as f6, getColumnValueOfMoDataList as f7, getComponentDefined as f8, getControlList as f9, isFirefox as fA, isFunction as fB, isIOS as fC, isImage as fD, isInLocalMode as fE, isSafari as fF, isTargetWindow as fG, isVersionBiggerThan as fH, measureText as fI, measureText2 as fJ, measureTextBy as fK, mobile_regex as fL, multilevelSort as fM, nullOrUndefinedString as fN, number_only as fO, removeDynamicStyle as fP, requestAnimationFramePolyfill as fQ, resolveFinalScroll as fR, resolveReportLayoutPolicy as fS, scrollLayoutModeToContextEnvironment as fT, scrollToElement as fU, searchEx as fV, setColumnWidthByMaxMoContentWidth as fW, setOneDepthLevel as fX, setTableThWidth as fY, shallowEqual as fZ, sort as f_, getControlSizeMode as fa, getDateService as fb, getDeviceIsDesktop as fc, getDeviceIsMobile as fd, getDeviceIsPhone as fe, getDeviceIsTablet as ff, getFieldValue as fg, getFocusableTagNames as fh, getFormSettings as fi, getGridSettings as fj, getHeaderValue as fk, getIcon as fl, getImagePath as fm, getLabelWidth as fn, getLayout94ObjectInfo as fo, getLayoutControl as fp, getNestedValue as fq, getNewMoGridEditor as fr, getParentHeight as fs, getReportTypeDefaultPolicy as ft, getRequestAnimationFrame as fu, getResetGridSettings as fv, getTargetRect as fw, getUniqueId as fx, getValidExtension as fy, isFF as fz, ApiService as g, stopPropagation as g0, throwIfAlreadyLoaded as g1, toNumber as g2, validateAllFormFields as g3, 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 };
|
|
20644
|
-
//# 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
|