barsa-novin-ray-core 2.3.98 → 2.3.99

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.
@@ -2397,6 +2397,32 @@ function fromEntries(entries) {
2397
2397
  }
2398
2398
  return result;
2399
2399
  }
2400
+ function AddDynamicFormStyles(id, cssStyles) {
2401
+ if (!cssStyles) {
2402
+ return null;
2403
+ }
2404
+ cssStyles = cssStyles.replace(/:root/gi, `#${id}`);
2405
+ cssStyles = cssStyles.replace(/:html/gi, `:root`);
2406
+ const head = document.head || document.getElementsByTagName('head')[0];
2407
+ const style = document.createElement('style');
2408
+ head.appendChild(style);
2409
+ style.type = 'text/css';
2410
+ if (style.styleSheet) {
2411
+ // This is required for IE8 and below.
2412
+ style.styleSheet.cssText = cssStyles;
2413
+ }
2414
+ else {
2415
+ style.appendChild(document.createTextNode(cssStyles));
2416
+ }
2417
+ return style;
2418
+ }
2419
+ function RemoveDynamicFormStyles(style) {
2420
+ if (!style) {
2421
+ return;
2422
+ }
2423
+ const head = document.head || document.getElementsByTagName('head')[0];
2424
+ head.removeChild(style);
2425
+ }
2400
2426
 
2401
2427
  class MoReportValuePipe {
2402
2428
  transform(name, mo, Columns, caption) {
@@ -5810,7 +5836,11 @@ class PortalService {
5810
5836
  path: (cpage.IsDefaultRoute === 'True' && path === '') || (path !== '' && typeof path !== 'undefined')
5811
5837
  ? path
5812
5838
  : cpage.Route.replace('/', ''),
5813
- canActivate: cpage.HasAuthorize === 'True' ? [AuthGuard] : cpage.IsLoginRoute === 'True' ? [RedirectHomeGuard] : [],
5839
+ canActivate: cpage.HasAuthorize === 'True'
5840
+ ? [AuthGuard]
5841
+ : cpage.IsLoginRoute === 'True'
5842
+ ? [RedirectHomeGuard]
5843
+ : [],
5814
5844
  resolve: { pageData: PortalPageResolver },
5815
5845
  component: pageComponent,
5816
5846
  outlet: cpage.Outlet ? cpage.Outlet : undefined,
@@ -5819,7 +5849,7 @@ class PortalService {
5819
5849
  ...cpage
5820
5850
  }
5821
5851
  },
5822
- children: [formRoutes()]
5852
+ children: cpage.ComponentName !== 'PortalPage' ? [formRoutes()] : []
5823
5853
  };
5824
5854
  children.push(newRoute);
5825
5855
  // Recursively process each MetaObjectModel inside MoDataList
@@ -8177,13 +8207,74 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8177
8207
  type: Injectable
8178
8208
  }], ctorParameters: () => [] });
8179
8209
 
8210
+ class PushCheckService {
8211
+ async checkPushReady() {
8212
+ if (!this.baseSupport()) {
8213
+ return 'مرورگر شما Push API را پشتیبانی نمی‌کند';
8214
+ }
8215
+ const iosCheck = this.iosSupport();
8216
+ if (iosCheck !== true) {
8217
+ return iosCheck;
8218
+ }
8219
+ if (Notification.permission === 'denied') {
8220
+ return 'شما قبلاً اجازه نوتیفیکیشن را رد کرده‌اید. از تنظیمات مرورگر آن را فعال کنید';
8221
+ }
8222
+ const regs = await navigator.serviceWorker.getRegistrations();
8223
+ if (!regs.length) {
8224
+ return 'Service Worker ثبت نشده است';
8225
+ }
8226
+ return true;
8227
+ }
8228
+ getIosVersion() {
8229
+ const ua = navigator.userAgent;
8230
+ if (/iP(hone|od|ad)/.test(ua)) {
8231
+ const v = ua.match(/OS (\d+)_/);
8232
+ return v ? parseInt(v[1], 10) : null;
8233
+ }
8234
+ return null;
8235
+ }
8236
+ isIosStandalone() {
8237
+ return 'standalone' in navigator && navigator.standalone === true;
8238
+ }
8239
+ isSafari() {
8240
+ const ua = navigator.userAgent.toLowerCase();
8241
+ return ua.includes('safari') && !ua.includes('chrome');
8242
+ }
8243
+ baseSupport() {
8244
+ return 'Notification' in window && 'serviceWorker' in navigator && 'PushManager' in window;
8245
+ }
8246
+ iosSupport() {
8247
+ const v = this.getIosVersion();
8248
+ if (v && v < 16) {
8249
+ return 'نسخه iOS کمتر از 16 است (Push پشتیبانی نمی‌شود)';
8250
+ }
8251
+ if (v && v < 16.4) {
8252
+ return 'iOS باید حداقل نسخه 16.4 باشد تا Push فعال شود';
8253
+ }
8254
+ if (v && !this.isSafari()) {
8255
+ return 'Push فقط در Safari iOS پشتیبانی می‌شود';
8256
+ }
8257
+ if (v && !this.isIosStandalone()) {
8258
+ return 'برای فعال شدن Push، برنامه را با Add to Home Screen نصب کنید';
8259
+ }
8260
+ return true;
8261
+ }
8262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8263
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, providedIn: 'root' }); }
8264
+ }
8265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PushCheckService, decorators: [{
8266
+ type: Injectable,
8267
+ args: [{ providedIn: 'root' }]
8268
+ }] });
8269
+
8180
8270
  class ServiceWorkerCommuncationService {
8181
8271
  constructor() {
8272
+ this._toastService = inject(TOAST_SERVICE, { optional: true });
8182
8273
  this._localStorage = inject(LocalStorageService);
8183
- this._logService = inject(LogService);
8184
8274
  this._portalService = inject(PortalService);
8185
8275
  this._swPush = inject(SwPush);
8186
8276
  this._httpClient = inject(HttpClient);
8277
+ this._pushCheckService = inject(PushCheckService);
8187
8278
  }
8188
8279
  get token2() {
8189
8280
  return this._localStorage.getItem(BarsaApi.LoginAction.token2StorageKey) ?? '';
@@ -8244,7 +8335,7 @@ class ServiceWorkerCommuncationService {
8244
8335
  _postServiceWorker(message) {
8245
8336
  // console.log(`post message to sw ${JSON.stringify(message, null, 2)}`);
8246
8337
  if (!this._serviceWorker) {
8247
- this._logService.warn(`service worker is undefined.`);
8338
+ console.warn(`service worker is undefined.`);
8248
8339
  return;
8249
8340
  }
8250
8341
  this._serviceWorker.postMessage(message);
@@ -8254,16 +8345,46 @@ class ServiceWorkerCommuncationService {
8254
8345
  this._httpClient.post('/api/pushnotification/send', subscription, this.httpOptions).subscribe();
8255
8346
  }, 5000);
8256
8347
  }
8348
+ toast(msg) {
8349
+ if (!this._toastService) {
8350
+ console.log(msg);
8351
+ return;
8352
+ }
8353
+ this._toastService?.open(` ${msg} `, { duration: 5000 });
8354
+ }
8257
8355
  _initPushSubscription() {
8258
8356
  this._httpClient
8259
8357
  .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);
8358
+ .pipe(concatMap$1(async (publicKey) => {
8359
+ // 1) بررسی کامل iOS + Android + Browser
8360
+ const check = await this._pushCheckService.checkPushReady();
8361
+ if (check !== true) {
8362
+ this.toast(check);
8363
+ throw new Error(check);
8364
+ }
8365
+ // 2) درخواست ساب‌اسکریپشن
8366
+ try {
8367
+ const subscription = await this._swPush.requestSubscription({
8368
+ serverPublicKey: publicKey
8369
+ });
8370
+ return subscription;
8371
+ }
8372
+ catch (err) {
8373
+ const msg = 'مشترک شدن Push انجام نشد';
8374
+ this.toast(msg);
8375
+ throw err;
8376
+ }
8377
+ }), concatMap$1((subscription) => this._httpClient.post('/api/pushnotification/add', subscription, this.httpOptions)), catchError$1((err) => {
8378
+ const msg = 'خطا در ثبت Push Notification';
8379
+ this.toast(msg);
8264
8380
  return throwError(() => err);
8265
8381
  }))
8266
- .subscribe();
8382
+ .subscribe({
8383
+ next: () => {
8384
+ const msg = 'نوتیفیکیشن فعال شد';
8385
+ this.toast(msg);
8386
+ }
8387
+ });
8267
8388
  }
8268
8389
  _handlePushUnSubscription(doReturn) {
8269
8390
  if (!this._subscription) {
@@ -8272,7 +8393,7 @@ class ServiceWorkerCommuncationService {
8272
8393
  this._httpClient
8273
8394
  .post('/api/pushnotification/delete', this._subscription, this.httpOptions)
8274
8395
  .pipe(concatMap$1(() => from(this._swPush.unsubscribe())), catchError$1((err) => {
8275
- this._logService.error(err);
8396
+ console.error(err);
8276
8397
  doReturn && doReturn();
8277
8398
  return throwError(() => new Error(err));
8278
8399
  }), finalize$1(() => {
@@ -8466,6 +8587,7 @@ class FieldBaseComponent extends BaseComponent {
8466
8587
  this.formmatedValue = new EventEmitter();
8467
8588
  this.isMobile = getDeviceIsMobile();
8468
8589
  this.isTablet = getDeviceIsTablet();
8590
+ this._rlt = true;
8469
8591
  this.mobileConfig = {
8470
8592
  title: 'انتخاب',
8471
8593
  approveButtonText: 'تایید',
@@ -8492,6 +8614,7 @@ class FieldBaseComponent extends BaseComponent {
8492
8614
  this._valueChangedSource = new Subject();
8493
8615
  this._disableChangedSource = new BehaviorSubject(false);
8494
8616
  this._readonlyChangedSource = new BehaviorSubject(false);
8617
+ this._portalService.rtl$.pipe(takeUntil(this._onDestroy$)).subscribe((c) => (this._rlt = c));
8495
8618
  this.refresh$ = this._refreshSource.asObservable().pipe(takeUntil(this._onDestroy$));
8496
8619
  this.value$ = this._valueChangedSource.asObservable().pipe(takeUntil(this._onDestroy$));
8497
8620
  this.deviceSize$ = this._portalService.deviceSize$;
@@ -8618,7 +8741,7 @@ class FieldBaseComponent extends BaseComponent {
8618
8741
  }
8619
8742
  }
8620
8743
  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 }); }
8744
+ 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
8745
  }
8623
8746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FieldBaseComponent, decorators: [{
8624
8747
  type: Component,
@@ -8662,6 +8785,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
8662
8785
  }], isTablet: [{
8663
8786
  type: HostBinding,
8664
8787
  args: ['class.isTablet']
8788
+ }], _rlt: [{
8789
+ type: HostBinding,
8790
+ args: ['class.rtl']
8665
8791
  }] } });
8666
8792
 
8667
8793
  class FormBaseComponent extends BaseComponent {
@@ -9235,7 +9361,6 @@ class LayoutItemBaseComponent extends BaseComponent {
9235
9361
  super();
9236
9362
  this.formPanelService = inject(FormPanelService);
9237
9363
  this._cdr = inject(ChangeDetectorRef);
9238
- this.id = getUniqueId(4);
9239
9364
  this.formPanelService.isSearchPanel$.subscribe((isSearchPanel) => {
9240
9365
  this.isSearchPanel = isSearchPanel;
9241
9366
  });
@@ -9246,6 +9371,10 @@ class LayoutItemBaseComponent extends BaseComponent {
9246
9371
  this.searchPanelIsObject = searchPanelIsObject;
9247
9372
  });
9248
9373
  }
9374
+ ngOnInit() {
9375
+ super.ngOnInit();
9376
+ this.id = this.config.id;
9377
+ }
9249
9378
  ngOnChanges(changes) {
9250
9379
  super.ngOnChanges(changes);
9251
9380
  const { maxLabelWidth } = changes;
@@ -9254,7 +9383,7 @@ class LayoutItemBaseComponent extends BaseComponent {
9254
9383
  }
9255
9384
  }
9256
9385
  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 }); }
9386
+ 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
9387
  }
9259
9388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutItemBaseComponent, decorators: [{
9260
9389
  type: Component,
@@ -9264,7 +9393,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
9264
9393
  changeDetection: ChangeDetectionStrategy.OnPush,
9265
9394
  standalone: false
9266
9395
  }]
9267
- }], ctorParameters: () => [], propDecorators: { config: [{
9396
+ }], ctorParameters: () => [], propDecorators: { id: [{
9397
+ type: HostBinding,
9398
+ args: ['attr.id']
9399
+ }], config: [{
9268
9400
  type: Input
9269
9401
  }], isPanel: [{
9270
9402
  type: Input
@@ -9278,21 +9410,40 @@ class LayoutPanelBaseComponent extends LayoutItemBaseComponent {
9278
9410
  constructor() {
9279
9411
  super();
9280
9412
  this.layoutControlCount = 0;
9281
- this.portalService = inject(PortalService);
9282
- this.layoutService = inject(LayoutService, { self: true });
9283
- const layoutService = this.layoutService;
9413
+ this.visible = true;
9414
+ this._renderer2 = inject(Renderer2);
9415
+ this._portalService = inject(PortalService);
9416
+ this._layoutService = inject(LayoutService, { self: true });
9417
+ const layoutService = this._layoutService;
9284
9418
  this.id = getUniqueId(4);
9285
9419
  layoutService.id = 'panel' + this.id;
9286
9420
  this.formPanelService.isSearchPanel$.subscribe((isSearchPanel) => {
9287
9421
  this.isSearchPanel = isSearchPanel;
9288
9422
  });
9423
+ this.formPanelService.groupLayout$
9424
+ .pipe(takeUntil$1(this._onDestroy$), filter$1((c) => c.ControlId === this.config.ControlId))
9425
+ .subscribe((_groupItem) => {
9426
+ this._setBRule();
9427
+ });
9289
9428
  }
9290
9429
  ngOnInit() {
9291
9430
  super.ngOnInit();
9431
+ this._setBRule();
9292
9432
  this.formPanelService.formContainerDom = this.parentDom;
9293
- this.maxLabelWidth$ = this.layoutService.maxWidth$;
9433
+ this.maxLabelWidth$ = this._layoutService.maxWidth$;
9294
9434
  this._calcWidth(this.config);
9295
9435
  }
9436
+ _setBRule() {
9437
+ this.visible = this.config.Visible === false ? false : true;
9438
+ this.readonly = this.config.Readonly === false ? false : true;
9439
+ this.enable = this.config.Enable === false ? false : true;
9440
+ if (this.enable) {
9441
+ this._renderer2.removeClass(this._el.nativeElement, 'control-disabled');
9442
+ }
9443
+ else {
9444
+ this._renderer2.addClass(this._el.nativeElement, 'control-disabled');
9445
+ }
9446
+ }
9296
9447
  _calcWidth(config) {
9297
9448
  config.items.forEach((item) => {
9298
9449
  switch (item.xtype) {
@@ -9309,7 +9460,7 @@ class LayoutPanelBaseComponent extends LayoutItemBaseComponent {
9309
9460
  _setLabelWidth(item) {
9310
9461
  const controlWidth = getLabelWidth(item);
9311
9462
  if (controlWidth) {
9312
- this.layoutService.setMaxWidth(controlWidth);
9463
+ this._layoutService.setMaxWidth(controlWidth);
9313
9464
  }
9314
9465
  }
9315
9466
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LayoutPanelBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -9345,8 +9496,8 @@ class ContainerComponent extends BaseComponent {
9345
9496
  this._cdr = inject(ChangeDetectorRef);
9346
9497
  this._renderer2 = inject(Renderer2);
9347
9498
  this._dialogService = inject(DIALOG_SERVICE, { optional: true });
9348
- this._containerServiceParent = inject(ContainerService, { self: true, optional: true });
9349
- this._containerService = inject(ContainerService);
9499
+ this._containerServiceParent = inject(ContainerService, { self: false, optional: true });
9500
+ this._containerService = inject(ContainerService, { self: true, optional: true });
9350
9501
  this._formDialogComponent = inject(FORM_DIALOG_COMPONENT, { optional: true });
9351
9502
  this.oldContainerContainer = this._barsaDialogService.containerComponent;
9352
9503
  this._barsaDialogService.containerComponent = this;
@@ -9388,7 +9539,7 @@ class ContainerComponent extends BaseComponent {
9388
9539
  }
9389
9540
  }
9390
9541
  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 }); }
9542
+ 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
9543
  }
9393
9544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ContainerComponent, decorators: [{
9394
9545
  type: Component,
@@ -9401,6 +9552,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
9401
9552
  }], ctorParameters: () => [], propDecorators: { containerRef: [{
9402
9553
  type: ViewChild,
9403
9554
  args: ['containerRef', { static: true, read: ViewContainerRef }]
9555
+ }], containerBottomRef: [{
9556
+ type: ViewChild,
9557
+ args: ['containerBottomRef', { static: true, read: ViewContainerRef }]
9404
9558
  }] } });
9405
9559
 
9406
9560
  class PageBaseComponent extends ContainerComponent {
@@ -9412,7 +9566,7 @@ class PageBaseComponent extends ContainerComponent {
9412
9566
  }
9413
9567
  ngAfterViewInit() {
9414
9568
  super.ngAfterViewInit();
9415
- this._containerService.state === 'attach' && this.addModulesToDom();
9569
+ this._containerService?.state === 'attach' && this.addModulesToDom();
9416
9570
  this._containerService?.addModules.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.addModulesToDom());
9417
9571
  }
9418
9572
  addModulesToDom() {
@@ -9468,8 +9622,12 @@ class PageBaseComponent extends ContainerComponent {
9468
9622
  .pipe(takeUntil(this._onDestroy$), concatMap((module) => this.getComponentFactory(module.Component).pipe(tap((controlUi) => {
9469
9623
  controlUi.instance.settings = module.Component.Settings;
9470
9624
  controlUi.instance.activatedRoute = this._activatedRoute;
9471
- if (this.containerRef) {
9472
- this.containerRef.insert(controlUi.hostView);
9625
+ let containerRef = this.containerRef;
9626
+ if (module.ContainerRef && this[module.ContainerRef]) {
9627
+ containerRef = this[module.ContainerRef];
9628
+ } // توسط ماژول مشخص شده کامپوننت در کدام کانتینر پیج قرار گیرد
9629
+ if (containerRef) {
9630
+ containerRef.insert(controlUi.hostView);
9473
9631
  }
9474
9632
  else {
9475
9633
  this._vcr.insert(controlUi.hostView);
@@ -9529,11 +9687,14 @@ class NumberBaseComponent extends FieldBaseComponent {
9529
9687
  const isValid = new RegExp('^[0-9,.,-]*$').test(e.currentTarget.value + e.key);
9530
9688
  if (!isValid || e.key === '.') {
9531
9689
  if (e.key === '.' && this.inputElement && this.decimalPrecision > 0) {
9532
- const cursorPosition = this.inputElement.value.indexOf('.');
9533
- this._setCursorPosition(cursorPosition + 1);
9690
+ const indexOfDot = this.inputElement.value.indexOf('.');
9691
+ if (indexOfDot > -1) {
9692
+ this._setCursorPosition(indexOfDot + 1);
9693
+ e.preventDefault();
9694
+ e.stopPropagation();
9695
+ return;
9696
+ }
9534
9697
  }
9535
- e.preventDefault();
9536
- e.stopPropagation();
9537
9698
  }
9538
9699
  else if (isValid && this.inputElement) {
9539
9700
  // در صورتی که عدد قبل از منفی قرار گیرد
@@ -9559,7 +9720,7 @@ class NumberBaseComponent extends FieldBaseComponent {
9559
9720
  }
9560
9721
  _updateBySetting() {
9561
9722
  if (this.inputElement) {
9562
- const formated = this._getFormated(this.value).toString();
9723
+ const formated = this._getFormated(this.value?.toString()).toString();
9563
9724
  this.inputElement.value = formated;
9564
9725
  }
9565
9726
  this.hasMask =
@@ -9591,7 +9752,17 @@ class NumberBaseComponent extends FieldBaseComponent {
9591
9752
  return false;
9592
9753
  }
9593
9754
  _getFormated(val) {
9594
- return this._numeralPipe.transform(val, this.decimalPrecision, this.Setting.ShowThousandSeperator).toString();
9755
+ let decimalPersicion = 0;
9756
+ const indexOfDot = val.indexOf('.');
9757
+ if (indexOfDot > 0 && this.decimalPrecision) {
9758
+ decimalPersicion = val.length - indexOfDot - 1;
9759
+ decimalPersicion = decimalPersicion > this.decimalPrecision ? this.decimalPrecision : decimalPersicion;
9760
+ }
9761
+ let newVal = this._numeralPipe.transform(val, decimalPersicion, this.Setting.ShowThousandSeperator).toString();
9762
+ if (this.decimalPrecision && decimalPersicion === 0 && val.endsWith('.')) {
9763
+ newVal += '.';
9764
+ }
9765
+ return newVal;
9595
9766
  }
9596
9767
  _setCursorPosition(cursorPosition) {
9597
9768
  if (this.inputElement) {
@@ -9611,9 +9782,19 @@ class NumberBaseComponent extends FieldBaseComponent {
9611
9782
  if (value === +elValue) {
9612
9783
  return;
9613
9784
  }
9614
- const formated = this._getFormated(value);
9785
+ const formated = this._getFormated(value.toString());
9615
9786
  e.target.value = formated;
9616
9787
  }
9788
+ _setTargetToFormatedValue(target, formated, isMinus) {
9789
+ if (!target) {
9790
+ return 0;
9791
+ }
9792
+ const oldVal = target.value;
9793
+ if (target.value !== formated) {
9794
+ target.value = this._getMinusValue(isMinus, formated);
9795
+ }
9796
+ return formated.length > oldVal.length ? formated.length - oldVal.length : oldVal.length - target.value.length;
9797
+ }
9617
9798
  reFormatValue(text, e) {
9618
9799
  let newVal;
9619
9800
  if (typeof text === 'number') {
@@ -9632,7 +9813,7 @@ class NumberBaseComponent extends FieldBaseComponent {
9632
9813
  let indexofDot = text.indexOf('.');
9633
9814
  const selectionStart = this.inputElement?.selectionStart;
9634
9815
  const decimalPersicion = this.decimalPrecision;
9635
- if (decimalPersicion) {
9816
+ if (decimalPersicion && indexofDot > 0) {
9636
9817
  const t = text.length - (indexofDot + 1);
9637
9818
  if (t > decimalPersicion) {
9638
9819
  const diff = t - decimalPersicion;
@@ -9665,12 +9846,10 @@ class NumberBaseComponent extends FieldBaseComponent {
9665
9846
  diff = indexOfDotFormated - indexofDot;
9666
9847
  cursorPosition += diff;
9667
9848
  }
9668
- if (this.inputElement && this.inputElement.value !== formated) {
9669
- this.inputElement.value = this._getMinusValue(isMinus, formated);
9670
- }
9671
- if (e.target.value !== formated) {
9672
- e.target.value = this._getMinusValue(isMinus, formated);
9673
- }
9849
+ const diff1 = this._setTargetToFormatedValue(this.inputElement, formated, isMinus);
9850
+ const diff2 = this._setTargetToFormatedValue(e.traget, formated, isMinus);
9851
+ cursorPosition && (cursorPosition += diff1);
9852
+ cursorPosition && (cursorPosition += diff2);
9674
9853
  this._setCursorPosition(cursorPosition);
9675
9854
  }
9676
9855
  else {
@@ -11508,20 +11687,20 @@ class PortalPageComponent extends PageWithFormHandlerBaseComponent {
11508
11687
  super(...arguments);
11509
11688
  this._routingService = inject(RoutingService);
11510
11689
  }
11690
+ ngOnInit() {
11691
+ super.ngOnInit();
11692
+ this.addModulesToDom();
11693
+ }
11511
11694
  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, ContainerService], usesInheritance: true, ngImport: i0, template: `<ng-container #containerRef></ng-container> <router-outlet></router-outlet
11513
- ><router-outlet name="dialog"></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11695
+ 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
11696
+ ><router-outlet name="dialog"></router-outlet>
11697
+ <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
11698
  }
11515
11699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PortalPageComponent, decorators: [{
11516
11700
  type: Component,
11517
- args: [{
11518
- selector: 'bnrc-portal-page',
11519
- template: `<ng-container #containerRef></ng-container> <router-outlet></router-outlet
11520
- ><router-outlet name="dialog"></router-outlet>`,
11521
- changeDetection: ChangeDetectionStrategy.OnPush,
11522
- providers: [RoutingService, ContainerService],
11523
- standalone: false
11524
- }]
11701
+ args: [{ selector: 'bnrc-portal-page', template: `<ng-container #containerRef></ng-container> <router-outlet></router-outlet
11702
+ ><router-outlet name="dialog"></router-outlet>
11703
+ <ng-container #containerBottomRef></ng-container> `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, styles: [":host{min-height:100svh}\n"] }]
11525
11704
  }] });
11526
11705
 
11527
11706
  class FillEmptySpaceDirective extends BaseDirective {
@@ -12466,6 +12645,12 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
12466
12645
  _setSavingState(err) {
12467
12646
  if (err) {
12468
12647
  this.hasError = true;
12648
+ this._handleBruleShowMessageAction({
12649
+ MessageExpression: err.Text,
12650
+ MessageType: 2,
12651
+ MessageExpressionHtml: err.Text,
12652
+ EscapeCharacters: true
12653
+ });
12469
12654
  return;
12470
12655
  }
12471
12656
  this.hasError = false;
@@ -14510,45 +14695,19 @@ class DynamicStyleDirective extends BaseDirective {
14510
14695
  }
14511
14696
  ngOnInit() {
14512
14697
  super.ngOnInit();
14513
- this._addDynamicFormStyles(this.cssStyle);
14698
+ this._style = AddDynamicFormStyles(this.id, this.cssStyle);
14514
14699
  }
14515
14700
  ngOnChanges(changes) {
14516
14701
  super.ngOnChanges(changes);
14517
14702
  const { cssStyle } = changes;
14518
14703
  if (cssStyle && !cssStyle.firstChange) {
14519
- this._removeDynamicFormStyles();
14520
- this._addDynamicFormStyles(cssStyle.currentValue);
14704
+ RemoveDynamicFormStyles(this._style);
14705
+ this._style = AddDynamicFormStyles(this.id, cssStyle.currentValue);
14521
14706
  }
14522
14707
  }
14523
14708
  ngOnDestroy() {
14524
14709
  super.ngOnDestroy();
14525
- this._removeDynamicFormStyles();
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);
14710
+ RemoveDynamicFormStyles(this._style);
14552
14711
  }
14553
14712
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DynamicStyleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
14554
14713
  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 +15742,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
15583
15742
  type: Input
15584
15743
  }] } });
15585
15744
 
15745
+ class SafeBottomDirective extends BaseDirective {
15746
+ constructor() {
15747
+ super(...arguments);
15748
+ this.isMobile = getDeviceIsMobile();
15749
+ }
15750
+ ngOnInit() {
15751
+ super.ngOnInit();
15752
+ if (!this.isMobile) {
15753
+ return;
15754
+ }
15755
+ let cls = this.disableBottom ? '' : 'safe-bottom-area-env';
15756
+ this.applyTop && (cls += 'safe-top-area-env');
15757
+ let clsNonStandlalone = this.disableBottom ? '' : 'safe-bottom-padding';
15758
+ this.applyTop && (clsNonStandlalone += 'safe-top-padding');
15759
+ const isStandAlone = !document.body.classList.contains('noStandalone');
15760
+ if (isStandAlone) {
15761
+ this._renderer2.addClass(this._el.nativeElement, cls);
15762
+ }
15763
+ else {
15764
+ this._renderer2.addClass(this._el.nativeElement, clsNonStandlalone);
15765
+ }
15766
+ }
15767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SafeBottomDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
15768
+ 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 }); }
15769
+ }
15770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SafeBottomDirective, decorators: [{
15771
+ type: Directive,
15772
+ args: [{
15773
+ selector: '[safe-area]',
15774
+ standalone: false
15775
+ }]
15776
+ }], propDecorators: { applyTop: [{
15777
+ type: Input
15778
+ }], disableBottom: [{
15779
+ type: Input
15780
+ }] } });
15781
+
15586
15782
  class PortalDynamicPageResolver {
15587
15783
  /** Inserted by Angular inject() migration for backwards compatibility */
15588
15784
  constructor() {
@@ -15726,7 +15922,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
15726
15922
  class FormNewComponent extends BaseComponent {
15727
15923
  constructor() {
15728
15924
  super(...arguments);
15729
- this._location = inject(Location);
15925
+ this._router = inject(Router);
15926
+ this._activatedRoute = inject(ActivatedRoute);
15730
15927
  }
15731
15928
  ngOnInit() {
15732
15929
  super.ngOnInit();
@@ -15736,7 +15933,10 @@ class FormNewComponent extends BaseComponent {
15736
15933
  this.params = { moId, typeDefId, viewId };
15737
15934
  }
15738
15935
  onFormClose() {
15739
- this._location.back();
15936
+ this._router.navigate(['../'], {
15937
+ relativeTo: this._activatedRoute,
15938
+ replaceUrl: true
15939
+ });
15740
15940
  }
15741
15941
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FormNewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15742
15942
  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 }); }
@@ -16722,7 +16922,8 @@ const directives = [
16722
16922
  TooltipDirective,
16723
16923
  SimplebarDirective,
16724
16924
  LeafletLongPressDirective,
16725
- ResizeHandlerDirective
16925
+ ResizeHandlerDirective,
16926
+ SafeBottomDirective
16726
16927
  ];
16727
16928
  const services = [
16728
16929
  PortalService,
@@ -17034,7 +17235,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
17034
17235
  TooltipDirective,
17035
17236
  SimplebarDirective,
17036
17237
  LeafletLongPressDirective,
17037
- ResizeHandlerDirective], imports: [CommonModule,
17238
+ ResizeHandlerDirective,
17239
+ SafeBottomDirective], imports: [CommonModule,
17038
17240
  BarsaNovinRayCoreRoutingModule,
17039
17241
  BarsaSapUiFormPageModule,
17040
17242
  ResizableModule,
@@ -17169,7 +17371,8 @@ class BarsaNovinRayCoreModule extends BaseModule {
17169
17371
  TooltipDirective,
17170
17372
  SimplebarDirective,
17171
17373
  LeafletLongPressDirective,
17172
- ResizeHandlerDirective] }); }
17374
+ ResizeHandlerDirective,
17375
+ SafeBottomDirective] }); }
17173
17376
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaNovinRayCoreModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
17174
17377
  BarsaNovinRayCoreRoutingModule,
17175
17378
  BarsaSapUiFormPageModule,
@@ -17199,5 +17402,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
17199
17402
  * Generated bundle index. Do not edit.
17200
17403
  */
17201
17404
 
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 };
17405
+ 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, 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, validateAllFormFields };
17203
17406
  //# sourceMappingURL=barsa-novin-ray-core.mjs.map