@nettyapps/ntybase 21.0.34 → 21.0.35-beta.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nettyapps/ntybase",
3
- "version": "21.0.34",
3
+ "version": "21.0.35-beta.10",
4
4
  "description": "This library provides foundational services and components for NettyApps Angular applications.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,17 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, OnInit, DoCheck, SimpleChanges, InjectionToken, Signal } from '@angular/core';
3
- import { Observable, Subject } from 'rxjs';
4
- import { Theme, GridApi, GridOptions, StatusPanelDef, GridReadyEvent, IFilterParams, IDoesFilterPassParams } from 'ag-grid-community';
2
+ import { OnDestroy, OnInit, DoCheck, InjectionToken, Signal } from '@angular/core';
3
+ import * as ag_grid_community from 'ag-grid-community';
4
+ import { IFilterParams, IDoesFilterPassParams } from 'ag-grid-community';
5
+ import { EnvironmentProxy, NettyStandardProxy, NettyStandardLogProxy, NettyStandardFilterProxy } from '@nettyapps/ntycontract';
6
+ import { Subject, Observable } from 'rxjs';
7
+ import { MatSnackBar } from '@angular/material/snack-bar';
5
8
  import { MatDialog, MatDialogRef } from '@angular/material/dialog';
6
9
  import { TranslateService } from '@ngx-translate/core';
7
- import { Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanDeactivate } from '@angular/router';
8
10
  import { HttpClient, HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpInterceptorFn } from '@angular/common/http';
9
- import { EnvironmentProxy } from '@nettyapps/ntycontract';
10
- import { MatSnackBar } from '@angular/material/snack-bar';
11
+ import { Theme, GridApi, GridOptions, StatusPanelDef, GridReadyEvent } from 'ag-grid-enterprise';
12
+ import { Router, ActivatedRoute, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanDeactivate } from '@angular/router';
11
13
  import { NgForm, FormGroup } from '@angular/forms';
12
14
  import * as XLSX from 'xlsx';
13
15
  import { ICellRendererAngularComp, IFilterAngularComp } from 'ag-grid-angular';
14
16
  import { I18nService } from '@nettyapps/ntyi18n';
17
+ import { NettyEnumStorageProxy, NettyEnum } from '@nettyapps/ntyui';
15
18
 
16
19
  declare class Ntybase {
17
20
  static ɵfac: i0.ɵɵFactoryDeclaration<Ntybase, never>;
@@ -24,6 +27,54 @@ declare class NtybaseModule {
24
27
  static ɵinj: i0.ɵɵInjectorDeclaration<NtybaseModule>;
25
28
  }
26
29
 
30
+ declare class AlertService {
31
+ private snackBar;
32
+ private dialog;
33
+ private translate;
34
+ constructor(snackBar: MatSnackBar, dialog: MatDialog, translate: TranslateService);
35
+ showAlert(message: string, action?: string, duration?: number): void;
36
+ showWarning(message: string, action?: string, duration?: number): void;
37
+ showConfirm(message: string): Promise<boolean>;
38
+ showSuccess(message: string, duration?: number): void;
39
+ showError(error: any, duration?: number): Promise<void>;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<AlertService, never>;
41
+ static ɵprov: i0.ɵɵInjectableDeclaration<AlertService>;
42
+ }
43
+
44
+ declare abstract class NettyAppsBase implements OnDestroy {
45
+ protected alertService: AlertService;
46
+ protected translateService: TranslateService;
47
+ /**
48
+ * Download the given base64Encoded data as file
49
+ *
50
+ * @param base64Data: base64 encoded data
51
+ * @param fileName: filename to download
52
+ */
53
+ protected downloadFile(base64Data: string | null, fileName: string | null): void;
54
+ /** Download the given base64Endoced data as text file
55
+ *
56
+ * @param base64EncodedFileData
57
+ * @param fileName
58
+ */
59
+ protected downloadTextFile(base64EncodedFileData: string | null, fileName: string | null): void;
60
+ /** Save the given text as a text file
61
+ *
62
+ * @param fileData
63
+ * @param fileName
64
+ */
65
+ protected downloadTextFileNotEncoded(fileData: string | null, fileName: string | null): void;
66
+ /**
67
+ * Download file where the data is provided as blob
68
+ * @param data - Array Buffer data
69
+ * @param type - type of the document.
70
+ */
71
+ protected downloadBlobFile(data: any, type: string, fileName: string): void;
72
+ protected onDestroy$: Subject<void>;
73
+ ngOnDestroy(): void;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<NettyAppsBase, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<NettyAppsBase, "ntybase-netty-apps-base", never, {}, {}, never, never, true, never>;
76
+ }
77
+
27
78
  declare class CurrentUserPreference {
28
79
  coid: any | null;
29
80
  nettyUserPreferenceGUID: any | null;
@@ -43,6 +94,7 @@ declare class NettyAgGridService {
43
94
  private nettyAlertService;
44
95
  private environmentProxy;
45
96
  private commonService;
97
+ protected translateService: TranslateService;
46
98
  constructor();
47
99
  /**
48
100
  * Select user preference
@@ -109,10 +161,20 @@ declare class NettyAgGridService {
109
161
  * @returns
110
162
  */
111
163
  getExcelStyles(): any;
164
+ setAgGridTranslations(gridApi: any): void;
112
165
  static ɵfac: i0.ɵɵFactoryDeclaration<NettyAgGridService, never>;
113
166
  static ɵprov: i0.ɵɵInjectableDeclaration<NettyAgGridService>;
114
167
  }
115
168
 
169
+ declare class NettySecurity {
170
+ coid: any;
171
+ userGUID: any;
172
+ application: string;
173
+ formCode: string;
174
+ action: string;
175
+ allow: boolean;
176
+ }
177
+
116
178
  declare class CommonService {
117
179
  private router;
118
180
  private location;
@@ -224,15 +286,6 @@ declare class CommonService {
224
286
  static ɵprov: i0.ɵɵInjectableDeclaration<CommonService>;
225
287
  }
226
288
 
227
- declare class NettySecurity {
228
- coid: any;
229
- userGUID: any;
230
- application: string;
231
- formCode: string;
232
- action: string;
233
- allow: boolean;
234
- }
235
-
236
289
  declare class SysfunctionProxy {
237
290
  private http;
238
291
  private environmentProxy;
@@ -247,67 +300,36 @@ declare class SysfunctionProxy {
247
300
  static ɵprov: i0.ɵɵInjectableDeclaration<SysfunctionProxy>;
248
301
  }
249
302
 
250
- declare class AlertService {
251
- private snackBar;
252
- private dialog;
253
- private translate;
254
- constructor(snackBar: MatSnackBar, dialog: MatDialog, translate: TranslateService);
255
- showAlert(message: string, action?: string, duration?: number): void;
256
- showWarning(message: string, action?: string, duration?: number): void;
257
- showConfirm(message: string): Promise<boolean>;
258
- showSuccess(message: string, duration?: number): void;
259
- showError(error: any, duration?: number): Promise<void>;
260
- static ɵfac: i0.ɵɵFactoryDeclaration<AlertService, never>;
261
- static ɵprov: i0.ɵɵInjectableDeclaration<AlertService>;
262
- }
303
+ type AgGridSelectionModeType = 'singleRow' | 'multiRow';
263
304
 
264
- declare abstract class NettyAppsBase implements OnDestroy {
265
- protected alertService: AlertService;
266
- protected translateService: TranslateService;
267
- /**
268
- * Download the given base64Encoded data as file
269
- *
270
- * @param base64Data: base64 encoded data
271
- * @param fileName: filename to download
272
- */
273
- protected downloadFile(base64Data: string | null, fileName: string | null): void;
274
- /** Download the given base64Endoced data as text file
275
- *
276
- * @param base64EncodedFileData
277
- * @param fileName
278
- */
279
- protected downloadTextFile(base64EncodedFileData: string | null, fileName: string | null): void;
280
- /** Save the given text as a text file
281
- *
282
- * @param fileData
283
- * @param fileName
284
- */
285
- protected downloadTextFileNotEncoded(fileData: string | null, fileName: string | null): void;
286
- /**
287
- * Download file where the data is provided as blob
288
- * @param data - Array Buffer data
289
- * @param type - type of the document.
290
- */
291
- protected downloadBlobFile(data: any, type: string, fileName: string): void;
292
- protected onDestroy$: Subject<void>;
293
- ngOnDestroy(): void;
294
- static ɵfac: i0.ɵɵFactoryDeclaration<NettyAppsBase, never>;
295
- static ɵcmp: i0.ɵɵComponentDeclaration<NettyAppsBase, "ntybase-netty-apps-base", never, {}, {}, never, never, true, never>;
305
+ interface NettyEntityBaseInterface<T> {
306
+ getPK(): any;
307
+ setPK(pk: any): void;
296
308
  }
297
309
 
298
- declare abstract class NettyAgGridBase<T extends {
299
- [key: string]: any;
300
- }> extends NettyAppsBase implements OnInit {
301
- readOnly: i0.InputSignal<boolean>;
310
+ declare abstract class NettyAgGridBase<T extends NettyEntityBaseInterface<T>> extends NettyAppsBase {
311
+ protected FILTER_MODE_KEY: string;
312
+ protected myTheme: Theme<ag_grid_community.ThemeDefaultParams>;
313
+ readOnly: i0.WritableSignal<boolean>;
302
314
  popupFilterValid: i0.InputSignal<boolean>;
303
315
  popupValid: i0.InputSignal<boolean>;
304
316
  isEmbedded: i0.InputSignal<boolean>;
305
317
  componantParameterGUID: i0.InputSignal<any>;
306
318
  componantParameterType: i0.InputSignal<string>;
307
319
  onElementSelect: i0.OutputEmitterRef<T[]>;
308
- protected customFilters: i0.WritableSignal<boolean>;
309
- protected isFilterValid: i0.WritableSignal<boolean>;
310
- protected isFilterExpanded: i0.WritableSignal<boolean>;
320
+ selectedElement: i0.OutputEmitterRef<any>;
321
+ protected componentName: i0.WritableSignal<string>;
322
+ protected searchValueName: i0.WritableSignal<string>;
323
+ protected preferenceType: i0.WritableSignal<string>;
324
+ searchValue: i0.WritableSignal<string>;
325
+ protected parameterGUID: any;
326
+ protected parameterType: any;
327
+ protected nettyAgGridService: NettyAgGridService;
328
+ protected commonService: CommonService;
329
+ protected sysFunctionProxy: SysfunctionProxy;
330
+ protected environment: EnvironmentProxy;
331
+ menuValid: i0.WritableSignal<boolean>;
332
+ refreshButtonValid: i0.WritableSignal<boolean>;
311
333
  protected authenticationList: Array<NettySecurity>;
312
334
  protected accessRightsProcessed: i0.WritableSignal<boolean>;
313
335
  allowAdd: i0.WritableSignal<boolean>;
@@ -315,11 +337,34 @@ declare abstract class NettyAgGridBase<T extends {
315
337
  allowDelete: i0.WritableSignal<boolean>;
316
338
  allowLog: i0.WritableSignal<boolean>;
317
339
  allowRead: i0.WritableSignal<boolean>;
318
- menuValid: i0.WritableSignal<boolean>;
319
- deleteValid: i0.WritableSignal<boolean>;
320
- selectionValid: i0.WritableSignal<boolean>;
321
- refreshButtonValid: i0.WritableSignal<boolean>;
322
- selectedElement: i0.OutputEmitterRef<any>;
340
+ protected recordList: i0.WritableSignal<T[]>;
341
+ protected record: T | null;
342
+ /**
343
+ * Component initialization lifecycle hook Overide for custom initialization
344
+ */
345
+ protected abstract loadData(): void;
346
+ protected abstract initAgGrid(): void;
347
+ AfterOnInit(): Promise<void>;
348
+ protected onBtnClick?(e: T): void;
349
+ protected getEntityType?(): string;
350
+ protected selectedData?(): void;
351
+ protected setFilter(): void;
352
+ protected popupClose(): void;
353
+ protected onFilterTextBoxVisibilityChange(isOpen: boolean): void;
354
+ /**
355
+ * Handle back button click
356
+ */
357
+ backClicked(): void;
358
+ refreshData(): Promise<void>;
359
+ /** Set data into the grid */
360
+ setData(data: T[]): void;
361
+ setAccessRights(): Promise<boolean>;
362
+ /**
363
+ * Get stored filter mode from local storage
364
+ * @returns boolean
365
+ */
366
+ private getStoredFilterMode;
367
+ agGridSelectionMode: i0.InputSignal<AgGridSelectionModeType>;
323
368
  theme: Theme;
324
369
  protected gridApi: GridApi;
325
370
  protected userGridApi: GridApi;
@@ -328,51 +373,68 @@ declare abstract class NettyAgGridBase<T extends {
328
373
  userColumnDefs: i0.WritableSignal<any>;
329
374
  groupMembersColumnDefs: i0.WritableSignal<any>;
330
375
  protected gridColumnsVisible: i0.WritableSignal<boolean>;
376
+ protected gridExpanded: i0.WritableSignal<boolean>;
331
377
  frameworkComponents: any;
332
378
  selectedRows: i0.WritableSignal<T[]>;
333
379
  isSingleRowSelected: i0.Signal<boolean>;
334
380
  isMultipleRowSelected: i0.Signal<boolean>;
335
- protected gridExpanded: i0.WritableSignal<boolean>;
336
- protected componentName: i0.WritableSignal<string>;
337
- protected searchValueName: i0.WritableSignal<string>;
338
- protected preferenceType: i0.WritableSignal<string>;
339
- searchValue: i0.WritableSignal<string>;
340
- protected openInPopup: i0.WritableSignal<boolean>;
341
- protected nettyAgGridService: NettyAgGridService;
342
- protected commonService: CommonService;
343
- protected router: Router;
344
- protected routerActive: ActivatedRoute;
345
- protected dialog: MatDialog;
346
- protected sysFunctionProxy: SysfunctionProxy;
347
- protected environment: EnvironmentProxy;
348
- protected queryParameterGUID: i0.Signal<any>;
349
- protected queryParameterType: i0.Signal<any>;
350
- protected parameterGUID: any;
351
- protected parameterType: any;
352
- initAgGrid_extension(): void;
381
+ protected customFilters: i0.WritableSignal<boolean>;
353
382
  gridOptions: GridOptions<T>;
354
383
  statusBar: {
355
384
  statusPanels: StatusPanelDef[];
356
385
  };
386
+ protected onGridReady(params: GridReadyEvent): void;
387
+ onFirstDataRendered(params: any): void;
388
+ saveGrid(params: any): void;
389
+ expandCollapse(): void;
390
+ quickSearch(searchStr?: string): void;
391
+ /**
392
+ * Update a single row in the grid
393
+ * @param rowData The updated row data
394
+ * @param idField The field name that serves as unique identifier (default: 'id')
395
+ */
396
+ protected updateRowInGrid(rowData: T, idField?: string): void;
357
397
  /**
358
398
  * Filter mode change
359
399
  */
360
400
  toggleFilterMode(): void;
361
- private getStoredFilterMode;
401
+ setAgGridTranslations(): void;
402
+ initAgGrid_extension(): void;
403
+ onShowHideColumns(): void;
404
+ showHideColumnsAsync(): void;
405
+ showHideColumns(): void;
406
+ showHideEmbeddedColumnsAsync(): void;
407
+ showHideEmbeddedColumns(): void;
408
+ static ɵfac: i0.ɵɵFactoryDeclaration<NettyAgGridBase<any>, never>;
409
+ static ɵcmp: i0.ɵɵComponentDeclaration<NettyAgGridBase<any>, "ntybase-ag-grid-base", never, { "popupFilterValid": { "alias": "popupFilterValid"; "required": false; "isSignal": true; }; "popupValid": { "alias": "popupValid"; "required": false; "isSignal": true; }; "isEmbedded": { "alias": "isEmbedded"; "required": false; "isSignal": true; }; "componantParameterGUID": { "alias": "componantParameterGUID"; "required": false; "isSignal": true; }; "componantParameterType": { "alias": "componantParameterType"; "required": false; "isSignal": true; }; "agGridSelectionMode": { "alias": "agGridSelectionMode"; "required": false; "isSignal": true; }; }, { "onElementSelect": "onElementSelect"; "selectedElement": "selectedElement"; }, never, never, true, never>;
410
+ }
411
+
412
+ interface NettyEntityInterface<T> extends NettyEntityBaseInterface<T> {
413
+ compare(other: T): T;
414
+ }
415
+
416
+ declare abstract class NettyAgGridListBase<T extends NettyEntityInterface<T>> extends NettyAgGridBase<T> implements OnInit {
417
+ hasFilter: i0.InputSignal<boolean>;
418
+ protected isFilterValid: i0.WritableSignal<boolean>;
419
+ protected isFilterExpanded: i0.WritableSignal<boolean>;
420
+ protected filterRefreshTrigger: i0.WritableSignal<number>;
421
+ /**
422
+ * Triggers the filter component to refresh its data
423
+ */
424
+ refreshFilterData(): void;
425
+ protected openEditComponentInPopup: i0.WritableSignal<boolean>;
426
+ protected router: Router;
427
+ protected routerActive: ActivatedRoute;
428
+ protected dialog: MatDialog;
429
+ protected queryParameterGUID: i0.Signal<any>;
430
+ protected queryParameterType: i0.Signal<any>;
431
+ protected openInPopup: i0.WritableSignal<boolean>;
432
+ protected nettyAppsProxy: NettyStandardProxy<T>;
362
433
  /**
363
434
  * Component initialization lifecycle hook
364
435
  */
365
436
  ngOnInit(): Promise<void>;
366
437
  private parseOrReturnValue;
367
- protected onGridReady(params: GridReadyEvent): void;
368
- onFirstDataRendered(params: any): void;
369
- saveGrid(params: any): void;
370
- expandCollapse(): void;
371
- quickSearch(searchStr?: string): void;
372
- /**
373
- * Handle back button click
374
- */
375
- backClicked(): void;
376
438
  gotoURL(routePrefix: string[], rightSidenav: string[] | undefined, parameters: string, type?: string, dialogComponent?: any, isNewTab?: boolean, isPopup?: boolean): void;
377
439
  popupGotoURL(urlSegments: string[]): void;
378
440
  toggleOpenMode(): void;
@@ -392,36 +454,34 @@ declare abstract class NettyAgGridBase<T extends {
392
454
  * @returns true if has a valid value
393
455
  */
394
456
  protected hasValidValue(value: any): boolean;
395
- private setAgGridTranslations;
457
+ protected loadData(): void;
458
+ deleteSelected(): Promise<void>;
459
+ protected deleteRows(rows: T[]): void;
460
+ static ɵfac: i0.ɵɵFactoryDeclaration<NettyAgGridListBase<any>, never>;
461
+ static ɵcmp: i0.ɵɵComponentDeclaration<NettyAgGridListBase<any>, "ntybase-ag-grid-list-base", never, { "hasFilter": { "alias": "hasFilter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
462
+ }
463
+
464
+ interface NettyEntityLogInterface<T> extends NettyEntityBaseInterface<T> {
465
+ logGuid: any | null;
466
+ changingDate: Date | null;
467
+ changingUser: any | null;
468
+ ip: string | null;
469
+ chagingUserName: string | null;
470
+ }
471
+
472
+ declare abstract class NettyAgGridLogBase<T extends NettyEntityLogInterface<T>> extends NettyAgGridBase<T> implements OnInit {
473
+ protected nettyAppsProxy: NettyStandardLogProxy<T>;
396
474
  /**
397
- * Update a single row in the grid
398
- * @param rowData The updated row data
399
- * @param idField The field name that serves as unique identifier (default: 'id')
475
+ * Component initialization lifecycle hook
400
476
  */
401
- protected updateRowInGrid(rowData: T, idField?: string): void;
402
- deleteSelected(): Promise<void>;
403
- refreshData(): Promise<void>;
404
- setAccessRights(): Promise<boolean>;
405
- protected onFilterTextBoxVisibilityChange(isOpen: boolean): void;
406
- protected abstract loadData(filter?: string): void;
407
- protected abstract initAgGrid(): void;
408
- protected onBtnClick?(e: T): void;
409
- protected deleteRows?(rows: T[]): void;
410
- protected getEntityType?(): string;
411
- protected selectedData?(): void;
412
- protected setFilter(): void;
413
- protected popupClose(): void;
414
- onShowHideColumns(): void;
415
- showHideColumnsAsync(): void;
416
- showHideColumns(): void;
417
- showHideEmbeddedColumnsAsync(): void;
418
- showHideEmbeddedColumns(): void;
419
- static ɵfac: i0.ɵɵFactoryDeclaration<NettyAgGridBase<any>, never>;
420
- static ɵcmp: i0.ɵɵComponentDeclaration<NettyAgGridBase<any>, "ntybase-ag-grid-base", never, { "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "popupFilterValid": { "alias": "popupFilterValid"; "required": false; "isSignal": true; }; "popupValid": { "alias": "popupValid"; "required": false; "isSignal": true; }; "isEmbedded": { "alias": "isEmbedded"; "required": false; "isSignal": true; }; "componantParameterGUID": { "alias": "componantParameterGUID"; "required": false; "isSignal": true; }; "componantParameterType": { "alias": "componantParameterType"; "required": false; "isSignal": true; }; }, { "onElementSelect": "onElementSelect"; "selectedElement": "selectedElement"; }, never, never, true, never>;
477
+ ngOnInit(): Promise<void>;
478
+ protected loadData(): void;
479
+ static ɵfac: i0.ɵɵFactoryDeclaration<NettyAgGridLogBase<any>, never>;
480
+ static ɵcmp: i0.ɵɵComponentDeclaration<NettyAgGridLogBase<any>, "ntybase-ag-grid-log-base", never, {}, {}, never, never, true, never>;
421
481
  }
422
482
 
423
483
  type UserViewMode = 'fullscreen' | 'sidenav' | 'dialog';
424
- declare abstract class NettyAgGridSaveBase<T> extends NettyAppsBase implements DoCheck {
484
+ declare abstract class NettyAgGridSaveBase<T extends NettyEntityInterface<T>> extends NettyAppsBase implements OnInit, DoCheck {
425
485
  protected router: Router;
426
486
  protected route: ActivatedRoute;
427
487
  protected commonService: CommonService;
@@ -431,19 +491,26 @@ declare abstract class NettyAgGridSaveBase<T> extends NettyAppsBase implements D
431
491
  parameters: i0.InputSignal<string>;
432
492
  embedded: i0.InputSignal<boolean>;
433
493
  isEmbedded: i0.InputSignal<boolean>;
494
+ protected nettyAppsProxy: NettyStandardProxy<T>;
495
+ protected recordType: i0.WritableSignal<string>;
434
496
  currentItem: i0.WritableSignal<T>;
435
497
  initialItem: T;
436
498
  formChanged: boolean;
437
499
  saveForm: NgForm;
438
500
  protected dialogRef: MatDialogRef<any, any> | null;
439
501
  protected dialogData: any;
502
+ constructor();
503
+ ngOnInit(): Promise<void>;
440
504
  updateValid: i0.WritableSignal<boolean>;
441
505
  setUpdateValid(value: boolean): void;
506
+ /**
507
+ * Initialize parameters. This method is called in ngOnInit or constructor
508
+ */
509
+ protected initParameters(urlPath: string): void;
442
510
  /**
443
511
  * Determine view mode based on current route
444
512
  */
445
513
  protected determineViewMode(): void;
446
- ngOnInit(): void;
447
514
  /**
448
515
  * Set data to the form while preserving any unsaved changes
449
516
  * @param item - Data object of type T to populate the form
@@ -463,7 +530,6 @@ declare abstract class NettyAgGridSaveBase<T> extends NettyAppsBase implements D
463
530
  */
464
531
  canDeactivate(): Promise<boolean>;
465
532
  protected getGuidFromParameters(): string;
466
- ngOnChanges(changes: SimpleChanges): void;
467
533
  /**
468
534
  * Close sidenav or navigate back
469
535
  */
@@ -472,8 +538,27 @@ declare abstract class NettyAgGridSaveBase<T> extends NettyAppsBase implements D
472
538
  * Back button clicked
473
539
  */
474
540
  backClicked(): Promise<void>;
475
- protected abstract loadDetailData(): void;
476
541
  protected validateSaveRecord(recordGUID: any): boolean;
542
+ protected abstract createNewRecord(): T;
543
+ /**
544
+ * Save data to API
545
+ * Handles both create and update operations based on record existence
546
+ */
547
+ saveRecord(): void;
548
+ /**
549
+ * Create new record
550
+ */
551
+ insertRecord(): void;
552
+ /**
553
+ * Update record
554
+ */
555
+ updateRecord(): void;
556
+ /**
557
+ * Load data from API based on GUID
558
+ * Handles both new record creation and existing record editing
559
+ * guid - Unique identifier of the record
560
+ */
561
+ loadDetailData(): void;
477
562
  gotoURL(routePrefix: string[], rightSidenav: string[] | undefined, parameters: string, type?: string, dialogComponent?: any, isNewTab?: boolean, isPopup?: boolean): void;
478
563
  popupGotoURL(urlSegments: string[]): void;
479
564
  static ɵfac: i0.ɵɵFactoryDeclaration<NettyAgGridSaveBase<any>, never>;
@@ -481,7 +566,7 @@ declare abstract class NettyAgGridSaveBase<T> extends NettyAppsBase implements D
481
566
  }
482
567
 
483
568
  type AOA = string[][];
484
- declare abstract class ExcelImportBase extends NettyAgGridBase<any> {
569
+ declare abstract class ExcelImportBase extends NettyAgGridListBase<any> {
485
570
  protected dataList: AOA;
486
571
  protected wopts: XLSX.WritingOptions;
487
572
  protected fileName: string;
@@ -881,6 +966,23 @@ declare class NettyBaseApp {
881
966
  static ɵcmp: i0.ɵɵComponentDeclaration<NettyBaseApp, "ntybase-netty-base-app", never, {}, {}, never, never, true, never>;
882
967
  }
883
968
 
969
+ declare class EnvironmentInfo {
970
+ showNettyInfo: boolean;
971
+ protected environmentProxy: EnvironmentProxy;
972
+ get hasConfig(): boolean;
973
+ get version(): string;
974
+ get isProduction(): boolean;
975
+ get defaultLanguage(): string;
976
+ get supportedLanguages(): string[];
977
+ get apiUrl(): string;
978
+ get adminUrl(): string;
979
+ get baseHref(): string;
980
+ get application(): string;
981
+ ngOnInit(): void;
982
+ static ɵfac: i0.ɵɵFactoryDeclaration<EnvironmentInfo, never>;
983
+ static ɵcmp: i0.ɵɵComponentDeclaration<EnvironmentInfo, "ntybase-environment-info", never, { "showNettyInfo": { "alias": "showNettyInfo"; "required": false; }; }, {}, never, never, true, never>;
984
+ }
985
+
884
986
  interface EnvironmentConfig {
885
987
  production: boolean;
886
988
  version: string;
@@ -909,25 +1011,6 @@ declare class EnvironmentInfoService {
909
1011
  static ɵprov: i0.ɵɵInjectableDeclaration<EnvironmentInfoService>;
910
1012
  }
911
1013
 
912
- declare class EnvironmentInfo {
913
- private environmentService;
914
- showNettyInfo: boolean;
915
- environmentConfig: EnvironmentConfig | null;
916
- get hasConfig(): boolean;
917
- get version(): string;
918
- get isProduction(): boolean;
919
- get defaultLanguage(): string;
920
- get supportedLanguages(): string[];
921
- get apiUrl(): string;
922
- get adminUrl(): string;
923
- get baseHref(): string;
924
- get application(): string;
925
- constructor(environmentService: EnvironmentInfoService);
926
- ngOnInit(): void;
927
- static ɵfac: i0.ɵɵFactoryDeclaration<EnvironmentInfo, never>;
928
- static ɵcmp: i0.ɵɵComponentDeclaration<EnvironmentInfo, "ntybase-environment-info", never, { "showNettyInfo": { "alias": "showNettyInfo"; "required": false; }; }, {}, never, never, true, never>;
929
- }
930
-
931
1014
  declare const NtyLoadingInterceptor: HttpInterceptorFn;
932
1015
 
933
1016
  declare class NtyLoadingComponent {
@@ -949,5 +1032,23 @@ declare class NettyMenuService {
949
1032
  static ɵprov: i0.ɵɵInjectableDeclaration<NettyMenuService>;
950
1033
  }
951
1034
 
952
- export { AlertService, AuthenticationGuard, AuthenticationInterceptor, AuthenticationService, ButtonRenderer, CanDeactivateGuard, CheckboxRenderer, CommonService, ConfirmDialog, CredentialsService, CurrentUserPreference, ENVIRONMENT_CONFIG, EnvironmentInfo, EnvironmentInfoService, ExcelImportBase, ForgotPassword, Login, LoginDto, MFACodeDto, MfaLogin, NettyAgGridBase, NettyAgGridSaveBase, NettyAgGridService, NettyAppsBase, NettyBaseApp, NettyHelper, NettyImageService, NettyMenuService, NtyLoadingComponent, NtyLoadingInterceptor, Ntybase, NtybaseModule, RangeDateTimeFilter, RangeNumberFilter, RangeStringFilter, UrlHelperService, ntyAuthenticationInterceptor };
953
- export type { CanComponentDeactivate, Credentials, EnvironmentConfig, LoginContext, MFACodeContext, UserViewMode };
1035
+ declare abstract class NettyAppsFilterBase<Trecord, Tfilter> extends NettyAppsBase {
1036
+ isFilterExpanded: i0.ModelSignal<boolean>;
1037
+ filteredRecords: i0.OutputEmitterRef<Trecord[]>;
1038
+ refresh: i0.InputSignal<number>;
1039
+ protected filterProxy: NettyStandardFilterProxy<any>;
1040
+ protected enumStorage: NettyEnumStorageProxy;
1041
+ protected currentItem: i0.WritableSignal<Tfilter>;
1042
+ allYesNoEnumList: i0.WritableSignal<NettyEnum[]>;
1043
+ constructor();
1044
+ ngOnInit(): Promise<void>;
1045
+ protected onApply(): void;
1046
+ protected onReset(): void;
1047
+ protected onExport(): void;
1048
+ protected abstract createNewRecord(): Tfilter;
1049
+ static ɵfac: i0.ɵɵFactoryDeclaration<NettyAppsFilterBase<any, any>, never>;
1050
+ static ɵcmp: i0.ɵɵComponentDeclaration<NettyAppsFilterBase<any, any>, "ntybase-netty-apps-base", never, { "isFilterExpanded": { "alias": "isFilterExpanded"; "required": false; "isSignal": true; }; "refresh": { "alias": "refresh"; "required": false; "isSignal": true; }; }, { "isFilterExpanded": "isFilterExpandedChange"; "filteredRecords": "filteredRecords"; }, never, never, true, never>;
1051
+ }
1052
+
1053
+ export { AlertService, AuthenticationGuard, AuthenticationInterceptor, AuthenticationService, ButtonRenderer, CanDeactivateGuard, CheckboxRenderer, CommonService, ConfirmDialog, CredentialsService, CurrentUserPreference, ENVIRONMENT_CONFIG, EnvironmentInfo, EnvironmentInfoService, ExcelImportBase, ForgotPassword, Login, LoginDto, MFACodeDto, MfaLogin, NettyAgGridBase, NettyAgGridListBase, NettyAgGridLogBase, NettyAgGridSaveBase, NettyAgGridService, NettyAppsBase, NettyAppsFilterBase, NettyBaseApp, NettyHelper, NettyImageService, NettyMenuService, NtyLoadingComponent, NtyLoadingInterceptor, Ntybase, NtybaseModule, RangeDateTimeFilter, RangeNumberFilter, RangeStringFilter, UrlHelperService, ntyAuthenticationInterceptor };
1054
+ export type { AgGridSelectionModeType, CanComponentDeactivate, Credentials, EnvironmentConfig, LoginContext, MFACodeContext, NettyEntityInterface, NettyEntityLogInterface, UserViewMode };