barsa-novin-ray-core 2.3.98 → 2.3.100
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.mjs +512 -140
- package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
- package/index.d.ts +78 -24
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, ComponentFactoryResolver, Injector, ApplicationRef, Compiler, DOCUMENT, NgModuleFactory, InjectionToken, NgZone, EventEmitter, ChangeDetectorRef, Renderer2, HostBinding, Output, HostListener, ViewContainerRef, ViewChild,
|
|
3
|
-
import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, combineLatest, withLatestFrom as withLatestFrom$1, fromEvent, forkJoin, takeUntil as takeUntil$1, filter as filter$1, throwError, merge, interval,
|
|
2
|
+
import { Injectable, inject, ElementRef, Input, ChangeDetectionStrategy, Component, Pipe, ComponentFactoryResolver, Injector, ApplicationRef, Compiler, DOCUMENT, NgModuleFactory, InjectionToken, NgZone, signal, effect, EventEmitter, ChangeDetectorRef, Renderer2, HostBinding, Output, HostListener, ViewContainerRef, ViewChild, Directive, TemplateRef, input, NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, ErrorHandler } from '@angular/core';
|
|
3
|
+
import { Subject, from, BehaviorSubject, of, exhaustMap, map as map$1, combineLatest, withLatestFrom as withLatestFrom$1, fromEvent, forkJoin, takeUntil as takeUntil$1, filter as filter$1, throwError, merge, interval, lastValueFrom, take, debounceTime as debounceTime$1, skip, Observable, tap as tap$1, catchError as catchError$1, timer, mergeWith, Subscription } from 'rxjs';
|
|
4
4
|
import * as i1 from '@angular/router';
|
|
5
5
|
import { Router, NavigationEnd, ActivatedRoute, RouterEvent, NavigationStart, RouterModule } from '@angular/router';
|
|
6
6
|
import { DomSanitizer, Title } from '@angular/platform-browser';
|
|
@@ -17,6 +17,7 @@ import * as i1$1 from '@angular/common';
|
|
|
17
17
|
import { Location, TitleCasePipe, CommonModule } from '@angular/common';
|
|
18
18
|
import RecordRTC from 'recordrtc';
|
|
19
19
|
import { SwUpdate, SwPush } from '@angular/service-worker';
|
|
20
|
+
import { openDB } from 'idb';
|
|
20
21
|
import Splide from '@splidejs/splide';
|
|
21
22
|
|
|
22
23
|
class BarsaApi {
|
|
@@ -2397,6 +2398,32 @@ function fromEntries(entries) {
|
|
|
2397
2398
|
}
|
|
2398
2399
|
return result;
|
|
2399
2400
|
}
|
|
2401
|
+
function AddDynamicFormStyles(id, cssStyles) {
|
|
2402
|
+
if (!cssStyles) {
|
|
2403
|
+
return null;
|
|
2404
|
+
}
|
|
2405
|
+
cssStyles = cssStyles.replace(/:root/gi, `#${id}`);
|
|
2406
|
+
cssStyles = cssStyles.replace(/:html/gi, `:root`);
|
|
2407
|
+
const head = document.head || document.getElementsByTagName('head')[0];
|
|
2408
|
+
const style = document.createElement('style');
|
|
2409
|
+
head.appendChild(style);
|
|
2410
|
+
style.type = 'text/css';
|
|
2411
|
+
if (style.styleSheet) {
|
|
2412
|
+
// This is required for IE8 and below.
|
|
2413
|
+
style.styleSheet.cssText = cssStyles;
|
|
2414
|
+
}
|
|
2415
|
+
else {
|
|
2416
|
+
style.appendChild(document.createTextNode(cssStyles));
|
|
2417
|
+
}
|
|
2418
|
+
return style;
|
|
2419
|
+
}
|
|
2420
|
+
function RemoveDynamicFormStyles(style) {
|
|
2421
|
+
if (!style) {
|
|
2422
|
+
return;
|
|
2423
|
+
}
|
|
2424
|
+
const head = document.head || document.getElementsByTagName('head')[0];
|
|
2425
|
+
head.removeChild(style);
|
|
2426
|
+
}
|
|
2400
2427
|
|
|
2401
2428
|
class MoReportValuePipe {
|
|
2402
2429
|
transform(name, mo, Columns, caption) {
|
|
@@ -5810,7 +5837,11 @@ class PortalService {
|
|
|
5810
5837
|
path: (cpage.IsDefaultRoute === 'True' && path === '') || (path !== '' && typeof path !== 'undefined')
|
|
5811
5838
|
? path
|
|
5812
5839
|
: cpage.Route.replace('/', ''),
|
|
5813
|
-
canActivate: cpage.HasAuthorize === 'True'
|
|
5840
|
+
canActivate: cpage.HasAuthorize === 'True'
|
|
5841
|
+
? [AuthGuard]
|
|
5842
|
+
: cpage.IsLoginRoute === 'True'
|
|
5843
|
+
? [RedirectHomeGuard]
|
|
5844
|
+
: [],
|
|
5814
5845
|
resolve: { pageData: PortalPageResolver },
|
|
5815
5846
|
component: pageComponent,
|
|
5816
5847
|
outlet: cpage.Outlet ? cpage.Outlet : undefined,
|
|
@@ -5819,7 +5850,7 @@ class PortalService {
|
|
|
5819
5850
|
...cpage
|
|
5820
5851
|
}
|
|
5821
5852
|
},
|
|
5822
|
-
children: [formRoutes()]
|
|
5853
|
+
children: cpage.ComponentName !== 'PortalPage' ? [formRoutes()] : []
|
|
5823
5854
|
};
|
|
5824
5855
|
children.push(newRoute);
|
|
5825
5856
|
// Recursively process each MetaObjectModel inside MoDataList
|
|
@@ -8177,53 +8208,284 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
8177
8208
|
type: Injectable
|
|
8178
8209
|
}], ctorParameters: () => [] });
|
|
8179
8210
|
|
|
8211
|
+
class PushCheckService {
|
|
8212
|
+
async checkPushReady() {
|
|
8213
|
+
if (!this.baseSupport()) {
|
|
8214
|
+
return 'مرورگر شما Push API را پشتیبانی نمیکند';
|
|
8215
|
+
}
|
|
8216
|
+
const iosCheck = this.iosSupport();
|
|
8217
|
+
if (iosCheck !== true) {
|
|
8218
|
+
return iosCheck;
|
|
8219
|
+
}
|
|
8220
|
+
if (Notification.permission === 'denied') {
|
|
8221
|
+
return 'شما قبلاً اجازه نوتیفیکیشن را رد کردهاید. از تنظیمات مرورگر آن را فعال کنید';
|
|
8222
|
+
}
|
|
8223
|
+
const regs = await navigator.serviceWorker.getRegistrations();
|
|
8224
|
+
if (!regs.length) {
|
|
8225
|
+
return 'Service Worker ثبت نشده است';
|
|
8226
|
+
}
|
|
8227
|
+
return true;
|
|
8228
|
+
}
|
|
8229
|
+
getIosVersion() {
|
|
8230
|
+
const ua = navigator.userAgent;
|
|
8231
|
+
if (/iP(hone|od|ad)/.test(ua)) {
|
|
8232
|
+
const v = ua.match(/OS (\d+)_/);
|
|
8233
|
+
return v ? parseInt(v[1], 10) : null;
|
|
8234
|
+
}
|
|
8235
|
+
return null;
|
|
8236
|
+
}
|
|
8237
|
+
isIosStandalone() {
|
|
8238
|
+
return 'standalone' in navigator && navigator.standalone === true;
|
|
8239
|
+
}
|
|
8240
|
+
isSafari() {
|
|
8241
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
8242
|
+
return ua.includes('safari') && !ua.includes('chrome');
|
|
8243
|
+
}
|
|
8244
|
+
baseSupport() {
|
|
8245
|
+
return 'Notification' in window && 'serviceWorker' in navigator && 'PushManager' in window;
|
|
8246
|
+
}
|
|
8247
|
+
iosSupport() {
|
|
8248
|
+
const v = this.getIosVersion();
|
|
8249
|
+
if (v && v < 16) {
|
|
8250
|
+
return 'نسخه iOS کمتر از 16 است (Push پشتیبانی نمیشود)';
|
|
8251
|
+
}
|
|
8252
|
+
if (v && v < 16.4) {
|
|
8253
|
+
return 'iOS باید حداقل نسخه 16.4 باشد تا Push فعال شود';
|
|
8254
|
+
}
|
|
8255
|
+
if (v && !this.isSafari()) {
|
|
8256
|
+
return 'Push فقط در Safari iOS پشتیبانی میشود';
|
|
8257
|
+
}
|
|
8258
|
+
if (v && !this.isIosStandalone()) {
|
|
8259
|
+
return 'برای فعال شدن Push، برنامه را با Add to Home Screen نصب کنید';
|
|
8260
|
+
}
|
|
8261
|
+
return true;
|
|
8262
|
+
}
|
|
8263
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8264
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, providedIn: 'root' }); }
|
|
8265
|
+
}
|
|
8266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, decorators: [{
|
|
8267
|
+
type: Injectable,
|
|
8268
|
+
args: [{ providedIn: 'root' }]
|
|
8269
|
+
}] });
|
|
8270
|
+
|
|
8271
|
+
/* eslint-disable */
|
|
8272
|
+
//
|
|
8273
|
+
function usePushNotification() {
|
|
8274
|
+
const swPush = inject(SwPush);
|
|
8275
|
+
const http = inject(HttpClient);
|
|
8276
|
+
const _localStorage = inject(LocalStorageService);
|
|
8277
|
+
// Signals
|
|
8278
|
+
const bannerVisible = signal(false);
|
|
8279
|
+
const isSubscribed = signal(false);
|
|
8280
|
+
const permission = signal(Notification.permission);
|
|
8281
|
+
const errorMessage = signal(null);
|
|
8282
|
+
// IndexedDB setup
|
|
8283
|
+
const dbPromise = openDB('push-db', 1, {
|
|
8284
|
+
upgrade(db) {
|
|
8285
|
+
db.createObjectStore('subscription');
|
|
8286
|
+
}
|
|
8287
|
+
});
|
|
8288
|
+
// ذخیره subscription در DB
|
|
8289
|
+
const saveSubscription = async (sub) => {
|
|
8290
|
+
const db = await dbPromise;
|
|
8291
|
+
await db.put('subscription', sub.toJSON(), 'push-subscription');
|
|
8292
|
+
};
|
|
8293
|
+
async function initPushBanner() {
|
|
8294
|
+
const saved = await loadSubscription();
|
|
8295
|
+
if (saved) {
|
|
8296
|
+
isSubscribed.set(true);
|
|
8297
|
+
bannerVisible.set(false); // قبلاً subscribe شده
|
|
8298
|
+
}
|
|
8299
|
+
else {
|
|
8300
|
+
isSubscribed.set(false);
|
|
8301
|
+
bannerVisible.set(true); // هنوز subscribe نشده، بنر نمایش داده شود
|
|
8302
|
+
}
|
|
8303
|
+
}
|
|
8304
|
+
// خواندن subscription از DB
|
|
8305
|
+
const loadSubscription = async () => {
|
|
8306
|
+
const db = await dbPromise;
|
|
8307
|
+
const data = await db.get('subscription', 'push-subscription');
|
|
8308
|
+
if (!data) {
|
|
8309
|
+
return null;
|
|
8310
|
+
}
|
|
8311
|
+
// داده را به سرور میفرستیم یا UI نشان میدهیم
|
|
8312
|
+
return data;
|
|
8313
|
+
};
|
|
8314
|
+
// حذف subscription از DB
|
|
8315
|
+
const deleteSubscription = async () => {
|
|
8316
|
+
const db = await dbPromise;
|
|
8317
|
+
await db.delete('subscription', 'push-subscription');
|
|
8318
|
+
};
|
|
8319
|
+
const handleNewSubscription = async (subData) => {
|
|
8320
|
+
const saved = await loadSubscription();
|
|
8321
|
+
if (!saved || saved.endpoint !== subData.endpoint) {
|
|
8322
|
+
// حذف قبلی
|
|
8323
|
+
if (saved) {
|
|
8324
|
+
try {
|
|
8325
|
+
await addSubscriptionToServer(saved);
|
|
8326
|
+
}
|
|
8327
|
+
catch (e) {
|
|
8328
|
+
console.error('Delete old subscription failed', e);
|
|
8329
|
+
}
|
|
8330
|
+
}
|
|
8331
|
+
// ثبت جدید
|
|
8332
|
+
try {
|
|
8333
|
+
await deleteSubscriptionFromServer(subData);
|
|
8334
|
+
await saveSubscription(subData);
|
|
8335
|
+
isSubscribed.set(true);
|
|
8336
|
+
}
|
|
8337
|
+
catch (e) {
|
|
8338
|
+
console.error('Add new subscription failed', e);
|
|
8339
|
+
}
|
|
8340
|
+
}
|
|
8341
|
+
};
|
|
8342
|
+
const hideBanner = () => bannerVisible.set(false);
|
|
8343
|
+
// بررسی وضعیت فعلی subscription از SwPush و DB
|
|
8344
|
+
swPush.subscription.subscribe(async (sub) => {
|
|
8345
|
+
isSubscribed.set(!!sub);
|
|
8346
|
+
permission.set(Notification.permission);
|
|
8347
|
+
if (sub) {
|
|
8348
|
+
await handleNewSubscription(sub.toJSON());
|
|
8349
|
+
}
|
|
8350
|
+
});
|
|
8351
|
+
const addSubscriptionToServer = async (sub) => {
|
|
8352
|
+
const token2 = _localStorage.getItem(BarsaApi.LoginAction.token2StorageKey) ?? '';
|
|
8353
|
+
const options = {
|
|
8354
|
+
headers: new HttpHeaders({
|
|
8355
|
+
'Content-Type': 'application/json',
|
|
8356
|
+
sth: token2
|
|
8357
|
+
})
|
|
8358
|
+
};
|
|
8359
|
+
await lastValueFrom(http.post('/api/pushnotification/add', sub, options));
|
|
8360
|
+
};
|
|
8361
|
+
const deleteSubscriptionFromServer = async (sub) => {
|
|
8362
|
+
const token2 = _localStorage.getItem(BarsaApi.LoginAction.token2StorageKey) ?? '';
|
|
8363
|
+
const options = {
|
|
8364
|
+
headers: new HttpHeaders({
|
|
8365
|
+
'Content-Type': 'application/json',
|
|
8366
|
+
sth: token2
|
|
8367
|
+
})
|
|
8368
|
+
};
|
|
8369
|
+
await lastValueFrom(http.post('/api/pushnotification/delete', sub, options));
|
|
8370
|
+
};
|
|
8371
|
+
// subscribe فقط داخل gesture
|
|
8372
|
+
const subscribe = async () => {
|
|
8373
|
+
try {
|
|
8374
|
+
const publicKey = await lastValueFrom(http.get('/api/pushnotification/publickey', { responseType: 'text' }));
|
|
8375
|
+
const sub = await swPush.requestSubscription({ serverPublicKey: publicKey });
|
|
8376
|
+
const registration = await navigator.serviceWorker.ready;
|
|
8377
|
+
registration.active?.postMessage({ event: 'setVapidKey', publicKey });
|
|
8378
|
+
await addSubscriptionToServer(sub);
|
|
8379
|
+
await saveSubscription(sub);
|
|
8380
|
+
isSubscribed.set(true);
|
|
8381
|
+
permission.set(Notification.permission);
|
|
8382
|
+
bannerVisible.set(false);
|
|
8383
|
+
errorMessage.set(null);
|
|
8384
|
+
return sub;
|
|
8385
|
+
}
|
|
8386
|
+
catch (err) {
|
|
8387
|
+
console.error('Push subscribe error:', err);
|
|
8388
|
+
errorMessage.set(err?.message || 'خطا در فعالسازی Push');
|
|
8389
|
+
throw err;
|
|
8390
|
+
}
|
|
8391
|
+
};
|
|
8392
|
+
const unsubscribe = async () => {
|
|
8393
|
+
try {
|
|
8394
|
+
const sub = await lastValueFrom(swPush.subscription);
|
|
8395
|
+
if (!sub) {
|
|
8396
|
+
return;
|
|
8397
|
+
}
|
|
8398
|
+
swPush.unsubscribe();
|
|
8399
|
+
await deleteSubscriptionFromServer(sub);
|
|
8400
|
+
await sub.unsubscribe();
|
|
8401
|
+
await deleteSubscription();
|
|
8402
|
+
isSubscribed.set(false);
|
|
8403
|
+
errorMessage.set(null);
|
|
8404
|
+
}
|
|
8405
|
+
catch (err) {
|
|
8406
|
+
console.error('Push unsubscribe error:', err);
|
|
8407
|
+
errorMessage.set(err?.message || 'خطا در لغو اشتراک');
|
|
8408
|
+
}
|
|
8409
|
+
};
|
|
8410
|
+
return {
|
|
8411
|
+
bannerVisible,
|
|
8412
|
+
isSubscribed,
|
|
8413
|
+
permission,
|
|
8414
|
+
errorMessage,
|
|
8415
|
+
initPushBanner,
|
|
8416
|
+
subscribe,
|
|
8417
|
+
unsubscribe,
|
|
8418
|
+
handleNewSubscription,
|
|
8419
|
+
hideBanner
|
|
8420
|
+
};
|
|
8421
|
+
}
|
|
8422
|
+
|
|
8180
8423
|
class ServiceWorkerCommuncationService {
|
|
8181
8424
|
constructor() {
|
|
8425
|
+
this._toastService = inject(TOAST_SERVICE, { optional: true });
|
|
8182
8426
|
this._localStorage = inject(LocalStorageService);
|
|
8183
|
-
this._logService = inject(LogService);
|
|
8184
8427
|
this._portalService = inject(PortalService);
|
|
8185
|
-
this.
|
|
8186
|
-
this.
|
|
8428
|
+
this._pushCheckService = inject(PushCheckService);
|
|
8429
|
+
this._usePushNotification = usePushNotification();
|
|
8187
8430
|
}
|
|
8188
8431
|
get token2() {
|
|
8189
8432
|
return this._localStorage.getItem(BarsaApi.LoginAction.token2StorageKey) ?? '';
|
|
8190
8433
|
}
|
|
8191
|
-
get httpOptions() {
|
|
8192
|
-
return {
|
|
8193
|
-
headers: new HttpHeaders({
|
|
8194
|
-
'Content-Type': 'application/json',
|
|
8195
|
-
sth: this.token2
|
|
8196
|
-
})
|
|
8197
|
-
};
|
|
8198
|
-
}
|
|
8199
8434
|
init() {
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
this._handlePushUnSubscription(doReturn);
|
|
8203
|
-
}
|
|
8204
|
-
});
|
|
8435
|
+
this._subscribe();
|
|
8436
|
+
// register SW
|
|
8205
8437
|
if (!navigator.serviceWorker) {
|
|
8206
8438
|
return;
|
|
8207
8439
|
}
|
|
8208
|
-
navigator.serviceWorker.ready.then((
|
|
8209
|
-
if (
|
|
8210
|
-
this._serviceWorker =
|
|
8211
|
-
|
|
8440
|
+
navigator.serviceWorker.ready.then((reg) => {
|
|
8441
|
+
if (reg.active) {
|
|
8442
|
+
this._serviceWorker = reg.active;
|
|
8443
|
+
navigator.serviceWorker.addEventListener('message', (event) => {
|
|
8444
|
+
if (event.data?.event === 'subscriptionChanged') {
|
|
8445
|
+
this._usePushNotification.handleNewSubscription(event.data.subscription);
|
|
8446
|
+
}
|
|
8447
|
+
});
|
|
8212
8448
|
}
|
|
8213
8449
|
});
|
|
8214
|
-
|
|
8215
|
-
|
|
8216
|
-
|
|
8217
|
-
|
|
8218
|
-
|
|
8450
|
+
// user logout
|
|
8451
|
+
BarsaApi.Ul.ApplicationCtrlr.on({
|
|
8452
|
+
UserLoggedout: (_, doReturn) => this._handlePushUnSubscription(doReturn)
|
|
8453
|
+
});
|
|
8454
|
+
// automatic effect: update operationName based on subscription
|
|
8455
|
+
effect(() => {
|
|
8456
|
+
const sub = this._usePushNotification.isSubscribed();
|
|
8457
|
+
// اینجا میتونی متغیر operationName یا UI رو اتوماتیک آپدیت کنی
|
|
8458
|
+
console.log('Push subscription changed:', sub);
|
|
8459
|
+
});
|
|
8460
|
+
// automatic effect: show toast on errors
|
|
8461
|
+
effect(() => {
|
|
8462
|
+
const err = this._usePushNotification.errorMessage();
|
|
8463
|
+
if (err) {
|
|
8464
|
+
this.toast(err);
|
|
8465
|
+
}
|
|
8219
8466
|
});
|
|
8220
8467
|
}
|
|
8468
|
+
// فعالسازی push توسط gesture (مثلاً از UI)
|
|
8469
|
+
async subscribePush() {
|
|
8470
|
+
try {
|
|
8471
|
+
const check = await this._pushCheckService.checkPushReady();
|
|
8472
|
+
if (check !== true) {
|
|
8473
|
+
this.toast(check);
|
|
8474
|
+
return;
|
|
8475
|
+
}
|
|
8476
|
+
await this._usePushNotification.subscribe();
|
|
8477
|
+
this.toast('نوتیفیکیشن فعال شد');
|
|
8478
|
+
}
|
|
8479
|
+
catch (err) {
|
|
8480
|
+
console.error(err);
|
|
8481
|
+
this.toast('خطا در فعالسازی Push');
|
|
8482
|
+
}
|
|
8483
|
+
}
|
|
8221
8484
|
_subscribe() {
|
|
8222
8485
|
this._portalService.userLoggedIn$.pipe().subscribe((isLoggedIn) => this._isLoggedIn(isLoggedIn));
|
|
8223
8486
|
this._portalService.documentVisibilitychange$
|
|
8224
8487
|
.pipe()
|
|
8225
8488
|
.subscribe((visibilitychange) => this._visibilitychange(visibilitychange));
|
|
8226
|
-
this._handlePushSubscirption();
|
|
8227
8489
|
}
|
|
8228
8490
|
_setDefaultOptions() {
|
|
8229
8491
|
const token2 = this.token2;
|
|
@@ -8235,7 +8497,7 @@ class ServiceWorkerCommuncationService {
|
|
|
8235
8497
|
this._postServiceWorker({ event: 'isLoggedInChange', options: { isLoggedIn } });
|
|
8236
8498
|
if (isLoggedIn) {
|
|
8237
8499
|
this._setDefaultOptions();
|
|
8238
|
-
this.
|
|
8500
|
+
this._usePushNotification.initPushBanner();
|
|
8239
8501
|
}
|
|
8240
8502
|
}
|
|
8241
8503
|
_visibilitychange(documentIsHidden) {
|
|
@@ -8244,41 +8506,20 @@ class ServiceWorkerCommuncationService {
|
|
|
8244
8506
|
_postServiceWorker(message) {
|
|
8245
8507
|
// console.log(`post message to sw ${JSON.stringify(message, null, 2)}`);
|
|
8246
8508
|
if (!this._serviceWorker) {
|
|
8247
|
-
|
|
8509
|
+
console.warn(`service worker is undefined.`);
|
|
8248
8510
|
return;
|
|
8249
8511
|
}
|
|
8250
8512
|
this._serviceWorker.postMessage(message);
|
|
8251
8513
|
}
|
|
8252
|
-
|
|
8253
|
-
setTimeout(() => {
|
|
8254
|
-
this._httpClient.post('/api/pushnotification/send', subscription, this.httpOptions).subscribe();
|
|
8255
|
-
}, 5000);
|
|
8256
|
-
}
|
|
8257
|
-
_initPushSubscription() {
|
|
8258
|
-
this._httpClient
|
|
8259
|
-
.get('/api/pushnotification/publickey', { responseType: 'text' })
|
|
8260
|
-
.pipe(concatMap$1((publicKey) => from(this._swPush.requestSubscription({
|
|
8261
|
-
serverPublicKey: publicKey
|
|
8262
|
-
}))), concatMap$1((subscription) => this._httpClient.post('/api/pushnotification/add', subscription, this.httpOptions)), catchError$1((err) => {
|
|
8263
|
-
this._logService.error(err);
|
|
8264
|
-
return throwError(() => err);
|
|
8265
|
-
}))
|
|
8266
|
-
.subscribe();
|
|
8267
|
-
}
|
|
8514
|
+
// لغو push (هر زمان امکانپذیر است)
|
|
8268
8515
|
_handlePushUnSubscription(doReturn) {
|
|
8269
|
-
|
|
8270
|
-
|
|
8271
|
-
|
|
8272
|
-
this.
|
|
8273
|
-
.
|
|
8274
|
-
|
|
8275
|
-
|
|
8276
|
-
doReturn && doReturn();
|
|
8277
|
-
return throwError(() => new Error(err));
|
|
8278
|
-
}), finalize$1(() => {
|
|
8279
|
-
doReturn && doReturn();
|
|
8280
|
-
}))
|
|
8281
|
-
.subscribe();
|
|
8516
|
+
this._usePushNotification.unsubscribe().finally(() => doReturn && doReturn());
|
|
8517
|
+
}
|
|
8518
|
+
toast(msg) {
|
|
8519
|
+
if (!this._toastService) {
|
|
8520
|
+
return console.log(msg);
|
|
8521
|
+
}
|
|
8522
|
+
this._toastService.open(msg, { duration: 5000 });
|
|
8282
8523
|
}
|
|
8283
8524
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ServiceWorkerCommuncationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8284
8525
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ServiceWorkerCommuncationService }); }
|
|
@@ -8466,6 +8707,7 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
8466
8707
|
this.formmatedValue = new EventEmitter();
|
|
8467
8708
|
this.isMobile = getDeviceIsMobile();
|
|
8468
8709
|
this.isTablet = getDeviceIsTablet();
|
|
8710
|
+
this._rlt = true;
|
|
8469
8711
|
this.mobileConfig = {
|
|
8470
8712
|
title: 'انتخاب',
|
|
8471
8713
|
approveButtonText: 'تایید',
|
|
@@ -8492,6 +8734,7 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
8492
8734
|
this._valueChangedSource = new Subject();
|
|
8493
8735
|
this._disableChangedSource = new BehaviorSubject(false);
|
|
8494
8736
|
this._readonlyChangedSource = new BehaviorSubject(false);
|
|
8737
|
+
this._portalService.rtl$.pipe(takeUntil(this._onDestroy$)).subscribe((c) => (this._rlt = c));
|
|
8495
8738
|
this.refresh$ = this._refreshSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
8496
8739
|
this.value$ = this._valueChangedSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
8497
8740
|
this.deviceSize$ = this._portalService.deviceSize$;
|
|
@@ -8618,7 +8861,7 @@ class FieldBaseComponent extends BaseComponent {
|
|
|
8618
8861
|
}
|
|
8619
8862
|
}
|
|
8620
8863
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FieldBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8621
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FieldBaseComponent, isStandalone: false, selector: "bnrc-field-base", inputs: { context: "context", focusControl: "focusControl", layoutInfo: "layoutInfo", value: "value", width: "width", height: "height", formHeight: "formHeight", inlineEdit: "inlineEdit", cellEdit: "cellEdit", formContainer: "formContainer", id: "id", parametes: "parametes" }, outputs: { valueChange: "valueChange", formmatedValue: "formmatedValue" }, host: { properties: { "class.isMobile": "this.isMobile", "class.isTablet": "this.isTablet" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
8864
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FieldBaseComponent, isStandalone: false, selector: "bnrc-field-base", inputs: { context: "context", focusControl: "focusControl", layoutInfo: "layoutInfo", value: "value", width: "width", height: "height", formHeight: "formHeight", inlineEdit: "inlineEdit", cellEdit: "cellEdit", formContainer: "formContainer", id: "id", parametes: "parametes" }, outputs: { valueChange: "valueChange", formmatedValue: "formmatedValue" }, host: { properties: { "class.isMobile": "this.isMobile", "class.isTablet": "this.isTablet", "class.rtl": "this._rlt" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
8622
8865
|
}
|
|
8623
8866
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FieldBaseComponent, decorators: [{
|
|
8624
8867
|
type: Component,
|
|
@@ -8662,6 +8905,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
8662
8905
|
}], isTablet: [{
|
|
8663
8906
|
type: HostBinding,
|
|
8664
8907
|
args: ['class.isTablet']
|
|
8908
|
+
}], _rlt: [{
|
|
8909
|
+
type: HostBinding,
|
|
8910
|
+
args: ['class.rtl']
|
|
8665
8911
|
}] } });
|
|
8666
8912
|
|
|
8667
8913
|
class FormBaseComponent extends BaseComponent {
|
|
@@ -9235,7 +9481,6 @@ class LayoutItemBaseComponent extends BaseComponent {
|
|
|
9235
9481
|
super();
|
|
9236
9482
|
this.formPanelService = inject(FormPanelService);
|
|
9237
9483
|
this._cdr = inject(ChangeDetectorRef);
|
|
9238
|
-
this.id = getUniqueId(4);
|
|
9239
9484
|
this.formPanelService.isSearchPanel$.subscribe((isSearchPanel) => {
|
|
9240
9485
|
this.isSearchPanel = isSearchPanel;
|
|
9241
9486
|
});
|
|
@@ -9246,6 +9491,10 @@ class LayoutItemBaseComponent extends BaseComponent {
|
|
|
9246
9491
|
this.searchPanelIsObject = searchPanelIsObject;
|
|
9247
9492
|
});
|
|
9248
9493
|
}
|
|
9494
|
+
ngOnInit() {
|
|
9495
|
+
super.ngOnInit();
|
|
9496
|
+
this.id = this.config.id;
|
|
9497
|
+
}
|
|
9249
9498
|
ngOnChanges(changes) {
|
|
9250
9499
|
super.ngOnChanges(changes);
|
|
9251
9500
|
const { maxLabelWidth } = changes;
|
|
@@ -9254,7 +9503,7 @@ class LayoutItemBaseComponent extends BaseComponent {
|
|
|
9254
9503
|
}
|
|
9255
9504
|
}
|
|
9256
9505
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutItemBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: LayoutItemBaseComponent, isStandalone: false, selector: "bnrc-layout-item-base", inputs: { config: "config", isPanel: "isPanel", maxLabelWidth: "maxLabelWidth", rtl: "rtl" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9506
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: LayoutItemBaseComponent, isStandalone: false, selector: "bnrc-layout-item-base", inputs: { config: "config", isPanel: "isPanel", maxLabelWidth: "maxLabelWidth", rtl: "rtl" }, host: { properties: { "attr.id": "this.id" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9258
9507
|
}
|
|
9259
9508
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutItemBaseComponent, decorators: [{
|
|
9260
9509
|
type: Component,
|
|
@@ -9264,7 +9513,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9264
9513
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9265
9514
|
standalone: false
|
|
9266
9515
|
}]
|
|
9267
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
9516
|
+
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
9517
|
+
type: HostBinding,
|
|
9518
|
+
args: ['attr.id']
|
|
9519
|
+
}], config: [{
|
|
9268
9520
|
type: Input
|
|
9269
9521
|
}], isPanel: [{
|
|
9270
9522
|
type: Input
|
|
@@ -9278,21 +9530,40 @@ class LayoutPanelBaseComponent extends LayoutItemBaseComponent {
|
|
|
9278
9530
|
constructor() {
|
|
9279
9531
|
super();
|
|
9280
9532
|
this.layoutControlCount = 0;
|
|
9281
|
-
this.
|
|
9282
|
-
this.
|
|
9283
|
-
|
|
9533
|
+
this.visible = true;
|
|
9534
|
+
this._renderer2 = inject(Renderer2);
|
|
9535
|
+
this._portalService = inject(PortalService);
|
|
9536
|
+
this._layoutService = inject(LayoutService, { self: true });
|
|
9537
|
+
const layoutService = this._layoutService;
|
|
9284
9538
|
this.id = getUniqueId(4);
|
|
9285
9539
|
layoutService.id = 'panel' + this.id;
|
|
9286
9540
|
this.formPanelService.isSearchPanel$.subscribe((isSearchPanel) => {
|
|
9287
9541
|
this.isSearchPanel = isSearchPanel;
|
|
9288
9542
|
});
|
|
9543
|
+
this.formPanelService.groupLayout$
|
|
9544
|
+
.pipe(takeUntil$1(this._onDestroy$), filter$1((c) => c.ControlId === this.config.ControlId))
|
|
9545
|
+
.subscribe((_groupItem) => {
|
|
9546
|
+
this._setBRule();
|
|
9547
|
+
});
|
|
9289
9548
|
}
|
|
9290
9549
|
ngOnInit() {
|
|
9291
9550
|
super.ngOnInit();
|
|
9551
|
+
this._setBRule();
|
|
9292
9552
|
this.formPanelService.formContainerDom = this.parentDom;
|
|
9293
|
-
this.maxLabelWidth$ = this.
|
|
9553
|
+
this.maxLabelWidth$ = this._layoutService.maxWidth$;
|
|
9294
9554
|
this._calcWidth(this.config);
|
|
9295
9555
|
}
|
|
9556
|
+
_setBRule() {
|
|
9557
|
+
this.visible = this.config.Visible === false ? false : true;
|
|
9558
|
+
this.readonly = this.config.Readonly === false ? false : true;
|
|
9559
|
+
this.enable = this.config.Enable === false ? false : true;
|
|
9560
|
+
if (this.enable) {
|
|
9561
|
+
this._renderer2.removeClass(this._el.nativeElement, 'control-disabled');
|
|
9562
|
+
}
|
|
9563
|
+
else {
|
|
9564
|
+
this._renderer2.addClass(this._el.nativeElement, 'control-disabled');
|
|
9565
|
+
}
|
|
9566
|
+
}
|
|
9296
9567
|
_calcWidth(config) {
|
|
9297
9568
|
config.items.forEach((item) => {
|
|
9298
9569
|
switch (item.xtype) {
|
|
@@ -9309,7 +9580,7 @@ class LayoutPanelBaseComponent extends LayoutItemBaseComponent {
|
|
|
9309
9580
|
_setLabelWidth(item) {
|
|
9310
9581
|
const controlWidth = getLabelWidth(item);
|
|
9311
9582
|
if (controlWidth) {
|
|
9312
|
-
this.
|
|
9583
|
+
this._layoutService.setMaxWidth(controlWidth);
|
|
9313
9584
|
}
|
|
9314
9585
|
}
|
|
9315
9586
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutPanelBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -9345,8 +9616,8 @@ class ContainerComponent extends BaseComponent {
|
|
|
9345
9616
|
this._cdr = inject(ChangeDetectorRef);
|
|
9346
9617
|
this._renderer2 = inject(Renderer2);
|
|
9347
9618
|
this._dialogService = inject(DIALOG_SERVICE, { optional: true });
|
|
9348
|
-
this._containerServiceParent = inject(ContainerService, { self:
|
|
9349
|
-
this._containerService = inject(ContainerService);
|
|
9619
|
+
this._containerServiceParent = inject(ContainerService, { self: false, optional: true });
|
|
9620
|
+
this._containerService = inject(ContainerService, { self: true, optional: true });
|
|
9350
9621
|
this._formDialogComponent = inject(FORM_DIALOG_COMPONENT, { optional: true });
|
|
9351
9622
|
this.oldContainerContainer = this._barsaDialogService.containerComponent;
|
|
9352
9623
|
this._barsaDialogService.containerComponent = this;
|
|
@@ -9388,7 +9659,7 @@ class ContainerComponent extends BaseComponent {
|
|
|
9388
9659
|
}
|
|
9389
9660
|
}
|
|
9390
9661
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9391
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ContainerComponent, isStandalone: false, selector: "bnrc-container", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9662
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: ContainerComponent, isStandalone: false, selector: "bnrc-container", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "containerBottomRef", first: true, predicate: ["containerBottomRef"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9392
9663
|
}
|
|
9393
9664
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerComponent, decorators: [{
|
|
9394
9665
|
type: Component,
|
|
@@ -9401,6 +9672,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
9401
9672
|
}], ctorParameters: () => [], propDecorators: { containerRef: [{
|
|
9402
9673
|
type: ViewChild,
|
|
9403
9674
|
args: ['containerRef', { static: true, read: ViewContainerRef }]
|
|
9675
|
+
}], containerBottomRef: [{
|
|
9676
|
+
type: ViewChild,
|
|
9677
|
+
args: ['containerBottomRef', { static: true, read: ViewContainerRef }]
|
|
9404
9678
|
}] } });
|
|
9405
9679
|
|
|
9406
9680
|
class PageBaseComponent extends ContainerComponent {
|
|
@@ -9412,7 +9686,7 @@ class PageBaseComponent extends ContainerComponent {
|
|
|
9412
9686
|
}
|
|
9413
9687
|
ngAfterViewInit() {
|
|
9414
9688
|
super.ngAfterViewInit();
|
|
9415
|
-
this._containerService
|
|
9689
|
+
this._containerService?.state === 'attach' && this.addModulesToDom();
|
|
9416
9690
|
this._containerService?.addModules.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.addModulesToDom());
|
|
9417
9691
|
}
|
|
9418
9692
|
addModulesToDom() {
|
|
@@ -9468,8 +9742,12 @@ class PageBaseComponent extends ContainerComponent {
|
|
|
9468
9742
|
.pipe(takeUntil(this._onDestroy$), concatMap((module) => this.getComponentFactory(module.Component).pipe(tap((controlUi) => {
|
|
9469
9743
|
controlUi.instance.settings = module.Component.Settings;
|
|
9470
9744
|
controlUi.instance.activatedRoute = this._activatedRoute;
|
|
9471
|
-
|
|
9472
|
-
|
|
9745
|
+
let containerRef = this.containerRef;
|
|
9746
|
+
if (module.ContainerRef && this[module.ContainerRef]) {
|
|
9747
|
+
containerRef = this[module.ContainerRef];
|
|
9748
|
+
} // توسط ماژول مشخص شده کامپوننت در کدام کانتینر پیج قرار گیرد
|
|
9749
|
+
if (containerRef) {
|
|
9750
|
+
containerRef.insert(controlUi.hostView);
|
|
9473
9751
|
}
|
|
9474
9752
|
else {
|
|
9475
9753
|
this._vcr.insert(controlUi.hostView);
|
|
@@ -9529,11 +9807,14 @@ class NumberBaseComponent extends FieldBaseComponent {
|
|
|
9529
9807
|
const isValid = new RegExp('^[0-9,.,-]*$').test(e.currentTarget.value + e.key);
|
|
9530
9808
|
if (!isValid || e.key === '.') {
|
|
9531
9809
|
if (e.key === '.' && this.inputElement && this.decimalPrecision > 0) {
|
|
9532
|
-
const
|
|
9533
|
-
|
|
9810
|
+
const indexOfDot = this.inputElement.value.indexOf('.');
|
|
9811
|
+
if (indexOfDot > -1) {
|
|
9812
|
+
this._setCursorPosition(indexOfDot + 1);
|
|
9813
|
+
e.preventDefault();
|
|
9814
|
+
e.stopPropagation();
|
|
9815
|
+
return;
|
|
9816
|
+
}
|
|
9534
9817
|
}
|
|
9535
|
-
e.preventDefault();
|
|
9536
|
-
e.stopPropagation();
|
|
9537
9818
|
}
|
|
9538
9819
|
else if (isValid && this.inputElement) {
|
|
9539
9820
|
// در صورتی که عدد قبل از منفی قرار گیرد
|
|
@@ -9559,7 +9840,7 @@ class NumberBaseComponent extends FieldBaseComponent {
|
|
|
9559
9840
|
}
|
|
9560
9841
|
_updateBySetting() {
|
|
9561
9842
|
if (this.inputElement) {
|
|
9562
|
-
const formated = this._getFormated(this.value).toString();
|
|
9843
|
+
const formated = this._getFormated(this.value?.toString()).toString();
|
|
9563
9844
|
this.inputElement.value = formated;
|
|
9564
9845
|
}
|
|
9565
9846
|
this.hasMask =
|
|
@@ -9591,7 +9872,17 @@ class NumberBaseComponent extends FieldBaseComponent {
|
|
|
9591
9872
|
return false;
|
|
9592
9873
|
}
|
|
9593
9874
|
_getFormated(val) {
|
|
9594
|
-
|
|
9875
|
+
let decimalPersicion = 0;
|
|
9876
|
+
const indexOfDot = val.indexOf('.');
|
|
9877
|
+
if (indexOfDot > 0 && this.decimalPrecision) {
|
|
9878
|
+
decimalPersicion = val.length - indexOfDot - 1;
|
|
9879
|
+
decimalPersicion = decimalPersicion > this.decimalPrecision ? this.decimalPrecision : decimalPersicion;
|
|
9880
|
+
}
|
|
9881
|
+
let newVal = this._numeralPipe.transform(val, decimalPersicion, this.Setting.ShowThousandSeperator).toString();
|
|
9882
|
+
if (this.decimalPrecision && decimalPersicion === 0 && val.endsWith('.')) {
|
|
9883
|
+
newVal += '.';
|
|
9884
|
+
}
|
|
9885
|
+
return newVal;
|
|
9595
9886
|
}
|
|
9596
9887
|
_setCursorPosition(cursorPosition) {
|
|
9597
9888
|
if (this.inputElement) {
|
|
@@ -9611,9 +9902,19 @@ class NumberBaseComponent extends FieldBaseComponent {
|
|
|
9611
9902
|
if (value === +elValue) {
|
|
9612
9903
|
return;
|
|
9613
9904
|
}
|
|
9614
|
-
const formated = this._getFormated(value);
|
|
9905
|
+
const formated = this._getFormated(value.toString());
|
|
9615
9906
|
e.target.value = formated;
|
|
9616
9907
|
}
|
|
9908
|
+
_setTargetToFormatedValue(target, formated, isMinus) {
|
|
9909
|
+
if (!target) {
|
|
9910
|
+
return 0;
|
|
9911
|
+
}
|
|
9912
|
+
const oldVal = target.value;
|
|
9913
|
+
if (target.value !== formated) {
|
|
9914
|
+
target.value = this._getMinusValue(isMinus, formated);
|
|
9915
|
+
}
|
|
9916
|
+
return formated.length > oldVal.length ? formated.length - oldVal.length : oldVal.length - target.value.length;
|
|
9917
|
+
}
|
|
9617
9918
|
reFormatValue(text, e) {
|
|
9618
9919
|
let newVal;
|
|
9619
9920
|
if (typeof text === 'number') {
|
|
@@ -9632,7 +9933,7 @@ class NumberBaseComponent extends FieldBaseComponent {
|
|
|
9632
9933
|
let indexofDot = text.indexOf('.');
|
|
9633
9934
|
const selectionStart = this.inputElement?.selectionStart;
|
|
9634
9935
|
const decimalPersicion = this.decimalPrecision;
|
|
9635
|
-
if (decimalPersicion) {
|
|
9936
|
+
if (decimalPersicion && indexofDot > 0) {
|
|
9636
9937
|
const t = text.length - (indexofDot + 1);
|
|
9637
9938
|
if (t > decimalPersicion) {
|
|
9638
9939
|
const diff = t - decimalPersicion;
|
|
@@ -9665,12 +9966,10 @@ class NumberBaseComponent extends FieldBaseComponent {
|
|
|
9665
9966
|
diff = indexOfDotFormated - indexofDot;
|
|
9666
9967
|
cursorPosition += diff;
|
|
9667
9968
|
}
|
|
9668
|
-
|
|
9669
|
-
|
|
9670
|
-
|
|
9671
|
-
|
|
9672
|
-
e.target.value = this._getMinusValue(isMinus, formated);
|
|
9673
|
-
}
|
|
9969
|
+
const diff1 = this._setTargetToFormatedValue(this.inputElement, formated, isMinus);
|
|
9970
|
+
const diff2 = this._setTargetToFormatedValue(e.traget, formated, isMinus);
|
|
9971
|
+
cursorPosition && (cursorPosition += diff1);
|
|
9972
|
+
cursorPosition && (cursorPosition += diff2);
|
|
9674
9973
|
this._setCursorPosition(cursorPosition);
|
|
9675
9974
|
}
|
|
9676
9975
|
else {
|
|
@@ -11508,20 +11807,20 @@ class PortalPageComponent extends PageWithFormHandlerBaseComponent {
|
|
|
11508
11807
|
super(...arguments);
|
|
11509
11808
|
this._routingService = inject(RoutingService);
|
|
11510
11809
|
}
|
|
11810
|
+
ngOnInit() {
|
|
11811
|
+
super.ngOnInit();
|
|
11812
|
+
this.addModulesToDom();
|
|
11813
|
+
}
|
|
11511
11814
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PortalPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
11512
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: PortalPageComponent, isStandalone: false, selector: "bnrc-portal-page", providers: [RoutingService
|
|
11513
|
-
><router-outlet name="dialog"></router-outlet
|
|
11815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: PortalPageComponent, isStandalone: false, selector: "bnrc-portal-page", providers: [RoutingService], usesInheritance: true, ngImport: i0, template: `<ng-container #containerRef></ng-container> <router-outlet></router-outlet
|
|
11816
|
+
><router-outlet name="dialog"></router-outlet>
|
|
11817
|
+
<ng-container #containerBottomRef></ng-container> `, isInline: true, styles: [":host{min-height:100svh}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11514
11818
|
}
|
|
11515
11819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PortalPageComponent, decorators: [{
|
|
11516
11820
|
type: Component,
|
|
11517
|
-
args: [{
|
|
11518
|
-
|
|
11519
|
-
|
|
11520
|
-
><router-outlet name="dialog"></router-outlet>`,
|
|
11521
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11522
|
-
providers: [RoutingService, ContainerService],
|
|
11523
|
-
standalone: false
|
|
11524
|
-
}]
|
|
11821
|
+
args: [{ selector: 'bnrc-portal-page', template: `<ng-container #containerRef></ng-container> <router-outlet></router-outlet
|
|
11822
|
+
><router-outlet name="dialog"></router-outlet>
|
|
11823
|
+
<ng-container #containerBottomRef></ng-container> `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, styles: [":host{min-height:100svh}\n"] }]
|
|
11525
11824
|
}] });
|
|
11526
11825
|
|
|
11527
11826
|
class FillEmptySpaceDirective extends BaseDirective {
|
|
@@ -12466,6 +12765,12 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
|
|
|
12466
12765
|
_setSavingState(err) {
|
|
12467
12766
|
if (err) {
|
|
12468
12767
|
this.hasError = true;
|
|
12768
|
+
this._handleBruleShowMessageAction({
|
|
12769
|
+
MessageExpression: err.Text,
|
|
12770
|
+
MessageType: 2,
|
|
12771
|
+
MessageExpressionHtml: err.Text,
|
|
12772
|
+
EscapeCharacters: true
|
|
12773
|
+
});
|
|
12469
12774
|
return;
|
|
12470
12775
|
}
|
|
12471
12776
|
this.hasError = false;
|
|
@@ -12908,6 +13213,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
12908
13213
|
args: [{ selector: 'bnrc-unlimit-session', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "", styles: [":host{background:#191919 -webkit-linear-gradient(top,#000 0%,#191919 100%) no-repeat;background:#191919 linear-gradient(to bottom,#000,#191919) no-repeat;text-align:center}:host h1,:host h2{font-weight:400}:host h1{margin:0 auto;padding:.15em;font-size:10em;text-shadow:0 2px 2px #000}:host h2{margin-bottom:2em}\n"] }]
|
|
12909
13214
|
}] });
|
|
12910
13215
|
|
|
13216
|
+
class PushBannerComponent {
|
|
13217
|
+
constructor() {
|
|
13218
|
+
this.push = usePushNotification();
|
|
13219
|
+
}
|
|
13220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13221
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: PushBannerComponent, isStandalone: false, selector: "bnrc-push-banner", ngImport: i0, template: `
|
|
13222
|
+
@if(push.bannerVisible()){
|
|
13223
|
+
<div class="push-banner">
|
|
13224
|
+
<div class="text">
|
|
13225
|
+
<b>فعالسازی اعلانها</b>
|
|
13226
|
+
<p>برای دریافت پیامها و رویدادهای مهم، اعلانها را فعال کنید.</p>
|
|
13227
|
+
</div>
|
|
13228
|
+
<div class="actions">
|
|
13229
|
+
<button class="btn enable" (click)="push.subscribe()">فعالسازی</button>
|
|
13230
|
+
<button class="btn later" (click)="push.hideBanner()">بعداً</button>
|
|
13231
|
+
</div>
|
|
13232
|
+
@if(push.errorMessage()){
|
|
13233
|
+
<p class="error">{{ push.errorMessage() }}</p>
|
|
13234
|
+
}
|
|
13235
|
+
</div>
|
|
13236
|
+
}
|
|
13237
|
+
`, isInline: true, styles: [".push-banner{position:fixed;bottom:0;left:0;right:0;background:#fff;border-radius:12px 12px 0 0;box-shadow:0 -4px 16px #00000026;padding:16px;display:flex;flex-direction:column;gap:8px;z-index:9999}.actions{display:flex;gap:8px}.btn.enable{background:#25d366;color:#fff;border-radius:8px;padding:8px 12px;border:none}.btn.later{background:transparent;color:#666;border:none;padding:8px 12px}.error{color:red;font-size:13px}\n"] }); }
|
|
13238
|
+
}
|
|
13239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushBannerComponent, decorators: [{
|
|
13240
|
+
type: Component,
|
|
13241
|
+
args: [{ selector: 'bnrc-push-banner', standalone: false, template: `
|
|
13242
|
+
@if(push.bannerVisible()){
|
|
13243
|
+
<div class="push-banner">
|
|
13244
|
+
<div class="text">
|
|
13245
|
+
<b>فعالسازی اعلانها</b>
|
|
13246
|
+
<p>برای دریافت پیامها و رویدادهای مهم، اعلانها را فعال کنید.</p>
|
|
13247
|
+
</div>
|
|
13248
|
+
<div class="actions">
|
|
13249
|
+
<button class="btn enable" (click)="push.subscribe()">فعالسازی</button>
|
|
13250
|
+
<button class="btn later" (click)="push.hideBanner()">بعداً</button>
|
|
13251
|
+
</div>
|
|
13252
|
+
@if(push.errorMessage()){
|
|
13253
|
+
<p class="error">{{ push.errorMessage() }}</p>
|
|
13254
|
+
}
|
|
13255
|
+
</div>
|
|
13256
|
+
}
|
|
13257
|
+
`, styles: [".push-banner{position:fixed;bottom:0;left:0;right:0;background:#fff;border-radius:12px 12px 0 0;box-shadow:0 -4px 16px #00000026;padding:16px;display:flex;flex-direction:column;gap:8px;z-index:9999}.actions{display:flex;gap:8px}.btn.enable{background:#25d366;color:#fff;border-radius:8px;padding:8px 12px;border:none}.btn.later{background:transparent;color:#666;border:none;padding:8px 12px}.error{color:red;font-size:13px}\n"] }]
|
|
13258
|
+
}] });
|
|
13259
|
+
|
|
12911
13260
|
class LoadExternalFilesDirective {
|
|
12912
13261
|
constructor() {
|
|
12913
13262
|
this._renderer2 = inject(Renderer2);
|
|
@@ -13094,7 +13443,8 @@ class RootPortalComponent extends PageBaseComponent {
|
|
|
13094
13443
|
@if(pageData?.UnlimitSession==='True'){
|
|
13095
13444
|
<bnrc-unlimit-session></bnrc-unlimit-session>
|
|
13096
13445
|
}
|
|
13097
|
-
|
|
13446
|
+
<bnrc-push-banner></bnrc-push-banner>
|
|
13447
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: UnlimitSessionComponent, selector: "bnrc-unlimit-session" }, { kind: "component", type: PushBannerComponent, selector: "bnrc-push-banner" }, { kind: "directive", type: LoadExternalFilesDirective, selector: "[loadExternalFiles]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13098
13448
|
}
|
|
13099
13449
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: RootPortalComponent, decorators: [{
|
|
13100
13450
|
type: Component,
|
|
@@ -13166,6 +13516,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
13166
13516
|
@if(pageData?.UnlimitSession==='True'){
|
|
13167
13517
|
<bnrc-unlimit-session></bnrc-unlimit-session>
|
|
13168
13518
|
}
|
|
13519
|
+
<bnrc-push-banner></bnrc-push-banner>
|
|
13169
13520
|
`,
|
|
13170
13521
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13171
13522
|
providers: [ContainerService],
|
|
@@ -14510,45 +14861,19 @@ class DynamicStyleDirective extends BaseDirective {
|
|
|
14510
14861
|
}
|
|
14511
14862
|
ngOnInit() {
|
|
14512
14863
|
super.ngOnInit();
|
|
14513
|
-
this.
|
|
14864
|
+
this._style = AddDynamicFormStyles(this.id, this.cssStyle);
|
|
14514
14865
|
}
|
|
14515
14866
|
ngOnChanges(changes) {
|
|
14516
14867
|
super.ngOnChanges(changes);
|
|
14517
14868
|
const { cssStyle } = changes;
|
|
14518
14869
|
if (cssStyle && !cssStyle.firstChange) {
|
|
14519
|
-
this.
|
|
14520
|
-
this.
|
|
14870
|
+
RemoveDynamicFormStyles(this._style);
|
|
14871
|
+
this._style = AddDynamicFormStyles(this.id, cssStyle.currentValue);
|
|
14521
14872
|
}
|
|
14522
14873
|
}
|
|
14523
14874
|
ngOnDestroy() {
|
|
14524
14875
|
super.ngOnDestroy();
|
|
14525
|
-
this.
|
|
14526
|
-
}
|
|
14527
|
-
_addDynamicFormStyles(cssStyles) {
|
|
14528
|
-
if (!cssStyles) {
|
|
14529
|
-
return;
|
|
14530
|
-
}
|
|
14531
|
-
cssStyles = cssStyles.replace(/:root/gi, `#${this.id}`);
|
|
14532
|
-
cssStyles = cssStyles.replace(/:html/gi, `:root`);
|
|
14533
|
-
const head = document.head || document.getElementsByTagName('head')[0];
|
|
14534
|
-
const style = document.createElement('style');
|
|
14535
|
-
head.appendChild(style);
|
|
14536
|
-
style.type = 'text/css';
|
|
14537
|
-
if (style.styleSheet) {
|
|
14538
|
-
// This is required for IE8 and below.
|
|
14539
|
-
style.styleSheet.cssText = cssStyles;
|
|
14540
|
-
}
|
|
14541
|
-
else {
|
|
14542
|
-
style.appendChild(document.createTextNode(cssStyles));
|
|
14543
|
-
}
|
|
14544
|
-
this._style = style;
|
|
14545
|
-
}
|
|
14546
|
-
_removeDynamicFormStyles() {
|
|
14547
|
-
if (!this._style) {
|
|
14548
|
-
return;
|
|
14549
|
-
}
|
|
14550
|
-
const head = document.head || document.getElementsByTagName('head')[0];
|
|
14551
|
-
head.removeChild(this._style);
|
|
14876
|
+
RemoveDynamicFormStyles(this._style);
|
|
14552
14877
|
}
|
|
14553
14878
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicStyleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14554
14879
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: DynamicStyleDirective, isStandalone: false, selector: "[cssStyle]", inputs: { cssStyle: "cssStyle" }, host: { properties: { "attr.id": "this.id" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
@@ -15583,6 +15908,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
15583
15908
|
type: Input
|
|
15584
15909
|
}] } });
|
|
15585
15910
|
|
|
15911
|
+
class SafeBottomDirective extends BaseDirective {
|
|
15912
|
+
constructor() {
|
|
15913
|
+
super(...arguments);
|
|
15914
|
+
this.isMobile = getDeviceIsMobile();
|
|
15915
|
+
}
|
|
15916
|
+
ngOnInit() {
|
|
15917
|
+
super.ngOnInit();
|
|
15918
|
+
if (!this.isMobile) {
|
|
15919
|
+
return;
|
|
15920
|
+
}
|
|
15921
|
+
let cls = this.disableBottom ? '' : 'safe-bottom-area-env';
|
|
15922
|
+
this.applyTop && (cls += 'safe-top-area-env');
|
|
15923
|
+
let clsNonStandlalone = this.disableBottom ? '' : 'safe-bottom-padding';
|
|
15924
|
+
this.applyTop && (clsNonStandlalone += 'safe-top-padding');
|
|
15925
|
+
const isStandAlone = !document.body.classList.contains('noStandalone');
|
|
15926
|
+
if (isStandAlone) {
|
|
15927
|
+
this._renderer2.addClass(this._el.nativeElement, cls);
|
|
15928
|
+
}
|
|
15929
|
+
else {
|
|
15930
|
+
this._renderer2.addClass(this._el.nativeElement, clsNonStandlalone);
|
|
15931
|
+
}
|
|
15932
|
+
}
|
|
15933
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SafeBottomDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15934
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: SafeBottomDirective, isStandalone: false, selector: "[safe-area]", inputs: { applyTop: "applyTop", disableBottom: "disableBottom" }, usesInheritance: true, ngImport: i0 }); }
|
|
15935
|
+
}
|
|
15936
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SafeBottomDirective, decorators: [{
|
|
15937
|
+
type: Directive,
|
|
15938
|
+
args: [{
|
|
15939
|
+
selector: '[safe-area]',
|
|
15940
|
+
standalone: false
|
|
15941
|
+
}]
|
|
15942
|
+
}], propDecorators: { applyTop: [{
|
|
15943
|
+
type: Input
|
|
15944
|
+
}], disableBottom: [{
|
|
15945
|
+
type: Input
|
|
15946
|
+
}] } });
|
|
15947
|
+
|
|
15586
15948
|
class PortalDynamicPageResolver {
|
|
15587
15949
|
/** Inserted by Angular inject() migration for backwards compatibility */
|
|
15588
15950
|
constructor() {
|
|
@@ -15726,7 +16088,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
15726
16088
|
class FormNewComponent extends BaseComponent {
|
|
15727
16089
|
constructor() {
|
|
15728
16090
|
super(...arguments);
|
|
15729
|
-
this.
|
|
16091
|
+
this._router = inject(Router);
|
|
16092
|
+
this._activatedRoute = inject(ActivatedRoute);
|
|
15730
16093
|
}
|
|
15731
16094
|
ngOnInit() {
|
|
15732
16095
|
super.ngOnInit();
|
|
@@ -15736,7 +16099,10 @@ class FormNewComponent extends BaseComponent {
|
|
|
15736
16099
|
this.params = { moId, typeDefId, viewId };
|
|
15737
16100
|
}
|
|
15738
16101
|
onFormClose() {
|
|
15739
|
-
this.
|
|
16102
|
+
this._router.navigate(['../'], {
|
|
16103
|
+
relativeTo: this._activatedRoute,
|
|
16104
|
+
replaceUrl: true
|
|
16105
|
+
});
|
|
15740
16106
|
}
|
|
15741
16107
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FormNewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15742
16108
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: FormNewComponent, isStandalone: false, selector: "bnrc-form-new", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '<bnrc-form [params]="params" (formClose)="onFormClose()"></bnrc-form>', isInline: true, dependencies: [{ kind: "component", type: FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "directive", type: FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -16669,7 +17035,8 @@ const components = [
|
|
|
16669
17035
|
FormFieldReportPageComponent,
|
|
16670
17036
|
ButtonLoadingComponent,
|
|
16671
17037
|
UnlimitSessionComponent,
|
|
16672
|
-
DynamicTileGroupComponent
|
|
17038
|
+
DynamicTileGroupComponent,
|
|
17039
|
+
PushBannerComponent
|
|
16673
17040
|
];
|
|
16674
17041
|
const directives = [
|
|
16675
17042
|
PlaceHolderDirective,
|
|
@@ -16722,7 +17089,8 @@ const directives = [
|
|
|
16722
17089
|
TooltipDirective,
|
|
16723
17090
|
SimplebarDirective,
|
|
16724
17091
|
LeafletLongPressDirective,
|
|
16725
|
-
ResizeHandlerDirective
|
|
17092
|
+
ResizeHandlerDirective,
|
|
17093
|
+
SafeBottomDirective
|
|
16726
17094
|
];
|
|
16727
17095
|
const services = [
|
|
16728
17096
|
PortalService,
|
|
@@ -16927,7 +17295,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
16927
17295
|
FormFieldReportPageComponent,
|
|
16928
17296
|
ButtonLoadingComponent,
|
|
16929
17297
|
UnlimitSessionComponent,
|
|
16930
|
-
DynamicTileGroupComponent,
|
|
17298
|
+
DynamicTileGroupComponent,
|
|
17299
|
+
PushBannerComponent, NumeralPipe,
|
|
16931
17300
|
CanUploadFilePipe,
|
|
16932
17301
|
RemoveNewlinePipe,
|
|
16933
17302
|
ConvertToStylePipe,
|
|
@@ -17034,7 +17403,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
17034
17403
|
TooltipDirective,
|
|
17035
17404
|
SimplebarDirective,
|
|
17036
17405
|
LeafletLongPressDirective,
|
|
17037
|
-
ResizeHandlerDirective
|
|
17406
|
+
ResizeHandlerDirective,
|
|
17407
|
+
SafeBottomDirective], imports: [CommonModule,
|
|
17038
17408
|
BarsaNovinRayCoreRoutingModule,
|
|
17039
17409
|
BarsaSapUiFormPageModule,
|
|
17040
17410
|
ResizableModule,
|
|
@@ -17062,7 +17432,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
17062
17432
|
FormFieldReportPageComponent,
|
|
17063
17433
|
ButtonLoadingComponent,
|
|
17064
17434
|
UnlimitSessionComponent,
|
|
17065
|
-
DynamicTileGroupComponent,
|
|
17435
|
+
DynamicTileGroupComponent,
|
|
17436
|
+
PushBannerComponent, NumeralPipe,
|
|
17066
17437
|
CanUploadFilePipe,
|
|
17067
17438
|
RemoveNewlinePipe,
|
|
17068
17439
|
ConvertToStylePipe,
|
|
@@ -17169,7 +17540,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
|
|
|
17169
17540
|
TooltipDirective,
|
|
17170
17541
|
SimplebarDirective,
|
|
17171
17542
|
LeafletLongPressDirective,
|
|
17172
|
-
ResizeHandlerDirective
|
|
17543
|
+
ResizeHandlerDirective,
|
|
17544
|
+
SafeBottomDirective] }); }
|
|
17173
17545
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaNovinRayCoreModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
17174
17546
|
BarsaNovinRayCoreRoutingModule,
|
|
17175
17547
|
BarsaSapUiFormPageModule,
|
|
@@ -17199,5 +17571,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
17199
17571
|
* Generated bundle index. Do not edit.
|
|
17200
17572
|
*/
|
|
17201
17573
|
|
|
17202
|
-
export { APP_VERSION, AbsoluteDivBodyDirective, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, ApplicationCtrlrService, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaReadonlyDirective, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, CardMediaSizePipe, ChangeLayoutInfoCustomUi, ChunkArrayPipe, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValueDirective, ColumnValueOfParametersPipe, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicDarkColorPipe, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicRootVariableDirective, DynamicStyleDirective, DynamicTileGroupComponent, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterInlineActionListPipe, FilterPipe, FilterStringPipe, FilterTabPipe, FilterToolbarControlPipe, FilterWorkflowInMobilePipe, FindColumnByDbNamePipe, FindGroup, FindLayoutSettingFromLayout94, FindPreviewColumnPipe, FindToolbarItem, FioriIconPipe, FormBaseComponent, FormCloseDirective, FormComponent, FormFieldReportPageComponent, FormNewComponent, FormPageBaseComponent, FormPageComponent, FormPanelService, FormPropsBaseComponent, FormService, FormToolbarBaseComponent, GaugeControlInfoModel, GeneralControlInfoModel, GetAllColumnsSorted, GetAllHorizontalFromLayout94, GetDefaultMoObjectInfo, GetImgTags, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, GroupByService, HeaderFacetValuePipe, HideAcceptCancelButtonsPipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, HorizontalResponsiveDirective, IconControlInfoModel, ImageLazyDirective, ImageMimeType, ImagetoPrint, InMemoryStorageService, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsDarkMode, IsExpandedNodePipe, IsImagePipe, ItemsRendererDirective, LabelStarTrimPipe, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutMainContentService, LayoutPanelBaseComponent, LayoutService, LeafletLongPressDirective, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, LoginSettingsResolver, MapToChatMessagePipe, MasterDetailsPageComponent, MeasureFormTitleWidthDirective, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoForReportModelBase, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, OverflowTextDirective, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PrintFilesDirective, PrintImage, PromptUpdateService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveNewlinePipe, RenderUlvDirective, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ResizeHandlerDirective, ResizeObserverDirective, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SanitizeTextPipe, SaveImageDirective, SaveImageToFile, SaveScrollPositionService, ScrollPersistDirective, ScrollToSelectedDirective, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, ShellbarHeightService, ShortcutHandlerDirective, ShortcutRegisterDirective, SimplebarDirective, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, SplideSliderDirective, SplitPipe, StopPropagationDirective, StringControlInfoModel, StringToNumberPipe, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, TabpageService, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, ToolbarSettingsPipe, TooltipDirective, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UnlimitSessionComponent, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WebOtpDirective, WordMimeType, WorfkflowwChoiceCommandDirective, addCssVariableToRoot, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, flattenTree, forbiddenValidator, formRoutes, formatBytes, fromEntries, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFocusableTagNames, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, measureText2, measureTextBy, mobile_regex, nullOrUndefinedString, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, validateAllFormFields };
|
|
17574
|
+
export { APP_VERSION, AbsoluteDivBodyDirective, AddDynamicFormStyles, AffixRespondEvents, AllFilesMimeType, AnchorScrollDirective, ApiService, ApplicationBaseComponent, ApplicationCtrlrService, AttrRtlDirective, AudioMimeType, AudioRecordingService, AuthGuard, BarsaApi, BarsaDialogService, BarsaIconDictPipe, BarsaNovinRayCoreModule, BarsaReadonlyDirective, BarsaSapUiFormPageModule, BarsaStorageService, BaseColumnPropsComponent, BaseComponent, BaseController, BaseDirective, BaseDynamicComponent, BaseFormToolbaritemPropsComponent, BaseItemContentPropsComponent, BaseModule, BaseReportModel, BaseUlvSettingComponent, BaseViewContentPropsComponent, BaseViewItemPropsComponent, BaseViewPropsComponent, BbbTranslatePipe, BodyClickDirective, BoolControlInfoModel, BreadcrumbService, ButtonLoadingComponent, CalculateControlInfoModel, CanUploadFilePipe, CardMediaSizePipe, ChangeLayoutInfoCustomUi, ChunkArrayPipe, CodeEditorControlInfoModel, ColSetting, ColumnCustomComponentPipe, ColumnCustomUiPipe, ColumnIconPipe, ColumnResizerDirective, ColumnService, ColumnValueDirective, ColumnValueOfParametersPipe, ColumnValuePipe, ComboRowImagePipe, CommandControlInfoModel, ContainerComponent, ContainerService, ContextMenuPipe, ControlUiPipe, ConvertToStylePipe, CopyDirective, CountDownDirective, CustomCommand, CustomInjector, CustomRouteReuseStategy, DIALOG_SERVICE, DateHijriService, DateMiladiService, DateRanges, DateService, DateShamsiService, DateTimeControlInfoModel, DeviceWidth, DialogParams, DynamicCommandDirective, DynamicComponentService, DynamicDarkColorPipe, DynamicFormComponent, DynamicFormToolbaritemComponent, DynamicItemComponent, DynamicLayoutComponent, DynamicRootVariableDirective, DynamicStyleDirective, DynamicTileGroupComponent, EllapsisTextDirective, EllipsifyDirective, EmptyPageComponent, EmptyPageWithRouterAndRouterOutletComponent, EnumControlInfoModel, ExecuteDynamicCommand, ExecuteWorkflowChoiceDef, FORM_DIALOG_COMPONENT, FieldBaseComponent, FieldDirective, FieldInfoTypeEnum, FieldUiComponent, FileControlInfoModel, FileInfoCountPipe, FilePictureInfoModel, FilesValidationHelper, FillAllLayoutControls, FillEmptySpaceDirective, FilterColumnsByDetailsPipe, FilterInlineActionListPipe, FilterPipe, FilterStringPipe, FilterTabPipe, FilterToolbarControlPipe, FilterWorkflowInMobilePipe, FindColumnByDbNamePipe, FindGroup, FindLayoutSettingFromLayout94, FindPreviewColumnPipe, FindToolbarItem, FioriIconPipe, FormBaseComponent, FormCloseDirective, FormComponent, FormFieldReportPageComponent, FormNewComponent, FormPageBaseComponent, FormPageComponent, FormPanelService, FormPropsBaseComponent, FormService, FormToolbarBaseComponent, GaugeControlInfoModel, GeneralControlInfoModel, GetAllColumnsSorted, GetAllHorizontalFromLayout94, GetDefaultMoObjectInfo, GetImgTags, GetVisibleValue, GridSetting, GroupBy, GroupByPipe, GroupByService, HeaderFacetValuePipe, HideAcceptCancelButtonsPipe, HideColumnsInmobilePipe, HistoryControlInfoModel, HorizontalLayoutService, HorizontalResponsiveDirective, IconControlInfoModel, ImageLazyDirective, ImageMimeType, ImagetoPrint, InMemoryStorageService, IndexedDbService, InputNumber, IntersectionObserverDirective, IntersectionStatus, IsDarkMode, IsExpandedNodePipe, IsImagePipe, ItemsRendererDirective, LabelStarTrimPipe, LabelmandatoryDirective, LayoutItemBaseComponent, LayoutMainContentService, LayoutPanelBaseComponent, LayoutService, LeafletLongPressDirective, LinearListControlInfoModel, LinearListHelper, ListCountPipe, ListRelationModel, LoadExternalFilesDirective, LocalStorageService, LogService, LoginSettingsResolver, MapToChatMessagePipe, MasterDetailsPageComponent, MeasureFormTitleWidthDirective, MergeFieldsToColumnsPipe, MetaobjectDataModel, MetaobjectRelationModel, MoForReportModel, MoForReportModelBase, MoInfoUlvMoListPipe, MoInfoUlvPagingPipe, MoReportValueConcatPipe, MoReportValuePipe, MoValuePipe, MobileDirective, ModalRootComponent, MultipleGroupByPipe, NOTIFICATAION_POPUP_SERVER, NOTIFICATION_WEBWORKER_FACTORY, NetworkStatusService, NotFoundComponent, NotificationService, NowraptextDirective, NumberBaseComponent, NumberControlInfoModel, NumbersOnlyInputDirective, NumeralPipe, OverflowTextDirective, PageBaseComponent, PageWithFormHandlerBaseComponent, PdfMimeType, PictureFieldSourcePipe, PictureFileControlInfoModel, PlaceHolderDirective, PortalDynamicPageResolver, PortalFormPageResolver, PortalPageComponent, PortalPageResolver, PortalPageSidebarComponent, PortalReportPageResolver, PortalService, PreventDefaulEvent, PreventDefaultDirective, PrintFilesDirective, PrintImage, PromptUpdateService, PushBannerComponent, PushCheckService, RabetehAkseTakiListiControlInfoModel, RedirectHomeGuard, RedirectReportNavigatorCommandComponent, RelatedReportControlInfoModel, RelationListControlInfoModel, RemoveDynamicFormStyles, RemoveNewlinePipe, RenderUlvDirective, RenderUlvPaginDirective, RenderUlvViewerDirective, ReplacePipe, ReportBaseComponent, ReportBaseInfo, ReportCalendarModel, ReportContainerComponent, ReportExtraInfo, ReportField, ReportFormModel, ReportItemBaseComponent, ReportListModel, ReportModel, ReportTreeModel, ReportViewBaseComponent, ReportViewColumn, ResizableComponent, ResizableDirective, ResizableModule, ResizeHandlerDirective, ResizeObserverDirective, ReversePipe, RichStringControlInfoModel, RootPageComponent, RootPortalComponent, RouteFormChangeDirective, RoutingService, RowDataOption, RowNumberPipe, SafeBottomDirective, SanitizeTextPipe, SaveImageDirective, SaveImageToFile, SaveScrollPositionService, ScrollPersistDirective, ScrollToSelectedDirective, SelectionMode, SeperatorFixPipe, ServiceWorkerCommuncationService, ServiceWorkerNotificationService, ShellbarHeightService, ShortcutHandlerDirective, ShortcutRegisterDirective, SimplebarDirective, SingleRelationControlInfoModel, SortDirection, SortPipe, SortSetting, SplideSliderDirective, SplitPipe, StopPropagationDirective, StringControlInfoModel, StringToNumberPipe, SubformControlInfoModel, SystemBaseComponent, TOAST_SERVICE, TableHeaderWidthMode, TableResizerDirective, TabpageService, ThImageOrIconePipe, TileGroupBreadcrumResolver, TilePropsComponent, TlbButtonsPipe, ToolbarSettingsPipe, TooltipDirective, TotalSummaryPipe, UiService, UlvCommandDirective, UlvMainService, UnlimitSessionComponent, UntilInViewDirective, UploadService, VideoMimeType, VideoRecordingService, ViewBase, VisibleValuePipe, WebOtpDirective, WordMimeType, WorfkflowwChoiceCommandDirective, addCssVariableToRoot, availablePrefixes, calcContextMenuWidth, calculateColumnContent, calculateColumnWidth, calculateColumnWidthFitToContainer, calculateFreeColumnSize, calculateMoDataListContentWidthByColumnName, cancelRequestAnimationFrame, createFormPanelMetaConditions, createGridEditorFormPanel, easeInOutCubic, elementInViewport2, enumValueToStringSize, executeUlvCommandHandler, flattenTree, forbiddenValidator, formRoutes, formatBytes, fromEntries, fromIntersectionObserver, genrateInlineMoId, getAllItemsPerChildren, getColumnValueOfMoDataList, getComponentDefined, getControlList, getControlSizeMode, getDateService, getDeviceIsDesktop, getDeviceIsMobile, getDeviceIsPhone, getDeviceIsTablet, getFieldValue, getFocusableTagNames, getFormSettings, getGridSettings, getHeaderValue, getIcon, getImagePath, getLabelWidth, getLayout94ObjectInfo, getLayoutControl, getNewMoGridEditor, getParentHeight, getRequestAnimationFrame, getResetGridSettings, getTargetRect, getUniqueId, getValidExtension, isFF, isFirefox, isFunction, isImage, isInLocalMode, isSafari, isTargetWindow, measureText, measureText2, measureTextBy, mobile_regex, nullOrUndefinedString, number_only, requestAnimationFramePolyfill, setColumnWidthByMaxMoContentWidth, setOneDepthLevel, setTableThWidth, shallowEqual, stopPropagation, throwIfAlreadyLoaded, toNumber, usePushNotification, validateAllFormFields };
|
|
17203
17575
|
//# sourceMappingURL=barsa-novin-ray-core.mjs.map
|