@nettyapps/ntybase 21.0.35-beta.9 → 21.0.36
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.
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Injectable, inject, NgModule,
|
|
2
|
+
import { Component, Injectable, inject, NgModule, input, computed, signal, output, effect, linkedSignal, ViewChild, model, Input, InjectionToken, Optional, Inject } from '@angular/core';
|
|
3
3
|
import * as i1$3 from '@angular/common/http';
|
|
4
4
|
import { HttpErrorResponse, HttpResponse, HTTP_INTERCEPTORS, HttpClient, HttpHeaders } from '@angular/common/http';
|
|
5
5
|
import { of, throwError, Subject, lastValueFrom, map, catchError as catchError$1, finalize, take as take$1, takeUntil } from 'rxjs';
|
|
6
6
|
import { catchError, map as map$1, take, finalize as finalize$1 } from 'rxjs/operators';
|
|
7
7
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
8
8
|
import * as i2$1 from '@nettyapps/ntycontract';
|
|
9
|
-
import { EnvironmentProxy, injectNettyStandardProxy, injectNettyStandardLogProxy } from '@nettyapps/ntycontract';
|
|
9
|
+
import { EnvironmentProxy, injectNettyStandardProxy, injectNettyStandardLogProxy, injectNettyStandardFilterProxy } from '@nettyapps/ntycontract';
|
|
10
10
|
import { DatePipe, CommonModule, Location, DecimalPipe } from '@angular/common';
|
|
11
11
|
import { Buffer } from 'buffer';
|
|
12
12
|
import * as i1 from '@angular/material/dialog';
|
|
@@ -36,14 +36,14 @@ import { MatInputModule } from '@angular/material/input';
|
|
|
36
36
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
37
37
|
|
|
38
38
|
class Ntybase {
|
|
39
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
40
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
39
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: Ntybase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: Ntybase, isStandalone: false, selector: "lib-ntybase", ngImport: i0, template: `
|
|
41
41
|
<p>
|
|
42
42
|
ntybase works!
|
|
43
43
|
</p>
|
|
44
44
|
`, isInline: true, styles: [""] });
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: Ntybase, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{ selector: 'lib-ntybase', standalone: false, template: `
|
|
49
49
|
<p>
|
|
@@ -121,10 +121,10 @@ class CredentialsService {
|
|
|
121
121
|
return '';
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
125
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CredentialsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
125
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CredentialsService, providedIn: 'root' });
|
|
126
126
|
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CredentialsService, decorators: [{
|
|
128
128
|
type: Injectable,
|
|
129
129
|
args: [{
|
|
130
130
|
providedIn: 'root',
|
|
@@ -173,10 +173,10 @@ class UrlHelperService {
|
|
|
173
173
|
replaceUrl: true,
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
177
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
176
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: UrlHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
177
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: UrlHelperService, providedIn: 'root' });
|
|
178
178
|
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: UrlHelperService, decorators: [{
|
|
180
180
|
type: Injectable,
|
|
181
181
|
args: [{
|
|
182
182
|
providedIn: 'root',
|
|
@@ -266,10 +266,10 @@ class AuthenticationInterceptor {
|
|
|
266
266
|
}));
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
270
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
269
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
270
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationInterceptor });
|
|
271
271
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationInterceptor, decorators: [{
|
|
273
273
|
type: Injectable
|
|
274
274
|
}] });
|
|
275
275
|
|
|
@@ -280,9 +280,9 @@ class CanDeactivateGuard {
|
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
class NtybaseModule {
|
|
283
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
284
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.
|
|
285
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.
|
|
283
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtybaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
284
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.2", ngImport: i0, type: NtybaseModule, declarations: [Ntybase], exports: [Ntybase] });
|
|
285
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtybaseModule, providers: [
|
|
286
286
|
{
|
|
287
287
|
provide: HTTP_INTERCEPTORS,
|
|
288
288
|
useClass: AuthenticationInterceptor,
|
|
@@ -292,7 +292,7 @@ class NtybaseModule {
|
|
|
292
292
|
DatePipe,
|
|
293
293
|
] });
|
|
294
294
|
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtybaseModule, decorators: [{
|
|
296
296
|
type: NgModule,
|
|
297
297
|
args: [{
|
|
298
298
|
declarations: [Ntybase],
|
|
@@ -313,10 +313,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
313
313
|
class ConfirmDialog {
|
|
314
314
|
dialogRef = inject((MatDialogRef));
|
|
315
315
|
data = inject(MAT_DIALOG_DATA);
|
|
316
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
317
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
316
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ConfirmDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
317
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: ConfirmDialog, isStandalone: true, selector: "ntybase-confirm-dialog", ngImport: i0, template: "<div class=\"dialog-container\">\n <h2 mat-dialog-title class=\"dialog-title\">\n <mat-icon color=\"warn\" class=\"warning-icon\">warning</mat-icon>\n <span>{{data.title}}</span>\n </h2>\n\n <mat-divider class=\"divider\"></mat-divider>\n\n <mat-dialog-content class=\"dialog-content\">\n <p class=\"message\">{{data.message}}</p>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\" class=\"dialog-actions\">\n <button mat-stroked-button [mat-dialog-close]=\"false\" class=\"btn-cancel\">\n {{'@btnCancel' | translate}}\n </button>\n <button\n mat-flat-button\n color=\"warn\"\n [mat-dialog-close]=\"true\"\n class=\"btn-ok\"\n >\n {{'@btnOK' | translate}}\n </button>\n </mat-dialog-actions>\n</div>\n", styles: [".dialog-container{display:flex;flex-direction:column;min-width:400px;max-width:90vw;padding:24px;border-radius:12px!important}.dialog-title{display:flex;align-items:center;margin:0 0 12px;padding:0;color:var(--mat-sys-primary)}.dialog-title span{margin-left:8px}.warning-icon{color:var(--mat-sys-primary);transform:scale(1.2)}.divider{margin:8px 0 16px;border-top-color:var(--mat-sys-primary)}.dialog-content{padding:8px 0 24px;margin:0;color:var(--mat-sys-primary);line-height:1.6}.dialog-content .message{margin:0;white-space:pre-wrap}.dialog-actions{padding:16px 0 0;margin:0;gap:8px}.btn-ok{padding:8px 16px;border-radius:6px;font-weight:500;background-color:var(--mat-sys-primary);color:var(--mat-sys-primary-container)}.btn-cancel{padding:8px 16px;border-radius:6px;color:var(--mat-sys-secondary-container);background-color:var(--mat-sys-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
318
318
|
}
|
|
319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ConfirmDialog, decorators: [{
|
|
320
320
|
type: Component,
|
|
321
321
|
args: [{ selector: 'ntybase-confirm-dialog', imports: [
|
|
322
322
|
MatDialogModule,
|
|
@@ -330,10 +330,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
330
330
|
class ErrorAlert {
|
|
331
331
|
dialogRef = inject((MatDialogRef));
|
|
332
332
|
data = inject(MAT_DIALOG_DATA);
|
|
333
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
334
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
333
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ErrorAlert, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
334
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: ErrorAlert, isStandalone: true, selector: "ntybase-error-alert", ngImport: i0, template: "<div class=\"error-dialog-container\">\n <div class=\"header\">\n <mat-icon color=\"error\">error_outline</mat-icon>\n <h2 class=\"error-title\">{{ data.title }}</h2>\n </div>\n\n <div class=\"error-content\">\n <p>{{ data.message }}</p>\n </div>\n\n <mat-dialog-actions class=\"dialog-actions\">\n <button mat-flat-button [mat-dialog-close]=\"true\" class=\"btn-ok\">\n {{'@btnOK' | translate}}\n </button>\n </mat-dialog-actions>\n</div>\n", styles: [".error-dialog-container{padding:40px 32px;text-align:center;min-width:380px;max-width:450px;background:var(--mat-sys-primary);border-radius:20px;box-shadow:0 15px 35px #00000012}.error-dialog-container .header{display:flex;flex-direction:column;align-items:center;gap:12px}.error-dialog-container .header mat-icon{font-size:52px;width:52px;height:52px;color:var(--mat-sys-inverse-primary);margin-bottom:8px}.error-dialog-container .header .error-title{margin:0;font-size:1.4rem;font-weight:700;color:var(--mat-sys-surface);letter-spacing:-.02em}.error-dialog-container .error-content{margin:24px 0 32px;font-size:1rem;line-height:1.6;color:var(--mat-sys-surface)}.error-dialog-container .dialog-actions{display:flex;justify-content:center;padding:0;margin:0}.error-dialog-container .btn-ok{min-width:120px;padding:12px 24px;font-weight:600;font-size:1rem;border-radius:10px;background:var(--mat-sys-inverse-primary);color:var(--mat-sys-primary);border:none;cursor:pointer;transition:all .2s ease}.error-dialog-container .btn-ok:hover{background:var(--mat-sys-inverse-primary);opacity:.9;box-shadow:0 5px 15px #0000001a}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
335
335
|
}
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ErrorAlert, decorators: [{
|
|
337
337
|
type: Component,
|
|
338
338
|
args: [{ selector: 'ntybase-error-alert', imports: [MatDialogModule, MatIconModule, CommonModule, TranslateModule], template: "<div class=\"error-dialog-container\">\n <div class=\"header\">\n <mat-icon color=\"error\">error_outline</mat-icon>\n <h2 class=\"error-title\">{{ data.title }}</h2>\n </div>\n\n <div class=\"error-content\">\n <p>{{ data.message }}</p>\n </div>\n\n <mat-dialog-actions class=\"dialog-actions\">\n <button mat-flat-button [mat-dialog-close]=\"true\" class=\"btn-ok\">\n {{'@btnOK' | translate}}\n </button>\n </mat-dialog-actions>\n</div>\n", styles: [".error-dialog-container{padding:40px 32px;text-align:center;min-width:380px;max-width:450px;background:var(--mat-sys-primary);border-radius:20px;box-shadow:0 15px 35px #00000012}.error-dialog-container .header{display:flex;flex-direction:column;align-items:center;gap:12px}.error-dialog-container .header mat-icon{font-size:52px;width:52px;height:52px;color:var(--mat-sys-inverse-primary);margin-bottom:8px}.error-dialog-container .header .error-title{margin:0;font-size:1.4rem;font-weight:700;color:var(--mat-sys-surface);letter-spacing:-.02em}.error-dialog-container .error-content{margin:24px 0 32px;font-size:1rem;line-height:1.6;color:var(--mat-sys-surface)}.error-dialog-container .dialog-actions{display:flex;justify-content:center;padding:0;margin:0}.error-dialog-container .btn-ok{min-width:120px;padding:12px 24px;font-weight:600;font-size:1rem;border-radius:10px;background:var(--mat-sys-inverse-primary);color:var(--mat-sys-primary);border:none;cursor:pointer;transition:all .2s ease}.error-dialog-container .btn-ok:hover{background:var(--mat-sys-inverse-primary);opacity:.9;box-shadow:0 5px 15px #0000001a}\n"] }]
|
|
339
339
|
}] });
|
|
@@ -411,10 +411,10 @@ class AlertService {
|
|
|
411
411
|
});
|
|
412
412
|
});
|
|
413
413
|
}
|
|
414
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
415
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
414
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AlertService, deps: [{ token: i1$2.MatSnackBar }, { token: i1.MatDialog }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
415
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AlertService, providedIn: 'root' });
|
|
416
416
|
}
|
|
417
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AlertService, decorators: [{
|
|
418
418
|
type: Injectable,
|
|
419
419
|
args: [{
|
|
420
420
|
providedIn: 'root',
|
|
@@ -422,6 +422,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
422
422
|
}], ctorParameters: () => [{ type: i1$2.MatSnackBar }, { type: i1.MatDialog }, { type: i1$1.TranslateService }] });
|
|
423
423
|
|
|
424
424
|
class NettyAppsBase {
|
|
425
|
+
// ********************************************
|
|
426
|
+
// *** INPUTS ***
|
|
427
|
+
// ********************************************
|
|
428
|
+
embedded = input(false, ...(ngDevMode ? [{ debugName: "embedded" }] : [])); // Is the form embedded to an other component
|
|
429
|
+
_isEmbedded = computed(() => this.embedded() ?? false, ...(ngDevMode ? [{ debugName: "_isEmbedded" }] : []));
|
|
425
430
|
// ---------------------------------
|
|
426
431
|
// --- SERVICES ---
|
|
427
432
|
// ---------------------------------
|
|
@@ -536,13 +541,13 @@ class NettyAppsBase {
|
|
|
536
541
|
this.onDestroy$.next();
|
|
537
542
|
this.onDestroy$.complete();
|
|
538
543
|
}
|
|
539
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
540
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
544
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAppsBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
545
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: NettyAppsBase, isStandalone: true, selector: "ntybase-netty-apps-base", inputs: { embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: ``, isInline: true });
|
|
541
546
|
}
|
|
542
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
547
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAppsBase, decorators: [{
|
|
543
548
|
type: Component,
|
|
544
549
|
args: [{ selector: 'ntybase-netty-apps-base', imports: [], template: `` }]
|
|
545
|
-
}] });
|
|
550
|
+
}], propDecorators: { embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }] } });
|
|
546
551
|
|
|
547
552
|
class NettyHelper {
|
|
548
553
|
/**
|
|
@@ -858,10 +863,10 @@ class CommonService {
|
|
|
858
863
|
await this.alertService.showAlert(title, message);
|
|
859
864
|
this.goBack();
|
|
860
865
|
}
|
|
861
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
862
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
866
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CommonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
867
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CommonService, providedIn: 'root' });
|
|
863
868
|
}
|
|
864
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CommonService, decorators: [{
|
|
865
870
|
type: Injectable,
|
|
866
871
|
args: [{
|
|
867
872
|
providedIn: 'root',
|
|
@@ -1193,10 +1198,10 @@ class NettyAgGridService {
|
|
|
1193
1198
|
});
|
|
1194
1199
|
}
|
|
1195
1200
|
}
|
|
1196
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1197
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
1201
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1202
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridService, providedIn: 'root' });
|
|
1198
1203
|
}
|
|
1199
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridService, decorators: [{
|
|
1200
1205
|
type: Injectable,
|
|
1201
1206
|
args: [{
|
|
1202
1207
|
providedIn: 'root',
|
|
@@ -1233,10 +1238,10 @@ class SysfunctionProxy {
|
|
|
1233
1238
|
return throwError(() => new Error(errorMessage ?? ''));
|
|
1234
1239
|
}));
|
|
1235
1240
|
}
|
|
1236
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1237
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
1241
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SysfunctionProxy, deps: [{ token: i1$3.HttpClient }, { token: i2$1.EnvironmentProxy }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1242
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SysfunctionProxy, providedIn: 'root' });
|
|
1238
1243
|
}
|
|
1239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SysfunctionProxy, decorators: [{
|
|
1240
1245
|
type: Injectable,
|
|
1241
1246
|
args: [{
|
|
1242
1247
|
providedIn: 'root',
|
|
@@ -1253,14 +1258,17 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1253
1258
|
// ********************************************
|
|
1254
1259
|
// *** INPUTS ***
|
|
1255
1260
|
// ********************************************
|
|
1256
|
-
readOnly = signal(true, ...(ngDevMode ? [{ debugName: "readOnly" }] : [])); // Is the form in readonly mode
|
|
1257
1261
|
popupFilterValid = input(false, ...(ngDevMode ? [{ debugName: "popupFilterValid" }] : [])); // Is the popup filter valid
|
|
1258
1262
|
popupValid = input(false, ...(ngDevMode ? [{ debugName: "popupValid" }] : [])); // Is the form in popup mode
|
|
1259
|
-
isEmbedded = input(false, ...(ngDevMode ? [{ debugName: "isEmbedded" }] : [])); // Is the form embedded to an other component
|
|
1260
1263
|
// Parameters passed when the component is embeded into an other
|
|
1261
1264
|
componantParameterGUID = input('', ...(ngDevMode ? [{ debugName: "componantParameterGUID" }] : [])); // GUID of the parameter
|
|
1262
1265
|
componantParameterType = input('', ...(ngDevMode ? [{ debugName: "componantParameterType" }] : [])); // Type of the parameter (Field Name)
|
|
1263
1266
|
// ********************************************
|
|
1267
|
+
// *** Computed ***
|
|
1268
|
+
// ********************************************
|
|
1269
|
+
_isPopupFilterValid = computed(() => this.popupFilterValid() ?? false, ...(ngDevMode ? [{ debugName: "_isPopupFilterValid" }] : []));
|
|
1270
|
+
_isPopupValid = computed(() => this.popupValid() ?? false, ...(ngDevMode ? [{ debugName: "_isPopupValid" }] : []));
|
|
1271
|
+
// ********************************************
|
|
1264
1272
|
// *** EVENTS ***
|
|
1265
1273
|
// ********************************************
|
|
1266
1274
|
/*
|
|
@@ -1289,6 +1297,7 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1289
1297
|
authenticationList = [];
|
|
1290
1298
|
// User access writes
|
|
1291
1299
|
accessRightsProcessed = signal(false, ...(ngDevMode ? [{ debugName: "accessRightsProcessed" }] : []));
|
|
1300
|
+
readOnly = signal(true, ...(ngDevMode ? [{ debugName: "readOnly" }] : [])); // Is the form in readonly mode
|
|
1292
1301
|
allowAdd = signal(false, ...(ngDevMode ? [{ debugName: "allowAdd" }] : []));
|
|
1293
1302
|
allowEdit = signal(false, ...(ngDevMode ? [{ debugName: "allowEdit" }] : []));
|
|
1294
1303
|
allowDelete = signal(false, ...(ngDevMode ? [{ debugName: "allowDelete" }] : []));
|
|
@@ -1317,50 +1326,45 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1317
1326
|
backClicked() {
|
|
1318
1327
|
this.commonService.goBack();
|
|
1319
1328
|
}
|
|
1320
|
-
async refreshData() {
|
|
1321
|
-
try {
|
|
1322
|
-
this.loadData();
|
|
1323
|
-
await this.alertService.showAlert('@dataRefreshedSuccessfully');
|
|
1324
|
-
}
|
|
1325
|
-
catch (err) {
|
|
1326
|
-
this.alertService.showError(err);
|
|
1327
|
-
}
|
|
1328
|
-
}
|
|
1329
1329
|
/** Set data into the grid */
|
|
1330
|
-
setData(data) {
|
|
1330
|
+
setData(data, initialize = false) {
|
|
1331
1331
|
this.recordList.set(data);
|
|
1332
1332
|
if (this.columnDefs() == null || this.columnDefs().length == 0) {
|
|
1333
1333
|
this.initAgGrid();
|
|
1334
1334
|
}
|
|
1335
1335
|
if (this.searchValue() && this.gridApi) {
|
|
1336
1336
|
this.gridApi.setGridOption('quickFilterText', this.searchValue());
|
|
1337
|
-
if (
|
|
1338
|
-
if (this.
|
|
1339
|
-
this.
|
|
1337
|
+
if (!initialize) {
|
|
1338
|
+
if (this.recordList() == undefined || this.recordList().length == 0) {
|
|
1339
|
+
if (!this._isEmbedded()) {
|
|
1340
|
+
this.alertService.showWarning('@recordNotFoundSearch');
|
|
1341
|
+
}
|
|
1340
1342
|
}
|
|
1341
1343
|
}
|
|
1342
1344
|
}
|
|
1343
1345
|
}
|
|
1344
|
-
async setAccessRights() {
|
|
1346
|
+
async setAccessRights(forLog = false) {
|
|
1345
1347
|
this.authenticationList = await lastValueFrom(this.sysFunctionProxy.getAuthentication(this.componentName())).catch((e) => {
|
|
1346
1348
|
return throwError(() => new Error(e));
|
|
1347
1349
|
});
|
|
1350
|
+
this.allowAdd.set(false);
|
|
1351
|
+
this.allowEdit.set(false);
|
|
1352
|
+
this.allowDelete.set(false);
|
|
1353
|
+
this.allowLog.set(false);
|
|
1348
1354
|
try {
|
|
1349
1355
|
this.allowRead.set(this.authenticationList.find((f) => f.action == 'read')?.allow ?? false);
|
|
1350
1356
|
if (this.allowRead() == false) {
|
|
1351
1357
|
this.commonService.userNotAllowedToRead();
|
|
1352
1358
|
return false;
|
|
1353
1359
|
}
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1360
|
+
if (!forLog) {
|
|
1361
|
+
this.allowAdd.set(this.authenticationList.find((f) => f.action == 'add')?.allow ?? false);
|
|
1362
|
+
this.allowEdit.set(this.authenticationList.find((f) => f.action == 'edit')?.allow ?? false);
|
|
1363
|
+
this.allowDelete.set(this.authenticationList.find((f) => f.action == 'delete')?.allow ?? false);
|
|
1364
|
+
this.allowLog.set(this.authenticationList.find((f) => f.action == 'logAccess')?.allow ?? false);
|
|
1365
|
+
}
|
|
1358
1366
|
}
|
|
1359
1367
|
catch (error) {
|
|
1360
|
-
this.allowAdd.set(false);
|
|
1361
|
-
this.allowEdit.set(false);
|
|
1362
|
-
this.allowDelete.set(false);
|
|
1363
|
-
this.allowLog.set(false);
|
|
1364
1368
|
return false;
|
|
1365
1369
|
}
|
|
1366
1370
|
this.accessRightsProcessed.set(true);
|
|
@@ -1384,6 +1388,7 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1384
1388
|
// *********************************************************
|
|
1385
1389
|
// Component inputs
|
|
1386
1390
|
agGridSelectionMode = input('multiRow', ...(ngDevMode ? [{ debugName: "agGridSelectionMode" }] : []));
|
|
1391
|
+
_agGridSelectionMode = computed(() => this.agGridSelectionMode() == 'singleRow' ? 'singleRow' : 'multiRow', ...(ngDevMode ? [{ debugName: "_agGridSelectionMode" }] : []));
|
|
1387
1392
|
// AG-Grid theme setting (dark mode)
|
|
1388
1393
|
theme = this.myTheme;
|
|
1389
1394
|
// Grid references
|
|
@@ -1411,10 +1416,14 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1411
1416
|
// Grid configuration options
|
|
1412
1417
|
gridOptions = {
|
|
1413
1418
|
rowSelection: {
|
|
1414
|
-
mode: this.
|
|
1419
|
+
mode: this._agGridSelectionMode(), checkboxes: true, headerCheckbox: true,
|
|
1415
1420
|
selectAll: 'filtered', hideDisabledCheckboxes: true, suppressRowClickSelection: false,
|
|
1416
1421
|
enableCellChangeFlash: true,
|
|
1417
1422
|
},
|
|
1423
|
+
getRowId: (params) => {
|
|
1424
|
+
const pkField = this.pkFieldName();
|
|
1425
|
+
return params.data[pkField];
|
|
1426
|
+
},
|
|
1418
1427
|
};
|
|
1419
1428
|
// Statusbar
|
|
1420
1429
|
statusBar = {
|
|
@@ -1472,10 +1481,27 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1472
1481
|
/**
|
|
1473
1482
|
* Update a single row in the grid
|
|
1474
1483
|
* @param rowData The updated row data
|
|
1475
|
-
* @param idField The field name that serves as unique identifier (default:
|
|
1484
|
+
* @param idField The field name that serves as unique identifier (default: pkFieldName())
|
|
1476
1485
|
*/
|
|
1477
|
-
updateRowInGrid(rowData, idField = '
|
|
1478
|
-
|
|
1486
|
+
updateRowInGrid(rowData, idField = '') {
|
|
1487
|
+
if (!this.gridApi || !rowData)
|
|
1488
|
+
return;
|
|
1489
|
+
const field = idField || this.pkFieldName();
|
|
1490
|
+
const id = rowData[field];
|
|
1491
|
+
if (id === undefined || id === null) {
|
|
1492
|
+
this.loadData();
|
|
1493
|
+
return;
|
|
1494
|
+
}
|
|
1495
|
+
let rowNode = this.gridApi.getRowNode(id.toString());
|
|
1496
|
+
// Robustness: If not found by ID (getRowNode), try finding by comparing the PK field manually
|
|
1497
|
+
if (!rowNode) {
|
|
1498
|
+
this.gridApi.forEachNode((node) => {
|
|
1499
|
+
const nodeData = node.data;
|
|
1500
|
+
if (nodeData && nodeData[field] === id) {
|
|
1501
|
+
rowNode = node;
|
|
1502
|
+
}
|
|
1503
|
+
});
|
|
1504
|
+
}
|
|
1479
1505
|
if (rowNode) {
|
|
1480
1506
|
rowNode.setData(rowData);
|
|
1481
1507
|
const params = { rowNodes: [rowNode], force: true, suppressFlash: false, };
|
|
@@ -1506,7 +1532,7 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1506
1532
|
this.nettyAgGridService.setAgGridTranslations(this.gridApi);
|
|
1507
1533
|
}
|
|
1508
1534
|
initAgGrid_extension() {
|
|
1509
|
-
if (this.allowEdit() == false &&
|
|
1535
|
+
if (this.allowEdit() == false && this._isPopupValid() == false) {
|
|
1510
1536
|
this.columnDefs().pop();
|
|
1511
1537
|
this.columnDefs().shift();
|
|
1512
1538
|
this.columnDefs().unshift({
|
|
@@ -1517,10 +1543,10 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1517
1543
|
});
|
|
1518
1544
|
this.gridApi.setGridOption('rowSelection', { mode: 'multiRow', checkboxes: true });
|
|
1519
1545
|
}
|
|
1520
|
-
if (this.
|
|
1546
|
+
if (this._isPopupValid() == true) {
|
|
1521
1547
|
this.columnDefs().pop();
|
|
1522
1548
|
this.columnDefs().shift();
|
|
1523
|
-
if (this.
|
|
1549
|
+
if (this._isPopupFilterValid() == true) {
|
|
1524
1550
|
if (this.allowEdit()) {
|
|
1525
1551
|
this.columnDefs().unshift({
|
|
1526
1552
|
headerName: '', sortable: false, resizable: false, filter: false,
|
|
@@ -1596,15 +1622,50 @@ class NettyAgGridBase extends NettyAppsBase {
|
|
|
1596
1622
|
var fields = this.columnDefs()
|
|
1597
1623
|
.filter((columnDef) => columnDef.ntyEmbeddedHide == 'x')
|
|
1598
1624
|
.map((columnDef) => columnDef.field);
|
|
1599
|
-
this.gridApi?.setColumnsVisible(fields, !this.
|
|
1625
|
+
this.gridApi?.setColumnsVisible(fields, !this._isEmbedded());
|
|
1626
|
+
}
|
|
1627
|
+
// *****************************************
|
|
1628
|
+
// *** Logging Functions ***
|
|
1629
|
+
// *****************************************
|
|
1630
|
+
logInputs(message) {
|
|
1631
|
+
if (!message || message.length < 1) {
|
|
1632
|
+
message = 'agGridBase - Inputs log';
|
|
1633
|
+
}
|
|
1634
|
+
const inputs = {
|
|
1635
|
+
"popupFilterValid": this.popupFilterValid(),
|
|
1636
|
+
"_isPopupFilterValid": this._isPopupFilterValid(),
|
|
1637
|
+
"popupValid": this.popupValid(),
|
|
1638
|
+
"_isPopupValid": this._isPopupValid(),
|
|
1639
|
+
"componantParameterGUID": this.componantParameterGUID(),
|
|
1640
|
+
"componantParameterType": this.componantParameterType(),
|
|
1641
|
+
"embedded": this.embedded(),
|
|
1642
|
+
"_isEmbedded": this._isEmbedded(),
|
|
1643
|
+
};
|
|
1644
|
+
console.log(message, inputs);
|
|
1645
|
+
}
|
|
1646
|
+
logAuthentication(message) {
|
|
1647
|
+
if (!message || message.length < 1) {
|
|
1648
|
+
message = 'agGridBase - Authentication log';
|
|
1649
|
+
}
|
|
1650
|
+
const inputs = {
|
|
1651
|
+
"authenticationList": this.authenticationList,
|
|
1652
|
+
"accessRightsProcessed": this.accessRightsProcessed(),
|
|
1653
|
+
"readOnly": this.readOnly(),
|
|
1654
|
+
"allowAdd": this.allowAdd(),
|
|
1655
|
+
"allowEdit": this.allowEdit(),
|
|
1656
|
+
"allowDelete": this.allowDelete(),
|
|
1657
|
+
"allowLog": this.allowLog(),
|
|
1658
|
+
"allowRead": this.allowRead(),
|
|
1659
|
+
};
|
|
1660
|
+
console.log(message, inputs);
|
|
1600
1661
|
}
|
|
1601
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1602
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
1662
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridBase, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1663
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: NettyAgGridBase, isStandalone: true, selector: "ntybase-ag-grid-base", inputs: { popupFilterValid: { classPropertyName: "popupFilterValid", publicName: "popupFilterValid", isSignal: true, isRequired: false, transformFunction: null }, popupValid: { classPropertyName: "popupValid", publicName: "popupValid", isSignal: true, isRequired: false, transformFunction: null }, componantParameterGUID: { classPropertyName: "componantParameterGUID", publicName: "componantParameterGUID", isSignal: true, isRequired: false, transformFunction: null }, componantParameterType: { classPropertyName: "componantParameterType", publicName: "componantParameterType", isSignal: true, isRequired: false, transformFunction: null }, agGridSelectionMode: { classPropertyName: "agGridSelectionMode", publicName: "agGridSelectionMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onElementSelect: "onElementSelect", selectedElement: "selectedElement" }, host: { attributes: { "ntybase-id": "NettyAgGridBase" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
1603
1664
|
}
|
|
1604
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1665
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridBase, decorators: [{
|
|
1605
1666
|
type: Component,
|
|
1606
1667
|
args: [{ selector: 'ntybase-ag-grid-base', imports: [], template: ``, host: { 'ntybase-id': 'NettyAgGridBase' } }]
|
|
1607
|
-
}], propDecorators: { popupFilterValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupFilterValid", required: false }] }], popupValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupValid", required: false }] }],
|
|
1668
|
+
}], propDecorators: { popupFilterValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupFilterValid", required: false }] }], popupValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "popupValid", required: false }] }], componantParameterGUID: [{ type: i0.Input, args: [{ isSignal: true, alias: "componantParameterGUID", required: false }] }], componantParameterType: [{ type: i0.Input, args: [{ isSignal: true, alias: "componantParameterType", required: false }] }], onElementSelect: [{ type: i0.Output, args: ["onElementSelect"] }], selectedElement: [{ type: i0.Output, args: ["selectedElement"] }], agGridSelectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "agGridSelectionMode", required: false }] }] } });
|
|
1608
1669
|
|
|
1609
1670
|
class ButtonRenderer {
|
|
1610
1671
|
params = null;
|
|
@@ -1696,10 +1757,10 @@ class ButtonRenderer {
|
|
|
1696
1757
|
this.params.onClick(params);
|
|
1697
1758
|
}
|
|
1698
1759
|
}
|
|
1699
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1700
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
1760
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ButtonRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1761
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ButtonRenderer, isStandalone: true, selector: "ntybase-button-renderer", host: { attributes: { "ntybase-id": "ButtonRenderer" } }, ngImport: i0, template: "@if (editValid || popupEditValid) {\n<mat-icon\n class=\"cursor center edit\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"4000\"\n >edit</mat-icon\n>\n} @if (historyValid) {\n<mat-icon\n class=\"cursor center-log\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >log</mat-icon\n>\n} @if (historyValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >history</mat-icon\n>\n} @if (lineValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >menu_open</mat-icon\n>\n} @if (popupSelectValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >content_copy</mat-icon\n>\n} @if (toggleValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >{{toggleValue ? 'check_box' : 'check_box_outline_blank'}}</mat-icon\n>\n} @if (none) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n [matTooltipShowDelay]=\"3000\"\n >menu_open</mat-icon\n>\n} @if (addValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >playlist_add</mat-icon\n>\n} @if (deleteValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >delete_outline</mat-icon\n>\n}\n", styles: [".cursor{cursor:pointer}.center{display:flex;justify-content:center;align-items:center;width:100%}.center-log{display:flex;justify-content:center;align-items:center;margin-bottom:-12px}.edit{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }] });
|
|
1701
1762
|
}
|
|
1702
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1763
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ButtonRenderer, decorators: [{
|
|
1703
1764
|
type: Component,
|
|
1704
1765
|
args: [{ selector: 'ntybase-button-renderer', imports: [MatIconModule, MatTooltipModule, MatMenuModule], host: { 'ntybase-id': 'ButtonRenderer' }, template: "@if (editValid || popupEditValid) {\n<mat-icon\n class=\"cursor center edit\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"4000\"\n >edit</mat-icon\n>\n} @if (historyValid) {\n<mat-icon\n class=\"cursor center-log\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >log</mat-icon\n>\n} @if (historyValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >history</mat-icon\n>\n} @if (lineValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >menu_open</mat-icon\n>\n} @if (popupSelectValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >content_copy</mat-icon\n>\n} @if (toggleValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >{{toggleValue ? 'check_box' : 'check_box_outline_blank'}}</mat-icon\n>\n} @if (none) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n [matTooltipShowDelay]=\"3000\"\n >menu_open</mat-icon\n>\n} @if (addValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >playlist_add</mat-icon\n>\n} @if (deleteValid) {\n<mat-icon\n class=\"cursor center\"\n matTooltip=\"{{label}}\"\n (click)=\"onClick($event)\"\n [matTooltipShowDelay]=\"3000\"\n >delete_outline</mat-icon\n>\n}\n", styles: [".cursor{cursor:pointer}.center{display:flex;justify-content:center;align-items:center;width:100%}.center-log{display:flex;justify-content:center;align-items:center;margin-bottom:-12px}.edit{margin-top:8px}\n"] }]
|
|
1705
1766
|
}] });
|
|
@@ -1744,10 +1805,10 @@ class CheckboxRenderer {
|
|
|
1744
1805
|
this.params.onClick(params);
|
|
1745
1806
|
}
|
|
1746
1807
|
}
|
|
1747
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1748
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
1808
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CheckboxRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1809
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: CheckboxRenderer, isStandalone: true, selector: "ntybase-checkbox-renderer", host: { attributes: { "ntybase-id": "CheckboxRenderer" } }, ngImport: i0, template: "@if (supportClick) {\n<input\n id=\"checkbox\"\n type=\"checkbox\"\n [checked]=\"checked\"\n (click)=\"onClick($event)\"\n/>\n} @if (!supportClick) {\n<input id=\"checkbox\" type=\"checkbox\" [checked]=\"params.value\" disabled />\n}\n\n<label for=\"checkbox\">{{label}}</label>\n", styles: [""] });
|
|
1749
1810
|
}
|
|
1750
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1811
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CheckboxRenderer, decorators: [{
|
|
1751
1812
|
type: Component,
|
|
1752
1813
|
args: [{ selector: 'ntybase-checkbox-renderer', imports: [], host: { 'ntybase-id': 'CheckboxRenderer' }, template: "@if (supportClick) {\n<input\n id=\"checkbox\"\n type=\"checkbox\"\n [checked]=\"checked\"\n (click)=\"onClick($event)\"\n/>\n} @if (!supportClick) {\n<input id=\"checkbox\" type=\"checkbox\" [checked]=\"params.value\" disabled />\n}\n\n<label for=\"checkbox\">{{label}}</label>\n" }]
|
|
1753
1814
|
}] });
|
|
@@ -1759,33 +1820,6 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1759
1820
|
// ********************************************
|
|
1760
1821
|
// *** INPUTS ***
|
|
1761
1822
|
// ********************************************
|
|
1762
|
-
// Filter section
|
|
1763
|
-
hasFilter = input(false, ...(ngDevMode ? [{ debugName: "hasFilter" }] : [])); // Does the component have a filter
|
|
1764
|
-
isFilterValid = signal(true, ...(ngDevMode ? [{ debugName: "isFilterValid" }] : [])); // Can the filter be used
|
|
1765
|
-
isFilterExpanded = linkedSignal({ ...(ngDevMode ? { debugName: "isFilterExpanded" } : {}), source: () => ({
|
|
1766
|
-
embedded: this.isEmbedded(),
|
|
1767
|
-
hasFilter: this.hasFilter(),
|
|
1768
|
-
valid: this.isFilterValid(),
|
|
1769
|
-
}),
|
|
1770
|
-
computation: (s) => {
|
|
1771
|
-
if (s.embedded || !s.hasFilter)
|
|
1772
|
-
return false;
|
|
1773
|
-
return s.valid;
|
|
1774
|
-
} });
|
|
1775
|
-
filterRefreshTrigger = signal(0, ...(ngDevMode ? [{ debugName: "filterRefreshTrigger" }] : []));
|
|
1776
|
-
/**
|
|
1777
|
-
* Triggers the filter component to refresh its data
|
|
1778
|
-
*/
|
|
1779
|
-
refreshFilterData() {
|
|
1780
|
-
let value = this.filterRefreshTrigger();
|
|
1781
|
-
if (value > 10000) {
|
|
1782
|
-
value = 0;
|
|
1783
|
-
}
|
|
1784
|
-
value++;
|
|
1785
|
-
this.filterRefreshTrigger.set(value);
|
|
1786
|
-
}
|
|
1787
|
-
// Open component management
|
|
1788
|
-
openEditComponentInPopup = signal(false, ...(ngDevMode ? [{ debugName: "openEditComponentInPopup" }] : []));
|
|
1789
1823
|
// Services
|
|
1790
1824
|
router = inject(Router);
|
|
1791
1825
|
routerActive = inject(ActivatedRoute);
|
|
@@ -1806,15 +1840,13 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1806
1840
|
* Component initialization lifecycle hook
|
|
1807
1841
|
*/
|
|
1808
1842
|
async ngOnInit() {
|
|
1809
|
-
this.nettyAppsProxy
|
|
1810
|
-
await this.setAccessRights();
|
|
1843
|
+
this.nettyAppsProxy.setURLPath(this.componentName());
|
|
1844
|
+
await this.setAccessRights(false);
|
|
1811
1845
|
const savedSearchValue = sessionStorage.getItem(this.searchValueName());
|
|
1812
1846
|
if (savedSearchValue) {
|
|
1813
1847
|
this.searchValue.set(savedSearchValue);
|
|
1814
1848
|
}
|
|
1815
|
-
|
|
1816
|
-
this.loadData();
|
|
1817
|
-
}
|
|
1849
|
+
this.loadData();
|
|
1818
1850
|
// Load user grid preferences
|
|
1819
1851
|
await this.nettyAgGridService.copyGridUserPereferenceToLocal(this.preferenceType());
|
|
1820
1852
|
await this.AfterOnInit();
|
|
@@ -1830,7 +1862,7 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1830
1862
|
}
|
|
1831
1863
|
return null;
|
|
1832
1864
|
}
|
|
1833
|
-
gotoURL(routePrefix, rightSidenav = [], parameters, type, dialogComponent = null, isNewTab = false, isPopup = this.
|
|
1865
|
+
gotoURL(routePrefix, rightSidenav = [], parameters, type, dialogComponent = null, isNewTab = false, isPopup = this._isEmbedded()) {
|
|
1834
1866
|
const baseHref = this.environment.getBaseHref().endsWith('/')
|
|
1835
1867
|
? this.environment.getBaseHref().slice(0, -1) // Sondaki / işaretini kaldır
|
|
1836
1868
|
: this.environment.getBaseHref();
|
|
@@ -1903,10 +1935,9 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1903
1935
|
]);
|
|
1904
1936
|
}
|
|
1905
1937
|
toggleOpenMode() {
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
const message = newMode ? '@openInPopup' : '@openInSidenav';
|
|
1938
|
+
this.openInPopup.update(a => !a);
|
|
1939
|
+
localStorage.setItem('openInPopup', JSON.stringify(this.openInPopup()));
|
|
1940
|
+
const message = this.openInPopup() ? '@openInPopup' : '@openInSidenav';
|
|
1910
1941
|
this.alertService.showSuccess(message);
|
|
1911
1942
|
}
|
|
1912
1943
|
/**
|
|
@@ -1925,7 +1956,7 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1925
1956
|
};
|
|
1926
1957
|
const savedMode = localStorage.getItem('openInPopup');
|
|
1927
1958
|
if (savedMode !== null) {
|
|
1928
|
-
this.
|
|
1959
|
+
this.openInPopup.set(JSON.parse(savedMode) === true);
|
|
1929
1960
|
}
|
|
1930
1961
|
this.translateService.onLangChange.subscribe(() => {
|
|
1931
1962
|
this.setAgGridTranslations();
|
|
@@ -1943,8 +1974,7 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1943
1974
|
else if (this.hasValidValue(this.queryParameterType())) {
|
|
1944
1975
|
this.parameterType.set(this.queryParameterType());
|
|
1945
1976
|
}
|
|
1946
|
-
if (this.hasValidValue(this.parameterGUID)) {
|
|
1947
|
-
this.isFilterValid.set(false);
|
|
1977
|
+
if (this.hasValidValue(this.parameterGUID())) {
|
|
1948
1978
|
this.setFilter();
|
|
1949
1979
|
this.loadData();
|
|
1950
1980
|
}
|
|
@@ -1961,7 +1991,7 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1961
1991
|
switch (update.action) {
|
|
1962
1992
|
case 'add':
|
|
1963
1993
|
case 'update':
|
|
1964
|
-
this.updateRowInGrid(update.data);
|
|
1994
|
+
this.updateRowInGrid(update.data, this.pkFieldName());
|
|
1965
1995
|
break;
|
|
1966
1996
|
}
|
|
1967
1997
|
}
|
|
@@ -1969,13 +1999,10 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1969
1999
|
effect(() => { this.onElementSelect.emit(this.selectedRows()); });
|
|
1970
2000
|
// Manage filter expanded state
|
|
1971
2001
|
effect(() => {
|
|
1972
|
-
this.
|
|
2002
|
+
this._isEmbedded();
|
|
1973
2003
|
this.showHideEmbeddedColumnsAsync();
|
|
1974
2004
|
});
|
|
1975
2005
|
}
|
|
1976
|
-
onReverseIsFilterValid() {
|
|
1977
|
-
this.isFilterValid.update((a) => !a);
|
|
1978
|
-
}
|
|
1979
2006
|
/**
|
|
1980
2007
|
* Validates if the given value is equal to null,undefined or ''
|
|
1981
2008
|
* @param value
|
|
@@ -1994,17 +2021,21 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
1994
2021
|
// *** Data Management Functions ***
|
|
1995
2022
|
// *********************************************************
|
|
1996
2023
|
loadData() {
|
|
1997
|
-
if (this.hasFilter()) {
|
|
1998
|
-
this.setData([]);
|
|
1999
|
-
return;
|
|
2000
|
-
}
|
|
2001
2024
|
this.nettyAppsProxy.select(this.record).subscribe({
|
|
2002
2025
|
next: (data) => {
|
|
2003
|
-
this.setData(data);
|
|
2026
|
+
this.setData(data, false);
|
|
2004
2027
|
},
|
|
2005
2028
|
error: (err) => this.alertService.showError('@dataLoadFailed', err),
|
|
2006
2029
|
});
|
|
2007
2030
|
}
|
|
2031
|
+
async refreshData() {
|
|
2032
|
+
try {
|
|
2033
|
+
this.loadData();
|
|
2034
|
+
}
|
|
2035
|
+
catch (err) {
|
|
2036
|
+
this.alertService.showError(err);
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2008
2039
|
async deleteSelected() {
|
|
2009
2040
|
if (!this.gridApi)
|
|
2010
2041
|
return;
|
|
@@ -2028,13 +2059,136 @@ class NettyAgGridListBase extends NettyAgGridBase {
|
|
|
2028
2059
|
error: (err) => this.alertService.showError(err),
|
|
2029
2060
|
});
|
|
2030
2061
|
}
|
|
2031
|
-
|
|
2032
|
-
|
|
2062
|
+
// *****************************************
|
|
2063
|
+
// *** Logging Functions ***
|
|
2064
|
+
// *****************************************
|
|
2065
|
+
logInputs(message) {
|
|
2066
|
+
if (!message || message.length < 1) {
|
|
2067
|
+
message = 'AgGridListBase - Inputs log';
|
|
2068
|
+
}
|
|
2069
|
+
const inputs = {
|
|
2070
|
+
"popupFilterValid": this.popupFilterValid(),
|
|
2071
|
+
"_isPopupFilterValid": this._isPopupFilterValid(),
|
|
2072
|
+
"popupValid": this.popupValid(),
|
|
2073
|
+
"_isPopupValid": this._isPopupValid(),
|
|
2074
|
+
"componantParameterGUID": this.componantParameterGUID(),
|
|
2075
|
+
"componantParameterType": this.componantParameterType(),
|
|
2076
|
+
"embedded": this.embedded(),
|
|
2077
|
+
"_isEmbedded": this._isEmbedded(),
|
|
2078
|
+
};
|
|
2079
|
+
console.log(message, inputs);
|
|
2080
|
+
}
|
|
2081
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridListBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2082
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: NettyAgGridListBase, isStandalone: true, selector: "ntybase-ag-grid-list-base", host: { attributes: { "ntybase-id": "NettyAgGridListBase" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
2033
2083
|
}
|
|
2034
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2084
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridListBase, decorators: [{
|
|
2035
2085
|
type: Component,
|
|
2036
2086
|
args: [{ selector: 'ntybase-ag-grid-list-base', imports: [], template: ``, host: { 'ntybase-id': 'NettyAgGridListBase' } }]
|
|
2037
|
-
}], ctorParameters: () => []
|
|
2087
|
+
}], ctorParameters: () => [] });
|
|
2088
|
+
|
|
2089
|
+
ModuleRegistry.registerModules([AllCommunityModule, StatusBarModule, ClientSideRowModelModule, ClipboardModule, ExcelExportModule, ColumnMenuModule,
|
|
2090
|
+
ContextMenuModule, CellSelectionModule, HighlightChangesModule, RowSelectionModule,]);
|
|
2091
|
+
// AgGrid Dark Mode Row Style
|
|
2092
|
+
class NettyAgGridListFilterBase extends NettyAgGridListBase {
|
|
2093
|
+
// ********************************************
|
|
2094
|
+
// *** INPUTS ***
|
|
2095
|
+
// ********************************************
|
|
2096
|
+
// Filter section
|
|
2097
|
+
displayFilter = input(true, ...(ngDevMode ? [{ debugName: "displayFilter" }] : [])); // Does the component display it's filter section when embadded
|
|
2098
|
+
_displayFilter = computed(() => this.displayFilter() ?? true, ...(ngDevMode ? [{ debugName: "_displayFilter" }] : [])); // Computed version of displayFilter to prevent undefined
|
|
2099
|
+
isFilterValid = signal(true, ...(ngDevMode ? [{ debugName: "isFilterValid" }] : [])); // Can the filter be used
|
|
2100
|
+
isFilterExpanded = linkedSignal({ ...(ngDevMode ? { debugName: "isFilterExpanded" } : {}), // Is the filter component expanded
|
|
2101
|
+
source: () => ({
|
|
2102
|
+
embedded: this._isEmbedded(),
|
|
2103
|
+
displayFilter: this._displayFilter(),
|
|
2104
|
+
valid: this.isFilterValid(),
|
|
2105
|
+
}),
|
|
2106
|
+
computation: (s) => {
|
|
2107
|
+
if (s.embedded || !s.displayFilter)
|
|
2108
|
+
return false;
|
|
2109
|
+
return s.valid;
|
|
2110
|
+
} });
|
|
2111
|
+
filterRefreshTrigger = signal(0, ...(ngDevMode ? [{ debugName: "filterRefreshTrigger" }] : []));
|
|
2112
|
+
constructor() {
|
|
2113
|
+
super();
|
|
2114
|
+
effect(() => {
|
|
2115
|
+
if (this.hasValidValue(this.parameterGUID())) {
|
|
2116
|
+
this.isFilterExpanded.set(false);
|
|
2117
|
+
this.setFilter();
|
|
2118
|
+
this.loadData();
|
|
2119
|
+
}
|
|
2120
|
+
});
|
|
2121
|
+
}
|
|
2122
|
+
async ngOnInit() {
|
|
2123
|
+
await super.ngOnInit();
|
|
2124
|
+
}
|
|
2125
|
+
// *********************************************************
|
|
2126
|
+
// *** Data Management Functions ***
|
|
2127
|
+
// *********************************************************
|
|
2128
|
+
loadData() {
|
|
2129
|
+
if (this._displayFilter()) {
|
|
2130
|
+
this.setData([], true);
|
|
2131
|
+
return;
|
|
2132
|
+
}
|
|
2133
|
+
this.nettyAppsProxy.select(this.record).subscribe({
|
|
2134
|
+
next: (data) => {
|
|
2135
|
+
this.setData(data, false);
|
|
2136
|
+
},
|
|
2137
|
+
error: (err) => this.alertService.showError('@dataLoadFailed', err),
|
|
2138
|
+
});
|
|
2139
|
+
}
|
|
2140
|
+
async refreshData() {
|
|
2141
|
+
try {
|
|
2142
|
+
this.refreshFilterData();
|
|
2143
|
+
}
|
|
2144
|
+
catch (err) {
|
|
2145
|
+
this.alertService.showError(err);
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
/**
|
|
2149
|
+
* Triggers the filter component to refresh its data
|
|
2150
|
+
*/
|
|
2151
|
+
refreshFilterData() {
|
|
2152
|
+
let value = this.filterRefreshTrigger();
|
|
2153
|
+
if (value > 10000) {
|
|
2154
|
+
value = 0;
|
|
2155
|
+
}
|
|
2156
|
+
value++;
|
|
2157
|
+
this.filterRefreshTrigger.set(value);
|
|
2158
|
+
}
|
|
2159
|
+
onReverseIsFilterValid() {
|
|
2160
|
+
this.isFilterValid.update((a) => !a);
|
|
2161
|
+
}
|
|
2162
|
+
// *****************************************
|
|
2163
|
+
// *** Logging Functions ***
|
|
2164
|
+
// *****************************************
|
|
2165
|
+
logInputs(message) {
|
|
2166
|
+
if (!message || message.length < 1) {
|
|
2167
|
+
message = 'AgGridListFilterBase - Inputs log';
|
|
2168
|
+
}
|
|
2169
|
+
const inputs = {
|
|
2170
|
+
"popupFilterValid": this.popupFilterValid(),
|
|
2171
|
+
"_isPopupFilterValid": this._isPopupFilterValid(),
|
|
2172
|
+
"popupValid": this.popupValid(),
|
|
2173
|
+
"_isPopupValid": this._isPopupValid(),
|
|
2174
|
+
"componantParameterGUID": this.componantParameterGUID(),
|
|
2175
|
+
"componantParameterType": this.componantParameterType(),
|
|
2176
|
+
"embedded": this.embedded(),
|
|
2177
|
+
"_isEmbedded": this._isEmbedded(),
|
|
2178
|
+
"displayFilter": this.displayFilter(),
|
|
2179
|
+
"_displayFilter": this._displayFilter(),
|
|
2180
|
+
"isFilterValid": this.isFilterValid(),
|
|
2181
|
+
"isFilterExpanded": this.isFilterExpanded(),
|
|
2182
|
+
};
|
|
2183
|
+
console.log(message, inputs);
|
|
2184
|
+
}
|
|
2185
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridListFilterBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2186
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: NettyAgGridListFilterBase, isStandalone: true, selector: "ntybase-ag-grid-list-filter-base", inputs: { displayFilter: { classPropertyName: "displayFilter", publicName: "displayFilter", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ntybase-id": "NettyAgGridListFilterBase" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
2187
|
+
}
|
|
2188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridListFilterBase, decorators: [{
|
|
2189
|
+
type: Component,
|
|
2190
|
+
args: [{ selector: 'ntybase-ag-grid-list-filter-base', imports: [], template: ``, host: { 'ntybase-id': 'NettyAgGridListFilterBase' } }]
|
|
2191
|
+
}], ctorParameters: () => [], propDecorators: { displayFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayFilter", required: false }] }] } });
|
|
2038
2192
|
|
|
2039
2193
|
class NettyAgGridLogBase extends NettyAgGridBase {
|
|
2040
2194
|
// ---------------------------------------------------
|
|
@@ -2045,8 +2199,8 @@ class NettyAgGridLogBase extends NettyAgGridBase {
|
|
|
2045
2199
|
* Component initialization lifecycle hook
|
|
2046
2200
|
*/
|
|
2047
2201
|
async ngOnInit() {
|
|
2048
|
-
this.nettyAppsProxy
|
|
2049
|
-
await this.setAccessRights();
|
|
2202
|
+
this.nettyAppsProxy.setURLPath(this.componentName());
|
|
2203
|
+
await this.setAccessRights(true);
|
|
2050
2204
|
const savedSearchValue = sessionStorage.getItem(this.searchValueName());
|
|
2051
2205
|
if (savedSearchValue) {
|
|
2052
2206
|
this.searchValue.set(savedSearchValue);
|
|
@@ -2059,15 +2213,23 @@ class NettyAgGridLogBase extends NettyAgGridBase {
|
|
|
2059
2213
|
loadData() {
|
|
2060
2214
|
this.nettyAppsProxy.selectLog(this.record).subscribe({
|
|
2061
2215
|
next: (data) => {
|
|
2062
|
-
this.setData(data);
|
|
2216
|
+
this.setData(data, false);
|
|
2063
2217
|
},
|
|
2064
2218
|
error: (err) => this.alertService.showError('@dataLoadFailed', err),
|
|
2065
2219
|
});
|
|
2066
2220
|
}
|
|
2067
|
-
|
|
2068
|
-
|
|
2221
|
+
async refreshData() {
|
|
2222
|
+
try {
|
|
2223
|
+
this.loadData();
|
|
2224
|
+
}
|
|
2225
|
+
catch (err) {
|
|
2226
|
+
this.alertService.showError(err);
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridLogBase, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2230
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: NettyAgGridLogBase, isStandalone: true, selector: "ntybase-ag-grid-log-base", host: { attributes: { "ntybase-id": "NettyAgGridLogBase" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
2069
2231
|
}
|
|
2070
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridLogBase, decorators: [{
|
|
2071
2233
|
type: Component,
|
|
2072
2234
|
args: [{ selector: 'ntybase-ag-grid-log-base', imports: [], template: ``, host: { 'ntybase-id': 'NettyAgGridLogBase' } }]
|
|
2073
2235
|
}] });
|
|
@@ -2082,8 +2244,6 @@ class NettyAgGridSaveBase extends NettyAppsBase {
|
|
|
2082
2244
|
viewMode = signal('sidenav', ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
2083
2245
|
// Input signals
|
|
2084
2246
|
parameters = input('', ...(ngDevMode ? [{ debugName: "parameters" }] : []));
|
|
2085
|
-
embedded = input(false, ...(ngDevMode ? [{ debugName: "embedded" }] : []));
|
|
2086
|
-
isEmbedded = input(false, ...(ngDevMode ? [{ debugName: "isEmbedded" }] : []));
|
|
2087
2247
|
// ---------------------------------------------------
|
|
2088
2248
|
// --- RECORD LIST ---
|
|
2089
2249
|
// ---------------------------------------------------
|
|
@@ -2117,7 +2277,7 @@ class NettyAgGridSaveBase extends NettyAppsBase {
|
|
|
2117
2277
|
* Initialize parameters. This method is called in ngOnInit or constructor
|
|
2118
2278
|
*/
|
|
2119
2279
|
initParameters(urlPath) {
|
|
2120
|
-
this.nettyAppsProxy
|
|
2280
|
+
this.nettyAppsProxy.setURLPath(urlPath);
|
|
2121
2281
|
this.recordType.set(urlPath);
|
|
2122
2282
|
}
|
|
2123
2283
|
/**
|
|
@@ -2305,18 +2465,24 @@ class NettyAgGridSaveBase extends NettyAppsBase {
|
|
|
2305
2465
|
* Handles both new record creation and existing record editing
|
|
2306
2466
|
* guid - Unique identifier of the record
|
|
2307
2467
|
*/
|
|
2308
|
-
loadDetailData() {
|
|
2468
|
+
async loadDetailData() {
|
|
2309
2469
|
const guid = this.getGuidFromParameters();
|
|
2310
2470
|
if (!guid) {
|
|
2311
2471
|
// If no GUID provided, initialize a new record
|
|
2312
|
-
|
|
2472
|
+
let newRecord = this.createNewRecord();
|
|
2473
|
+
newRecord = await lastValueFrom(this.nettyAppsProxy.initRecord(newRecord))
|
|
2474
|
+
.catch((er) => {
|
|
2475
|
+
console.error('@initRecordFailed:', er);
|
|
2476
|
+
return this.createNewRecord();
|
|
2477
|
+
});
|
|
2313
2478
|
this.initializeFormData(newRecord);
|
|
2314
2479
|
this.updateValid.set(true);
|
|
2315
2480
|
return;
|
|
2316
2481
|
}
|
|
2317
2482
|
// Fetch existing record from API
|
|
2318
2483
|
this.nettyAppsProxy.selectGUID(guid).subscribe({
|
|
2319
|
-
next: (
|
|
2484
|
+
next: (data) => {
|
|
2485
|
+
const record = this.createItemInstance(data);
|
|
2320
2486
|
if (!record || !record.getPK()) {
|
|
2321
2487
|
this.alertService.showError('@recordNotFound');
|
|
2322
2488
|
const cleanPath = this.commonService.getCleanUrlPath();
|
|
@@ -2344,7 +2510,7 @@ class NettyAgGridSaveBase extends NettyAppsBase {
|
|
|
2344
2510
|
// ***************************************************
|
|
2345
2511
|
// *** gotoURL Methods ***
|
|
2346
2512
|
// ***************************************************
|
|
2347
|
-
gotoURL(routePrefix, rightSidenav = [], parameters, type, dialogComponent = null, isNewTab = false, isPopup = this.
|
|
2513
|
+
gotoURL(routePrefix, rightSidenav = [], parameters, type, dialogComponent = null, isNewTab = false, isPopup = this._isEmbedded()) {
|
|
2348
2514
|
const baseHref = this.environment.getBaseHref().endsWith('/')
|
|
2349
2515
|
? this.environment.getBaseHref().slice(0, -1) // Sondaki / işaretini kaldır
|
|
2350
2516
|
: this.environment.getBaseHref();
|
|
@@ -2416,13 +2582,13 @@ class NettyAgGridSaveBase extends NettyAppsBase {
|
|
|
2416
2582
|
},
|
|
2417
2583
|
]);
|
|
2418
2584
|
}
|
|
2419
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2420
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
2585
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridSaveBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2586
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: NettyAgGridSaveBase, isStandalone: true, selector: "ntybase-ag-grid-save-base", inputs: { parameters: { classPropertyName: "parameters", publicName: "parameters", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "saveForm", first: true, predicate: ["saveForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
2421
2587
|
}
|
|
2422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAgGridSaveBase, decorators: [{
|
|
2423
2589
|
type: Component,
|
|
2424
2590
|
args: [{ selector: 'ntybase-ag-grid-save-base', imports: [], template: `` }]
|
|
2425
|
-
}], ctorParameters: () => [], propDecorators: { parameters: [{ type: i0.Input, args: [{ isSignal: true, alias: "parameters", required: false }] }],
|
|
2591
|
+
}], ctorParameters: () => [], propDecorators: { parameters: [{ type: i0.Input, args: [{ isSignal: true, alias: "parameters", required: false }] }], saveForm: [{
|
|
2426
2592
|
type: ViewChild,
|
|
2427
2593
|
args: ['saveForm']
|
|
2428
2594
|
}] } });
|
|
@@ -2455,10 +2621,10 @@ class ExcelImportBase extends NettyAgGridListBase {
|
|
|
2455
2621
|
};
|
|
2456
2622
|
reader.readAsBinaryString(target.files[0]);
|
|
2457
2623
|
}
|
|
2458
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2459
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
2624
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ExcelImportBase, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2625
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: ExcelImportBase, isStandalone: true, selector: "ntybase-excel-import-base", usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
2460
2626
|
}
|
|
2461
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2627
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ExcelImportBase, decorators: [{
|
|
2462
2628
|
type: Component,
|
|
2463
2629
|
args: [{ selector: 'ntybase-excel-import-base', imports: [], template: `` }]
|
|
2464
2630
|
}] });
|
|
@@ -2754,10 +2920,10 @@ class RangeDateTimeFilter {
|
|
|
2754
2920
|
this.conditions = [];
|
|
2755
2921
|
}
|
|
2756
2922
|
}
|
|
2757
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2758
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
2923
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: RangeDateTimeFilter, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2924
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: RangeDateTimeFilter, isStandalone: true, selector: "ntybase-range-date-time-filter", host: { attributes: { "ntybase-id": "RangeDateTimeFilter" } }, ngImport: i0, template: "<div class=\"custom-filter\">\n <div class=\"custom-filter__header\">\n <label class=\"custom-filter__title\">\n {{ '@dateTimeFilter' | translate }}\n </label>\n <input\n type=\"text\"\n class=\"custom-filter__input\"\n [placeholder]=\"'@dateTimeFilterPlaceholder' | translate\"\n [value]=\"filterText\"\n (input)=\"onFilterTextChanged($event)\"\n />\n </div>\n\n <div class=\"custom-filter__help\">\n <strong class=\"custom-filter__help-title\">\n {{ '@formats' | translate }}:\n </strong>\n\n <div class=\"custom-filter__format\">\n {{ '@range' | translate }}:\n <code>start..end</code>\n <span class=\"custom-filter__example\">(today..yesterday)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@singleDate' | translate }}:\n <code>YYYY-MM-DD</code>\n <span class=\"custom-filter__example\">(2024-05-15)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@dateTime' | translate }}:\n <code>YYYY-MM-DD HH:MM</code>\n <span class=\"custom-filter__example\">(2024-05-15 14:30)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@multiple' | translate }}:\n <code>date1,date2,start..end</code>\n </div>\n\n <strong class=\"custom-filter__subtitle\">\n {{ '@specialKeywords' | translate }}:\n </strong>\n\n <div class=\"custom-filter__format\">\n {{ '@turkish' | translate }}:\n <span class=\"custom-filter__keywords\">\n <code class=\"custom-filter__keyword\">bug\u00FCn</code>\n <code class=\"custom-filter__keyword\">d\u00FCn</code>\n <code class=\"custom-filter__keyword\">bu hafta</code>\n <code class=\"custom-filter__keyword\">bu ay</code>\n </span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@english' | translate }}:\n <span class=\"custom-filter__keywords\">\n <code class=\"custom-filter__keyword\">today</code>\n <code class=\"custom-filter__keyword\">yesterday</code>\n <code class=\"custom-filter__keyword\">thisWeek</code>\n <code class=\"custom-filter__keyword\">thisMonth</code>\n </span>\n </div>\n\n <div class=\"custom-filter__note\">{{ '@filterExample' | translate }}</div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
2759
2925
|
}
|
|
2760
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2926
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: RangeDateTimeFilter, decorators: [{
|
|
2761
2927
|
type: Component,
|
|
2762
2928
|
args: [{ selector: 'ntybase-range-date-time-filter', imports: [TranslateModule], host: { 'ntybase-id': 'RangeDateTimeFilter' }, template: "<div class=\"custom-filter\">\n <div class=\"custom-filter__header\">\n <label class=\"custom-filter__title\">\n {{ '@dateTimeFilter' | translate }}\n </label>\n <input\n type=\"text\"\n class=\"custom-filter__input\"\n [placeholder]=\"'@dateTimeFilterPlaceholder' | translate\"\n [value]=\"filterText\"\n (input)=\"onFilterTextChanged($event)\"\n />\n </div>\n\n <div class=\"custom-filter__help\">\n <strong class=\"custom-filter__help-title\">\n {{ '@formats' | translate }}:\n </strong>\n\n <div class=\"custom-filter__format\">\n {{ '@range' | translate }}:\n <code>start..end</code>\n <span class=\"custom-filter__example\">(today..yesterday)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@singleDate' | translate }}:\n <code>YYYY-MM-DD</code>\n <span class=\"custom-filter__example\">(2024-05-15)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@dateTime' | translate }}:\n <code>YYYY-MM-DD HH:MM</code>\n <span class=\"custom-filter__example\">(2024-05-15 14:30)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@multiple' | translate }}:\n <code>date1,date2,start..end</code>\n </div>\n\n <strong class=\"custom-filter__subtitle\">\n {{ '@specialKeywords' | translate }}:\n </strong>\n\n <div class=\"custom-filter__format\">\n {{ '@turkish' | translate }}:\n <span class=\"custom-filter__keywords\">\n <code class=\"custom-filter__keyword\">bug\u00FCn</code>\n <code class=\"custom-filter__keyword\">d\u00FCn</code>\n <code class=\"custom-filter__keyword\">bu hafta</code>\n <code class=\"custom-filter__keyword\">bu ay</code>\n </span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@english' | translate }}:\n <span class=\"custom-filter__keywords\">\n <code class=\"custom-filter__keyword\">today</code>\n <code class=\"custom-filter__keyword\">yesterday</code>\n <code class=\"custom-filter__keyword\">thisWeek</code>\n <code class=\"custom-filter__keyword\">thisMonth</code>\n </span>\n </div>\n\n <div class=\"custom-filter__note\">{{ '@filterExample' | translate }}</div>\n </div>\n</div>\n" }]
|
|
2763
2929
|
}] });
|
|
@@ -2953,10 +3119,10 @@ class RangeNumberFilter {
|
|
|
2953
3119
|
this.conditions = [];
|
|
2954
3120
|
}
|
|
2955
3121
|
}
|
|
2956
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2957
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
3122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: RangeNumberFilter, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: RangeNumberFilter, isStandalone: true, selector: "ntybase-range-number-filter", host: { attributes: { "ntybase-id": "RangeNumberFilter" } }, ngImport: i0, template: "<div class=\"custom-filter\">\n <div class=\"custom-filter__header\">\n <label class=\"custom-filter__title\">\n {{ '@numberFilter' | translate }}\n </label>\n <input\n type=\"text\"\n class=\"custom-filter__input\"\n [placeholder]=\"'@numberFilterPlaceholder' | translate\"\n [value]=\"filterText\"\n (input)=\"onFilterTextChanged($event)\"\n />\n </div>\n\n <div class=\"custom-filter__help\">\n <strong class=\"custom-filter__help-title\"\n >{{ '@formats' | translate }}:</strong\n >\n\n <div class=\"custom-filter__format\">\n {{ '@closedRange' | translate }}:\n <code>min..max</code>\n <span class=\"custom-filter__example\">(0..5)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@equalOrGreater' | translate }}:\n <code>min..</code>\n <span class=\"custom-filter__example\">(5..)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@equalOrLess' | translate }}:\n <code>..max</code>\n <span class=\"custom-filter__example\">(..10)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@singleValue' | translate }}:\n <code>number</code>\n <span class=\"custom-filter__example\">(10)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@exclusion' | translate }}:\n <code>!number</code>\n <span class=\"custom-filter__example\">(!5)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@rangeExclusion' | translate }}:\n <code>!min..max</code>\n <span class=\"custom-filter__example\">(!5..10)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@multiple' | translate }}:\n <code>value1,value2,range</code>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
2958
3124
|
}
|
|
2959
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: RangeNumberFilter, decorators: [{
|
|
2960
3126
|
type: Component,
|
|
2961
3127
|
args: [{ selector: 'ntybase-range-number-filter', imports: [TranslateModule], host: { 'ntybase-id': 'RangeNumberFilter' }, template: "<div class=\"custom-filter\">\n <div class=\"custom-filter__header\">\n <label class=\"custom-filter__title\">\n {{ '@numberFilter' | translate }}\n </label>\n <input\n type=\"text\"\n class=\"custom-filter__input\"\n [placeholder]=\"'@numberFilterPlaceholder' | translate\"\n [value]=\"filterText\"\n (input)=\"onFilterTextChanged($event)\"\n />\n </div>\n\n <div class=\"custom-filter__help\">\n <strong class=\"custom-filter__help-title\"\n >{{ '@formats' | translate }}:</strong\n >\n\n <div class=\"custom-filter__format\">\n {{ '@closedRange' | translate }}:\n <code>min..max</code>\n <span class=\"custom-filter__example\">(0..5)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@equalOrGreater' | translate }}:\n <code>min..</code>\n <span class=\"custom-filter__example\">(5..)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@equalOrLess' | translate }}:\n <code>..max</code>\n <span class=\"custom-filter__example\">(..10)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@singleValue' | translate }}:\n <code>number</code>\n <span class=\"custom-filter__example\">(10)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@exclusion' | translate }}:\n <code>!number</code>\n <span class=\"custom-filter__example\">(!5)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@rangeExclusion' | translate }}:\n <code>!min..max</code>\n <span class=\"custom-filter__example\">(!5..10)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@multiple' | translate }}:\n <code>value1,value2,range</code>\n </div>\n </div>\n</div>\n" }]
|
|
2962
3128
|
}] });
|
|
@@ -3206,10 +3372,10 @@ class RangeStringFilter {
|
|
|
3206
3372
|
this.conditions = [];
|
|
3207
3373
|
}
|
|
3208
3374
|
}
|
|
3209
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3210
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
3375
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: RangeStringFilter, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3376
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: RangeStringFilter, isStandalone: true, selector: "ntybase-range-string-filter", host: { attributes: { "ntybase-id": "RangeStringFilter" } }, ngImport: i0, template: "<div class=\"custom-filter\">\n <div class=\"custom-filter__header\">\n <label class=\"custom-filter__title\">\n {{ '@stringFilter' | translate }}\n </label>\n <input\n type=\"text\"\n class=\"custom-filter__input\"\n [placeholder]=\"'@stringFilterPlaceholder' | translate\"\n [value]=\"filterText\"\n (input)=\"onFilterTextChanged($event)\"\n />\n </div>\n\n <div class=\"custom-filter__help\">\n <strong class=\"custom-filter__help-title\">\n {{ '@formats' | translate }}:\n </strong>\n\n <div class=\"custom-filter__format\">\n {{ '@exactMatch' | translate }}:\n <code>text</code>\n <span class=\"custom-filter__example\">(ahmet)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@startsWith' | translate }}:\n <code>text*</code>\n <span class=\"custom-filter__example\">(ahmet*)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@endsWith' | translate }}:\n <code>*text</code>\n <span class=\"custom-filter__example\">(*metin)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@contains' | translate }}:\n <code>*text*</code>\n <span class=\"custom-filter__example\">(*ahmet*)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@range' | translate }}:\n <code>start..end</code>\n <span class=\"custom-filter__example\">(ali..veli)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n <span class=\"custom-filter__description\">\n {{ '@singleCharacter' | translate }}:\n </span>\n <code>?em</code>\n <span class=\"custom-filter__example\">\n (?em = 3 characters, 2nd and 3rd letters \"em\")\n </span>\n </div>\n\n <div class=\"custom-filter__format\">\n <span class=\"custom-filter__description\">\n {{ '@multipleCharacters' | translate }}:\n </span>\n <code>???in</code>\n <span class=\"custom-filter__example\">\n (5 characters, last 2 letters \"in\")\n </span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@not' | translate }}:\n <code>!condition</code>\n <span class=\"custom-filter__example\">(!*ahmet*, !?hmet)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@regex' | translate }}:\n <code>$$pattern</code>\n <span class=\"custom-filter__example\">($$^[A-Z].*, $$a.*b)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@multiple' | translate }}:\n <code>value1,value2,*end,$$pattern</code>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
3211
3377
|
}
|
|
3212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3378
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: RangeStringFilter, decorators: [{
|
|
3213
3379
|
type: Component,
|
|
3214
3380
|
args: [{ selector: 'ntybase-range-string-filter', imports: [TranslateModule], host: { 'ntybase-id': 'RangeStringFilter' }, template: "<div class=\"custom-filter\">\n <div class=\"custom-filter__header\">\n <label class=\"custom-filter__title\">\n {{ '@stringFilter' | translate }}\n </label>\n <input\n type=\"text\"\n class=\"custom-filter__input\"\n [placeholder]=\"'@stringFilterPlaceholder' | translate\"\n [value]=\"filterText\"\n (input)=\"onFilterTextChanged($event)\"\n />\n </div>\n\n <div class=\"custom-filter__help\">\n <strong class=\"custom-filter__help-title\">\n {{ '@formats' | translate }}:\n </strong>\n\n <div class=\"custom-filter__format\">\n {{ '@exactMatch' | translate }}:\n <code>text</code>\n <span class=\"custom-filter__example\">(ahmet)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@startsWith' | translate }}:\n <code>text*</code>\n <span class=\"custom-filter__example\">(ahmet*)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@endsWith' | translate }}:\n <code>*text</code>\n <span class=\"custom-filter__example\">(*metin)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@contains' | translate }}:\n <code>*text*</code>\n <span class=\"custom-filter__example\">(*ahmet*)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@range' | translate }}:\n <code>start..end</code>\n <span class=\"custom-filter__example\">(ali..veli)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n <span class=\"custom-filter__description\">\n {{ '@singleCharacter' | translate }}:\n </span>\n <code>?em</code>\n <span class=\"custom-filter__example\">\n (?em = 3 characters, 2nd and 3rd letters \"em\")\n </span>\n </div>\n\n <div class=\"custom-filter__format\">\n <span class=\"custom-filter__description\">\n {{ '@multipleCharacters' | translate }}:\n </span>\n <code>???in</code>\n <span class=\"custom-filter__example\">\n (5 characters, last 2 letters \"in\")\n </span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@not' | translate }}:\n <code>!condition</code>\n <span class=\"custom-filter__example\">(!*ahmet*, !?hmet)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@regex' | translate }}:\n <code>$$pattern</code>\n <span class=\"custom-filter__example\">($$^[A-Z].*, $$a.*b)</span>\n </div>\n\n <div class=\"custom-filter__format\">\n {{ '@multiple' | translate }}:\n <code>value1,value2,*end,$$pattern</code>\n </div>\n </div>\n</div>\n" }]
|
|
3215
3381
|
}] });
|
|
@@ -3232,10 +3398,10 @@ class AuthenticationGuard {
|
|
|
3232
3398
|
}
|
|
3233
3399
|
return false;
|
|
3234
3400
|
}
|
|
3235
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3236
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
3401
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3402
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationGuard, providedIn: 'root' });
|
|
3237
3403
|
}
|
|
3238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3404
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationGuard, decorators: [{
|
|
3239
3405
|
type: Injectable,
|
|
3240
3406
|
args: [{ providedIn: 'root' }]
|
|
3241
3407
|
}] });
|
|
@@ -3527,10 +3693,10 @@ class AuthenticationService {
|
|
|
3527
3693
|
getAdminLink(path = '') {
|
|
3528
3694
|
return this.environmentProxy.getAdminLink(path);
|
|
3529
3695
|
}
|
|
3530
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3531
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
3696
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3697
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationService, providedIn: 'root' });
|
|
3532
3698
|
}
|
|
3533
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3699
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthenticationService, decorators: [{
|
|
3534
3700
|
type: Injectable,
|
|
3535
3701
|
args: [{
|
|
3536
3702
|
providedIn: 'root',
|
|
@@ -3584,10 +3750,10 @@ class AuthBase {
|
|
|
3584
3750
|
return 'fi fi-tr';
|
|
3585
3751
|
}
|
|
3586
3752
|
}
|
|
3587
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3588
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
3753
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: AuthBase, isStandalone: true, selector: "ntybase-auth-base", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { icon: "iconChange" }, ngImport: i0, template: "<p>auth-base works!</p>\n", styles: [""] });
|
|
3589
3755
|
}
|
|
3590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AuthBase, decorators: [{
|
|
3591
3757
|
type: Component,
|
|
3592
3758
|
args: [{ selector: 'ntybase-auth-base', imports: [], template: "<p>auth-base works!</p>\n" }]
|
|
3593
3759
|
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }, { type: i0.Output, args: ["iconChange"] }] } });
|
|
@@ -3723,10 +3889,10 @@ class Login extends AuthBase {
|
|
|
3723
3889
|
},
|
|
3724
3890
|
});
|
|
3725
3891
|
}
|
|
3726
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3727
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
3892
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: Login, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3893
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: Login, isStandalone: true, selector: "ntybase-login", usesInheritance: true, ngImport: i0, template: "<div class=\"login-page-container\">\n <div class=\"login-image-container\"></div>\n\n <div class=\"login-container glass-effect\">\n <!-- Language Button -->\n <div class=\"language-toggle\">\n @if (icon()) {\n <button mat-icon-button [matMenuTriggerFor]=\"languageMenu\">\n <span class=\"{{ getCurrentLanguageIcon() }}\"></span>\n </button>\n } @else {\n <button\n mat-raised-button\n color=\"primary\"\n [matMenuTriggerFor]=\"languageMenu\"\n >\n {{ currentLanguage }}\n </button>\n }\n </div>\n\n <h2>{{'app_name' | translate }}</h2>\n\n <!-- Language Menu -->\n <mat-menu #languageMenu=\"matMenu\">\n @for (language of languages; track language) {\n <button mat-menu-item (click)=\"setLanguage(language)\">\n <span class=\"{{ getLanguageIcon(language) }}\"></span>\n {{ language }}\n </button>\n }\n </mat-menu>\n\n @if (!isLoading()) {\n <form (ngSubmit)=\"login()\" [formGroup]=\"loginForm\" novalidate>\n @if (error()) {\n <div class=\"error-message\">\n <span class=\"error-icon\">!</span>\n {{ error() }}\n </div>\n }\n\n <div class=\"form-group\">\n <label for=\"username\">{{'@username' | translate}}</label>\n <input\n type=\"text\"\n id=\"username\"\n formControlName=\"username\"\n [placeholder]=\"'@username' | translate\"\n required\n />\n @if (loginForm.controls['username'].invalid &&\n loginForm.controls['username'].touched) {\n <mat-error class=\"validation-error\">\n <span class=\"error-icon\">!</span>\n {{ 'username is required' | translate }}\n </mat-error>\n }\n </div>\n\n <div class=\"form-group\">\n <label for=\"password\">{{'@password' | translate}}</label>\n <input\n type=\"password\"\n id=\"password\"\n formControlName=\"password\"\n [placeholder]=\"'@password' | translate\"\n required\n />\n @if (loginForm.controls['password'].invalid &&\n loginForm.controls['password'].touched) {\n <div class=\"validation-error\">\n <span class=\"error-icon\">!</span>\n {{ 'password is required' | translate }}\n </div>\n }\n </div>\n\n <div class=\"form-group remember\">\n <input type=\"checkbox\" id=\"remember\" formControlName=\"remember\" />\n <label for=\"remember\">{{ '@rememberMe' | translate }}</label>\n <a class=\"forgot-password\" (click)=\"onForgotPassword()\"\n >{{ '@forgotPassword' | translate }}</a\n >\n </div>\n\n <button\n type=\"submit\"\n class=\"login-button\"\n [disabled]=\"loginForm.invalid || isLoading()\"\n >\n {{ '@login' | translate }}\n </button>\n </form>\n } @else {\n <div class=\"loading-spinner\">\n <span>{{ '@loggingIn' | translate }}</span>\n </div>\n }\n\n <div class=\"footer\">\n @if(version() && version() !== '?.?'){\n <div class=\"version\">{{ version() }}</div>\n }\n </div>\n </div>\n</div>\n", styles: [".login-page-container{position:relative;display:flex;height:100vh;background-image:var(--login-bg-image, url(https://images.unsplash.com/photo-1519681393784-d120267933ba?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1124&q=100));background-position:center;background-repeat:no-repeat;background-size:cover;background-attachment:fixed;justify-content:flex-end;padding-right:5%}.login-image-container{display:none}.login-container{width:100%;max-width:400px;padding:2.5rem;display:flex;flex-direction:column;justify-content:center;background:#ffffff1a;border-radius:16px;box-shadow:0 8px 32px #0003;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.2);margin:20px;height:fit-content;align-self:center}.login-container h2{color:#fff;text-align:center;margin-bottom:2rem;font-size:1.8rem;font-weight:600;text-shadow:0 2px 4px rgba(0,0,0,.3)}.form-group{margin-bottom:1.5rem}.form-group label{display:block;font-weight:500;color:#fff;font-size:.9rem;text-shadow:0 1px 2px rgba(0,0,0,.3)}.form-group input[type=text],.form-group input[type=password]{width:100%;padding:.85rem 1rem;margin-top:.5rem;border:1px solid rgba(255,255,255,.3);border-radius:8px;font-size:.95rem;background-color:#ffffff26;color:#fff}.form-group input::placeholder{color:#ffffffb3}.form-group input[type=text]:focus,.form-group input[type=password]:focus{outline:none;border-color:#ffffff80;background-color:#ffffff40;box-shadow:0 0 0 3px #ffffff1a}.remember{display:flex;align-items:center;margin-bottom:1.5rem}.remember input{width:18px;height:18px;margin-right:.75rem;cursor:pointer}.remember label{color:#fff;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none;text-shadow:0 1px 2px rgba(0,0,0,.3)}.forgot-password{margin-left:auto;color:#ffffffe6;font-size:.85rem;text-decoration:none}.forgot-password:hover{text-decoration:underline}.login-button{width:100%;padding:1rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.login-button:hover{background-color:#ffffff4d}.loading-spinner{text-align:center;padding:2rem}.loading-spinner p{margin-top:1rem;color:#fff}.footer{margin-top:2rem;text-align:center}.version{color:#ffffffb3;font-size:.8rem;display:block;text-shadow:0 1px 2px rgba(0,0,0,.3)}@media(max-width:768px){.login-page-container{justify-content:center;padding-right:0;align-items:center}.login-container{max-width:90%;margin:20px auto}}.language-toggle{position:absolute;top:20px;right:20px;z-index:10}.language-toggle button{background:#fff3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid rgba(255,255,255,.3);cursor:pointer}.language-toggle button:hover{background:#ffffff4d}.language-toggle button mat-icon{color:#fff}.login-container h2{margin-top:.5rem}.flag-icon{width:24px;height:16px;margin-right:8px;border:1px solid #ddd}.error-message{background-color:#f8d7da;color:#721c24;padding:12px 15px;border-radius:4px;margin-bottom:20px;display:flex;align-items:center;border:1px solid #f5c6cb;font-size:14px;animation:fadeIn .3s ease-in-out}.error-message .error-icon{display:inline-block;width:20px;height:20px;background-color:#dc3545;color:#fff;border-radius:50%;text-align:center;line-height:20px;margin-right:10px;font-weight:700;font-size:12px}.validation-error{color:#dc3545;font-size:12px;margin-top:5px;display:flex;align-items:center;animation:fadeIn .3s ease-in-out}.validation-error .error-icon{display:inline-block;width:16px;height:16px;background-color:#dc3545;color:#fff;border-radius:50%;text-align:center;line-height:16px;margin-right:6px;font-weight:700;font-size:10px}input.ng-invalid.ng-touched{border:1px solid #dc3545!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
3728
3894
|
}
|
|
3729
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3895
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: Login, decorators: [{
|
|
3730
3896
|
type: Component,
|
|
3731
3897
|
args: [{ selector: 'ntybase-login', imports: [
|
|
3732
3898
|
FormsModule,
|
|
@@ -3835,10 +4001,10 @@ class MfaLogin extends AuthBase {
|
|
|
3835
4001
|
ngOnDestroy() {
|
|
3836
4002
|
clearInterval(this.countdownInterval);
|
|
3837
4003
|
}
|
|
3838
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3839
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
4004
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: MfaLogin, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
4005
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: MfaLogin, isStandalone: true, selector: "ntybase-mfa-login", usesInheritance: true, ngImport: i0, template: "<div class=\"login-page-container\">\n <div class=\"login-image-container\"></div>\n\n <div class=\"login-container glass-effect\">\n <!-- Language Button -->\n <div class=\"language-toggle\">\n @if (icon()) {\n <button mat-icon-button [matMenuTriggerFor]=\"languageMenu\">\n <span class=\"{{ getCurrentLanguageIcon() }}\"></span>\n </button>\n } @else {\n <button\n mat-raised-button\n color=\"primary\"\n [matMenuTriggerFor]=\"languageMenu\"\n >\n {{ currentLanguage }}\n </button>\n }\n </div>\n\n <h2>{{'app_name' | translate }}</h2>\n\n <!-- Language Menu -->\n <mat-menu #languageMenu=\"matMenu\">\n @for (language of languages; track language) {\n <button mat-menu-item (click)=\"setLanguage(language)\">\n <span class=\"{{ getLanguageIcon(language) }}\"></span>\n {{ language }}\n </button>\n }\n </mat-menu>\n\n @if (!isLoading()) {\n <form (ngSubmit)=\"login()\" [formGroup]=\"loginForm\" novalidate>\n @if (error()) {\n <div class=\"error-message\">\n <span class=\"error-icon\">!</span>\n {{ error() }}\n </div>\n }\n\n <div class=\"form-group\">\n <label for=\"mfaCode\">{{'mfaCode' | translate}}</label>\n <input\n type=\"text\"\n id=\"mfaCode\"\n formControlName=\"mfaCode\"\n [placeholder]=\"'mfaCode' | translate\"\n required\n />\n @if (loginForm.controls['mfaCode'].invalid &&\n loginForm.controls['mfaCode'].touched) {\n <div class=\"validation-error\">\n <span class=\"error-icon\">!</span>\n {{ 'mfaCode is required' | translate }}\n </div>\n }\n\n <!-- Time -->\n @if (!resendable()) {\n <div class=\"time-remaining\">\n {{ '@tokenCount' | translate }}: {{ getFormattedTime() }}\n </div>\n }\n </div>\n\n <button\n type=\"submit\"\n class=\"login-button\"\n [disabled]=\"loginForm.invalid || isLoading() || !resendable()\"\n >\n {{ '@login' | translate }}\n </button>\n\n @if (resendable()) {\n <div class=\"resend-container\">\n <span (click)=\"onResendMFACode()\" class=\"resend-link\">\n {{ 'resend MFACode' | translate }}\n </span>\n </div>\n }\n </form>\n } @else {\n <div class=\"loading-spinner\">\n <span>{{ '@loggingIn' | translate }}</span>\n </div>\n }\n\n <div class=\"footer\">\n <span class=\"version\">v{{version}}</span>\n </div>\n </div>\n</div>\n", styles: [".login-page-container{position:relative;display:flex;height:100vh;background-image:var(--mfa-login-bg-image, url(https://images.unsplash.com/photo-1519681393784-d120267933ba?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1124&q=100));background-position:center;background-repeat:no-repeat;background-size:cover;background-attachment:fixed;justify-content:flex-end;padding-right:5%}.login-image-container{display:none}.login-container{width:100%;max-width:400px;padding:2.5rem;display:flex;flex-direction:column;justify-content:center;background:#ffffff1a;border-radius:16px;box-shadow:0 8px 32px #0003;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.2);margin:20px;height:fit-content;align-self:center}.login-container h2{color:#fff;text-align:center;margin-bottom:2rem;font-size:1.8rem;font-weight:600;text-shadow:0 2px 4px rgba(0,0,0,.3)}.form-group{margin-bottom:1.5rem}.form-group label{display:block;font-weight:500;color:#fff;font-size:.9rem;text-shadow:0 1px 2px rgba(0,0,0,.3)}.form-group input[type=text],.form-group input[type=password]{width:100%;padding:.85rem 1rem;margin-top:.5rem;border:1px solid rgba(255,255,255,.3);border-radius:8px;font-size:.95rem;background-color:#ffffff26;color:#fff}.form-group input::placeholder{color:#ffffffb3}.form-group input[type=text]:focus,.form-group input[type=password]:focus{outline:none;border-color:#ffffff80;background-color:#ffffff40;box-shadow:0 0 0 3px #ffffff1a}.login-button{width:100%;padding:1rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.login-button:hover{background-color:#ffffff4d}.loading-spinner{text-align:center;padding:2rem}.loading-spinner p{margin-top:1rem;color:#fff}.footer{margin-top:2rem;text-align:center}.version{color:#ffffffb3;font-size:.8rem;display:block;text-shadow:0 1px 2px rgba(0,0,0,.3)}.language-toggle{position:absolute;top:20px;right:20px;z-index:10}.language-toggle button{background:#fff3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid rgba(255,255,255,.3);cursor:pointer}.language-toggle button:hover{background:#ffffff4d}.language-toggle button mat-icon{color:#fff}.login-container h2{margin-top:.5rem}.flag-icon{width:24px;height:16px;margin-right:8px;border:1px solid #ddd}.error-message{background-color:#f8d7da;color:#721c24;padding:12px 15px;border-radius:4px;margin-bottom:20px;display:flex;align-items:center;border:1px solid #f5c6cb;font-size:14px;animation:fadeIn .3s ease-in-out}.error-message .error-icon{display:inline-block;width:20px;height:20px;background-color:#dc3545;color:#fff;border-radius:50%;text-align:center;line-height:20px;margin-right:10px;font-weight:700;font-size:12px}.validation-error{color:#dc3545;font-size:12px;margin-top:5px;display:flex;align-items:center;animation:fadeIn .3s ease-in-out}.validation-error .error-icon{display:inline-block;width:16px;height:16px;background-color:#dc3545;color:#fff;border-radius:50%;text-align:center;line-height:16px;margin-right:6px;font-weight:700;font-size:10px}.invalid-input{border:1px solid #dc3545!important}.invalid-input:focus{box-shadow:0 0 0 .2rem #dc354540}.resend-container{margin-top:15px;text-align:center}.resend-container .resend-link{color:#007bff;cursor:pointer;text-decoration:underline;font-size:13px}.resend-container .resend-link:hover{color:#0056b3}.time-remaining{margin-top:16px;font-size:1rem;color:#f5f5f5}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.login-page-container{justify-content:center;padding-right:0;align-items:center}.login-container{max-width:90%;margin:20px auto}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
3840
4006
|
}
|
|
3841
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4007
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: MfaLogin, decorators: [{
|
|
3842
4008
|
type: Component,
|
|
3843
4009
|
args: [{ selector: 'ntybase-mfa-login', imports: [
|
|
3844
4010
|
FormsModule,
|
|
@@ -3891,10 +4057,10 @@ class PasswordProxy {
|
|
|
3891
4057
|
return throwError(() => new Error(errorMessage ?? ''));
|
|
3892
4058
|
}));
|
|
3893
4059
|
}
|
|
3894
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3895
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
4060
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: PasswordProxy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4061
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: PasswordProxy, providedIn: 'root' });
|
|
3896
4062
|
}
|
|
3897
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: PasswordProxy, decorators: [{
|
|
3898
4064
|
type: Injectable,
|
|
3899
4065
|
args: [{
|
|
3900
4066
|
providedIn: 'root',
|
|
@@ -4009,10 +4175,10 @@ class ForgotPassword extends AuthBase {
|
|
|
4009
4175
|
},
|
|
4010
4176
|
});
|
|
4011
4177
|
}
|
|
4012
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4013
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
4178
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ForgotPassword, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4179
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ForgotPassword, isStandalone: true, selector: "ntybase-forgot-password", usesInheritance: true, ngImport: i0, template: "<div class=\"login-page-container\">\n <div class=\"login-image-container\"></div>\n\n <div class=\"login-container glass-effect\">\n <!-- Language Button -->\n <div class=\"language-toggle\">\n @if (icon()) {\n <button mat-icon-button [matMenuTriggerFor]=\"languageMenu\">\n <span class=\"{{ getCurrentLanguageIcon() }}\"></span>\n </button>\n } @else {\n <button\n mat-raised-button\n color=\"primary\"\n [matMenuTriggerFor]=\"languageMenu\"\n >\n {{ currentLanguage }}\n </button>\n }\n </div>\n\n <h2>{{'app_name' | translate }}</h2>\n\n <!-- Language Menu -->\n <mat-menu #languageMenu=\"matMenu\">\n @for (language of languages; track language) {\n <button mat-menu-item (click)=\"setLanguage(language)\">\n <span class=\"{{ getLanguageIcon(language) }}\"></span>\n {{ language }}\n </button>\n }\n </mat-menu>\n\n @if (!isLoading()) {\n <form\n (ngSubmit)=\"updatePassword()\"\n [formGroup]=\"updatePasswordForm\"\n novalidate\n >\n @if (error()) {\n <div class=\"error-message\">\n <span class=\"error-icon\">!</span>\n {{ error() }}\n </div>\n }\n\n <div class=\"form-group\">\n <label for=\"username\">{{'@username' | translate}}</label>\n <input\n type=\"text\"\n id=\"username\"\n [placeholder]=\"'@username' | translate\"\n formControlName=\"username\"\n required\n />\n </div>\n\n <div class=\"form-group\">\n <label for=\"newPassword\">{{'@password' | translate}}</label>\n <input\n type=\"password\"\n id=\"newPassword\"\n [placeholder]=\"'@password' | translate\"\n formControlName=\"newPassword\"\n required\n />\n @if (updatePasswordForm.controls['newPassword'].invalid &&\n updatePasswordForm.controls['newPassword'].touched) {\n <mat-error class=\"validation-error\">\n <span class=\"error-icon\">!</span>\n {{ 'password is required' | translate }}\n </mat-error>\n }\n </div>\n\n <div class=\"form-group\">\n <label for=\"newPasswordCheck\">{{'@passwordCheck' | translate}}</label>\n <input\n type=\"password\"\n id=\"newPasswordCheck\"\n [placeholder]=\"'@passwordCheck' | translate\"\n formControlName=\"newPasswordCheck\"\n required\n />\n @if (updatePasswordForm.controls['newPasswordCheck'].invalid &&\n updatePasswordForm.controls['newPasswordCheck'].touched) {\n <mat-error class=\"validation-error\">\n <span class=\"error-icon\">!</span>\n {{ 'password is required' | translate }}\n </mat-error>\n }\n </div>\n\n <button\n type=\"submit\"\n class=\"login-button\"\n [disabled]=\"updatePasswordForm.invalid\"\n >\n {{ '@setPassword' | translate }}\n </button>\n </form>\n } @else {\n <!-- Burada eski #loading template'inin i\u00E7eri\u011Fi direkt olarak kullan\u0131l\u0131yor -->\n <div class=\"loading-spinner\">\n <span>{{ '@updatingPassword' | translate }}</span>\n </div>\n }\n\n <div class=\"footer\">\n <span class=\"version\">v{{version}}</span>\n </div>\n </div>\n</div>\n", styles: [".login-page-container{position:relative;display:flex;height:100vh;background-image:var(--forgot-password-bg-image, url(https://images.unsplash.com/photo-1519681393784-d120267933ba?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1124&q=100));background-position:center;background-repeat:no-repeat;background-size:cover;background-attachment:fixed;justify-content:flex-end;padding-right:5%}.login-image-container{display:none}.login-container{width:100%;max-width:400px;padding:2.5rem;display:flex;flex-direction:column;justify-content:center;background:#ffffff1a;border-radius:16px;box-shadow:0 8px 32px #0003;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.2);margin:20px;height:fit-content;align-self:center}.login-container h2{color:#fff;text-align:center;margin-bottom:2rem;font-size:1.8rem;font-weight:600;text-shadow:0 2px 4px rgba(0,0,0,.3)}.form-group{margin-bottom:1.5rem}.form-group label{display:block;font-weight:500;color:#fff;font-size:.9rem;text-shadow:0 1px 2px rgba(0,0,0,.3)}.form-group input[type=text],.form-group input[type=password]{width:100%;padding:.85rem 1rem;margin-top:.5rem;border:1px solid rgba(255,255,255,.3);border-radius:8px;font-size:.95rem;background-color:#ffffff26;color:#fff}.form-group input::placeholder{color:#ffffffb3}.form-group input[type=text]:focus,.form-group input[type=password]:focus{outline:none;border-color:#ffffff80;background-color:#ffffff40;box-shadow:0 0 0 3px #ffffff1a}.remember{display:flex;align-items:center;margin-bottom:1.5rem}.remember input{width:18px;height:18px;margin-right:.75rem;cursor:pointer}.remember label{color:#fff;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none;text-shadow:0 1px 2px rgba(0,0,0,.3)}.forgot-password{margin-left:auto;color:#ffffffe6;font-size:.85rem;text-decoration:none}.forgot-password:hover{text-decoration:underline}.login-button{width:100%;padding:1rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.login-button:hover{background-color:#ffffff4d}.loading-spinner{text-align:center;padding:2rem}.loading-spinner p{margin-top:1rem;color:#fff}.footer{margin-top:2rem;text-align:center}.version{color:#ffffffb3;font-size:.8rem;display:block;text-shadow:0 1px 2px rgba(0,0,0,.3)}@media(max-width:768px){.login-page-container{justify-content:center;padding-right:0;align-items:center}.login-container{max-width:90%;margin:20px auto}}.language-toggle{position:absolute;top:20px;right:20px;z-index:10}.language-toggle button{background:#fff3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid rgba(255,255,255,.3);cursor:pointer}.language-toggle button:hover{background:#ffffff4d}.language-toggle button mat-icon{color:#fff}.login-container h2{margin-top:.5rem}.flag-icon{width:24px;height:16px;margin-right:8px;border:1px solid #ddd}.error-message{background-color:#f8d7da;color:#721c24;padding:12px 15px;border-radius:4px;margin-bottom:20px;display:flex;align-items:center;border:1px solid #f5c6cb;font-size:14px;animation:fadeIn .3s ease-in-out}.error-message .error-icon{display:inline-block;width:20px;height:20px;background-color:#dc3545;color:#fff;border-radius:50%;text-align:center;line-height:20px;margin-right:10px;font-weight:700;font-size:12px}.validation-error{color:#dc3545;font-size:12px;margin-top:5px;display:flex;align-items:center;animation:fadeIn .3s ease-in-out}.validation-error .error-icon{display:inline-block;width:16px;height:16px;background-color:#dc3545;color:#fff;border-radius:50%;text-align:center;line-height:16px;margin-right:6px;font-weight:700;font-size:10px}input.ng-invalid.ng-touched{border:1px solid #dc3545!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
4014
4180
|
}
|
|
4015
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ForgotPassword, decorators: [{
|
|
4016
4182
|
type: Component,
|
|
4017
4183
|
args: [{ selector: 'ntybase-forgot-password', imports: [
|
|
4018
4184
|
FormsModule,
|
|
@@ -4069,10 +4235,10 @@ class NettyImageService {
|
|
|
4069
4235
|
ctx.fillText(text, width / 2, height / 2);
|
|
4070
4236
|
return canvas.toDataURL('image/png');
|
|
4071
4237
|
}
|
|
4072
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4073
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
4238
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4239
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyImageService, providedIn: 'root' });
|
|
4074
4240
|
}
|
|
4075
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyImageService, decorators: [{
|
|
4076
4242
|
type: Injectable,
|
|
4077
4243
|
args: [{
|
|
4078
4244
|
providedIn: 'root',
|
|
@@ -4093,10 +4259,10 @@ class NettyBaseApp {
|
|
|
4093
4259
|
throw error;
|
|
4094
4260
|
}
|
|
4095
4261
|
}
|
|
4096
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4097
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
4262
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyBaseApp, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4263
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: NettyBaseApp, isStandalone: true, selector: "ntybase-netty-base-app", ngImport: i0, template: "", styles: [""] });
|
|
4098
4264
|
}
|
|
4099
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyBaseApp, decorators: [{
|
|
4100
4266
|
type: Component,
|
|
4101
4267
|
args: [{ selector: 'ntybase-netty-base-app', imports: [], template: "" }]
|
|
4102
4268
|
}] });
|
|
@@ -4136,10 +4302,10 @@ class EnvironmentInfo {
|
|
|
4136
4302
|
console.warn("Environment konfigürasyonu bulunamadı. ENVIRONMENT_CONFIG token'ı sağlandı mı?");
|
|
4137
4303
|
}
|
|
4138
4304
|
}
|
|
4139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
4305
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: EnvironmentInfo, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4306
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: EnvironmentInfo, isStandalone: true, selector: "ntybase-environment-info", inputs: { showNettyInfo: "showNettyInfo" }, ngImport: i0, template: "<div class=\"environment-info\" [class.production]=\"isProduction\">\n <div class=\"info-card\">\n <div class=\"card-header\">\n <h3>{{ 'ENVIRONMENT_INFO.applicationInfo' | translate }}</h3>\n <span class=\"env-badge\" [class.prod]=\"isProduction\">\n {{ isProduction ? ('ENVIRONMENT_INFO.prod' | translate) :\n ('ENVIRONMENT_INFO.dev' | translate) }}\n </span>\n </div>\n\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"label\">{{ 'ENVIRONMENT_INFO.version' | translate }}</span>\n <span class=\"value\">{{ version }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.defaultLanguage' | translate }}</span\n >\n <span class=\"value\">{{ defaultLanguage }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.supportedLanguages' | translate }}</span\n >\n <span class=\"value\">{{ supportedLanguages.join(', ') }}</span>\n </div>\n </div>\n\n @if (showNettyInfo) {\n <div class=\"netty-info\">\n <h4>{{ 'ENVIRONMENT_INFO.nettyConnections' | translate }}</h4>\n\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"label\">{{ 'ENVIRONMENT_INFO.apiUrl' | translate }}</span>\n <span class=\"value\">{{ apiUrl }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.adminUrl' | translate }}</span\n >\n <span class=\"value\">{{ adminUrl }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.baseHref' | translate }}</span\n >\n <span class=\"value\">{{ baseHref }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.application' | translate }}</span\n >\n <span class=\"value\">{{ application }}</span>\n </div>\n </div>\n </div>\n } @if (!hasConfig) {\n <div class=\"no-config\">{{ 'ENVIRONMENT_INFO.noConfig' | translate }}</div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.environment-info{padding:24px;font-family:Inter,Arial,sans-serif;display:flex;justify-content:center}.info-card{width:100%;max-width:720px;background:var(--mat-sys-on-primary);border-radius:12px;padding:24px;box-shadow:0 8px 24px #0000000f;transition:all .3s ease;border:2px solid var(--mat-sys-on-primary-container)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.card-header h3{margin:0;font-size:20px;font-weight:600;color:var(--mat-sys-on-primary-container)}.env-badge{padding:6px 12px;border-radius:999px;font-size:12px;font-weight:600;background:var(--mat-sys-on-primary-container);color:var(--mat-sys-surface)}.env-badge.prod{background:var(--mat-sys-on-primary-container);color:var(--mat-sys-surface)}.info-grid{display:grid;grid-template-columns:1fr 2fr;gap:14px 20px;margin-bottom:20px}.info-item{display:contents}.label{color:var(--mat-sys-on-primary-container);font-size:13px;font-weight:500}.value{color:var(--mat-sys-on-primary-container);font-size:14px;font-weight:500;word-break:break-word}.netty-info{margin-top:24px;padding-top:20px;border-top:1px solid var(--mat-sys-primary)}.netty-info h4{margin:0 0 16px;font-size:20px;font-weight:600;color:var(--mat-sys-on-primary-container)}.production .info-card{border-left:6px solid #ef4444}.no-config{margin-top:20px;padding:14px;background:var(--mat-sys-primary-fixed);border:1px solid #fed7aa;border-radius:8px;color:#c2410c;font-weight:600;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
4141
4307
|
}
|
|
4142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: EnvironmentInfo, decorators: [{
|
|
4143
4309
|
type: Component,
|
|
4144
4310
|
args: [{ selector: 'ntybase-environment-info', imports: [TranslateModule], template: "<div class=\"environment-info\" [class.production]=\"isProduction\">\n <div class=\"info-card\">\n <div class=\"card-header\">\n <h3>{{ 'ENVIRONMENT_INFO.applicationInfo' | translate }}</h3>\n <span class=\"env-badge\" [class.prod]=\"isProduction\">\n {{ isProduction ? ('ENVIRONMENT_INFO.prod' | translate) :\n ('ENVIRONMENT_INFO.dev' | translate) }}\n </span>\n </div>\n\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"label\">{{ 'ENVIRONMENT_INFO.version' | translate }}</span>\n <span class=\"value\">{{ version }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.defaultLanguage' | translate }}</span\n >\n <span class=\"value\">{{ defaultLanguage }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.supportedLanguages' | translate }}</span\n >\n <span class=\"value\">{{ supportedLanguages.join(', ') }}</span>\n </div>\n </div>\n\n @if (showNettyInfo) {\n <div class=\"netty-info\">\n <h4>{{ 'ENVIRONMENT_INFO.nettyConnections' | translate }}</h4>\n\n <div class=\"info-grid\">\n <div class=\"info-item\">\n <span class=\"label\">{{ 'ENVIRONMENT_INFO.apiUrl' | translate }}</span>\n <span class=\"value\">{{ apiUrl }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.adminUrl' | translate }}</span\n >\n <span class=\"value\">{{ adminUrl }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.baseHref' | translate }}</span\n >\n <span class=\"value\">{{ baseHref }}</span>\n </div>\n\n <div class=\"info-item\">\n <span class=\"label\"\n >{{ 'ENVIRONMENT_INFO.application' | translate }}</span\n >\n <span class=\"value\">{{ application }}</span>\n </div>\n </div>\n </div>\n } @if (!hasConfig) {\n <div class=\"no-config\">{{ 'ENVIRONMENT_INFO.noConfig' | translate }}</div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.environment-info{padding:24px;font-family:Inter,Arial,sans-serif;display:flex;justify-content:center}.info-card{width:100%;max-width:720px;background:var(--mat-sys-on-primary);border-radius:12px;padding:24px;box-shadow:0 8px 24px #0000000f;transition:all .3s ease;border:2px solid var(--mat-sys-on-primary-container)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.card-header h3{margin:0;font-size:20px;font-weight:600;color:var(--mat-sys-on-primary-container)}.env-badge{padding:6px 12px;border-radius:999px;font-size:12px;font-weight:600;background:var(--mat-sys-on-primary-container);color:var(--mat-sys-surface)}.env-badge.prod{background:var(--mat-sys-on-primary-container);color:var(--mat-sys-surface)}.info-grid{display:grid;grid-template-columns:1fr 2fr;gap:14px 20px;margin-bottom:20px}.info-item{display:contents}.label{color:var(--mat-sys-on-primary-container);font-size:13px;font-weight:500}.value{color:var(--mat-sys-on-primary-container);font-size:14px;font-weight:500;word-break:break-word}.netty-info{margin-top:24px;padding-top:20px;border-top:1px solid var(--mat-sys-primary)}.netty-info h4{margin:0 0 16px;font-size:20px;font-weight:600;color:var(--mat-sys-on-primary-container)}.production .info-card{border-left:6px solid #ef4444}.no-config{margin-top:20px;padding:14px;background:var(--mat-sys-primary-fixed);border:1px solid #fed7aa;border-radius:8px;color:#c2410c;font-weight:600;text-align:center}\n"] }]
|
|
4145
4311
|
}], propDecorators: { showNettyInfo: [{
|
|
@@ -4173,10 +4339,10 @@ class EnvironmentInfoService {
|
|
|
4173
4339
|
getDefaultLanguage() {
|
|
4174
4340
|
return this.config?.defaultLanguage || '';
|
|
4175
4341
|
}
|
|
4176
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4177
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
4342
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: EnvironmentInfoService, deps: [{ token: ENVIRONMENT_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4343
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: EnvironmentInfoService, providedIn: 'root' });
|
|
4178
4344
|
}
|
|
4179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4345
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: EnvironmentInfoService, decorators: [{
|
|
4180
4346
|
type: Injectable,
|
|
4181
4347
|
args: [{
|
|
4182
4348
|
providedIn: 'root',
|
|
@@ -4204,10 +4370,10 @@ class NtyLoadingService {
|
|
|
4204
4370
|
this.isLoading.set(false);
|
|
4205
4371
|
}
|
|
4206
4372
|
}
|
|
4207
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4208
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
4373
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtyLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4374
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtyLoadingService, providedIn: 'root' });
|
|
4209
4375
|
}
|
|
4210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtyLoadingService, decorators: [{
|
|
4211
4377
|
type: Injectable,
|
|
4212
4378
|
args: [{
|
|
4213
4379
|
providedIn: 'root',
|
|
@@ -4223,10 +4389,10 @@ const NtyLoadingInterceptor = (req, next) => {
|
|
|
4223
4389
|
class NtyLoadingComponent {
|
|
4224
4390
|
loadingService = inject(NtyLoadingService);
|
|
4225
4391
|
isLoading = this.loadingService.isLoading;
|
|
4226
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4227
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
4392
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtyLoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4393
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: NtyLoadingComponent, isStandalone: true, selector: "app-nty-loading", host: { attributes: { "ntybase-id": "NtyLoadingComponent" } }, ngImport: i0, template: "@if (isLoading()) {\n<div class=\"loading-overlay\" (click)=\"$event.stopPropagation(); $event.preventDefault()\">\n <div class=\"spinner\">\n <i class=\"fas fa-spinner\"></i>\n </div>\n <div style=\"margin-top: 10px;\">{{'@loading' | translate}}</div>\n</div>\n}", styles: [".loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:2147483647;display:flex;justify-content:center;align-items:center;color:#fff;flex-direction:column;pointer-events:all;cursor:wait;-webkit-user-select:none;user-select:none}.spinner{font-size:3rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-spinner{animation:spin 1s linear infinite}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
4228
4394
|
}
|
|
4229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NtyLoadingComponent, decorators: [{
|
|
4230
4396
|
type: Component,
|
|
4231
4397
|
args: [{ selector: 'app-nty-loading', imports: [TranslateModule], host: { 'ntybase-id': 'NtyLoadingComponent' }, template: "@if (isLoading()) {\n<div class=\"loading-overlay\" (click)=\"$event.stopPropagation(); $event.preventDefault()\">\n <div class=\"spinner\">\n <i class=\"fas fa-spinner\"></i>\n </div>\n <div style=\"margin-top: 10px;\">{{'@loading' | translate}}</div>\n</div>\n}", styles: [".loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:2147483647;display:flex;justify-content:center;align-items:center;color:#fff;flex-direction:column;pointer-events:all;cursor:wait;-webkit-user-select:none;user-select:none}.spinner{font-size:3rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-spinner{animation:spin 1s linear infinite}\n"] }]
|
|
4232
4398
|
}] });
|
|
@@ -4237,40 +4403,120 @@ class NettyMenuService {
|
|
|
4237
4403
|
i18nService = inject(I18nService);
|
|
4238
4404
|
menuName = signal('', ...(ngDevMode ? [{ debugName: "menuName" }] : []));
|
|
4239
4405
|
menu = signal(null, ...(ngDevMode ? [{ debugName: "menu" }] : []));
|
|
4240
|
-
constructor() {
|
|
4241
|
-
effect(() => {
|
|
4242
|
-
const currentMenuName = this.menuName();
|
|
4243
|
-
const currentLang = this.i18nService.currentLang();
|
|
4244
|
-
if (!currentMenuName.trim()) {
|
|
4245
|
-
return;
|
|
4246
|
-
}
|
|
4247
|
-
let functionUrl = this.environmentProxy.getAdminLink('/GetMenu');
|
|
4248
|
-
if (currentMenuName.trim().length > 0) {
|
|
4249
|
-
functionUrl += '/' + currentMenuName.trim();
|
|
4250
|
-
}
|
|
4251
|
-
this.http.get(functionUrl).subscribe({
|
|
4252
|
-
next: (data) => this.menu.set(data),
|
|
4253
|
-
error: (err) => {
|
|
4254
|
-
console.error('Failed to fetch menu:', err);
|
|
4255
|
-
this.menu.set(null);
|
|
4256
|
-
},
|
|
4257
|
-
});
|
|
4258
|
-
});
|
|
4259
|
-
}
|
|
4260
4406
|
setMenuName(name) {
|
|
4261
4407
|
if (name && name.trim()) {
|
|
4262
4408
|
this.menuName.set(name.trim());
|
|
4409
|
+
this.getMenu();
|
|
4410
|
+
}
|
|
4411
|
+
}
|
|
4412
|
+
getMenu() {
|
|
4413
|
+
const currentMenuName = this.menuName();
|
|
4414
|
+
const currentLang = this.i18nService.currentLang();
|
|
4415
|
+
if (!currentMenuName.trim()) {
|
|
4416
|
+
return;
|
|
4417
|
+
}
|
|
4418
|
+
let functionUrl = this.environmentProxy.getAdminLink('/GetMenu');
|
|
4419
|
+
if (currentMenuName.trim().length > 0) {
|
|
4420
|
+
functionUrl += '/' + currentMenuName.trim();
|
|
4263
4421
|
}
|
|
4422
|
+
this.http.get(functionUrl).subscribe({
|
|
4423
|
+
next: (data) => this.menu.set(data),
|
|
4424
|
+
error: (err) => {
|
|
4425
|
+
console.error('Failed to fetch menu:', err);
|
|
4426
|
+
this.menu.set(null);
|
|
4427
|
+
},
|
|
4428
|
+
});
|
|
4264
4429
|
}
|
|
4265
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4266
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
4430
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4431
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyMenuService, providedIn: 'root' });
|
|
4267
4432
|
}
|
|
4268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4433
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyMenuService, decorators: [{
|
|
4269
4434
|
type: Injectable,
|
|
4270
4435
|
args: [{
|
|
4271
4436
|
providedIn: 'root',
|
|
4272
4437
|
}]
|
|
4273
|
-
}]
|
|
4438
|
+
}] });
|
|
4439
|
+
|
|
4440
|
+
class NettyAppsFilterBase extends NettyAppsBase {
|
|
4441
|
+
// *********************************************************
|
|
4442
|
+
// *** Input / Output ***
|
|
4443
|
+
// *********************************************************
|
|
4444
|
+
isFilterExpanded = model(true, ...(ngDevMode ? [{ debugName: "isFilterExpanded" }] : []));
|
|
4445
|
+
filteredRecords = output();
|
|
4446
|
+
refresh = input(0, ...(ngDevMode ? [{ debugName: "refresh" }] : []));
|
|
4447
|
+
fileName = input('nettyapps_', ...(ngDevMode ? [{ debugName: "fileName" }] : []));
|
|
4448
|
+
// *********************************************************
|
|
4449
|
+
// *** Service ***
|
|
4450
|
+
// *********************************************************
|
|
4451
|
+
filterProxy = injectNettyStandardFilterProxy(this.componentName());
|
|
4452
|
+
// *********************************************************
|
|
4453
|
+
// *** Signals ***
|
|
4454
|
+
// *********************************************************
|
|
4455
|
+
currentItem = signal(this.createNewFilter(), ...(ngDevMode ? [{ debugName: "currentItem" }] : []));
|
|
4456
|
+
// *********************************************************
|
|
4457
|
+
// *** Constructor ***
|
|
4458
|
+
// *********************************************************
|
|
4459
|
+
constructor() {
|
|
4460
|
+
super();
|
|
4461
|
+
effect(() => {
|
|
4462
|
+
if (this.refresh() > 0) {
|
|
4463
|
+
this.onApply();
|
|
4464
|
+
}
|
|
4465
|
+
});
|
|
4466
|
+
}
|
|
4467
|
+
// *********************************************************
|
|
4468
|
+
// *** Functions ***
|
|
4469
|
+
// *********************************************************
|
|
4470
|
+
async ngOnInit() {
|
|
4471
|
+
this.afterOnInit();
|
|
4472
|
+
}
|
|
4473
|
+
onApply() {
|
|
4474
|
+
this.filterProxy.selectFilter(this.currentItem()).subscribe({
|
|
4475
|
+
next: (result) => {
|
|
4476
|
+
this.filteredRecords.emit(result);
|
|
4477
|
+
this.isFilterExpanded.set(false);
|
|
4478
|
+
},
|
|
4479
|
+
error: (err) => this.alertService.showError('@dataLoadFailed', err),
|
|
4480
|
+
});
|
|
4481
|
+
}
|
|
4482
|
+
onReset() {
|
|
4483
|
+
this.filterProxy.initFilter().subscribe({
|
|
4484
|
+
next: (filter) => {
|
|
4485
|
+
this.currentItem.set(filter);
|
|
4486
|
+
},
|
|
4487
|
+
error: (err) => this.alertService.showError('@dataLoadFailed', err),
|
|
4488
|
+
});
|
|
4489
|
+
}
|
|
4490
|
+
onExport() {
|
|
4491
|
+
this.filterProxy.downloadXLS(this.currentItem()).subscribe({
|
|
4492
|
+
next: (response) => {
|
|
4493
|
+
this.downloadBlobFile(response, 'application/zip', this.translateService.instant('@00000072') + '.zip');
|
|
4494
|
+
},
|
|
4495
|
+
error: (err) => this.alertService.showError('@dataLoadFailed', err),
|
|
4496
|
+
});
|
|
4497
|
+
}
|
|
4498
|
+
async afterOnInit() { }
|
|
4499
|
+
// *****************************************
|
|
4500
|
+
// *** Logging Functions ***
|
|
4501
|
+
// *****************************************
|
|
4502
|
+
logInputs(message) {
|
|
4503
|
+
if (!message || message.length < 1) {
|
|
4504
|
+
message = 'NettyAppsFilterBase - Inputs log';
|
|
4505
|
+
}
|
|
4506
|
+
const inputs = {
|
|
4507
|
+
"isFilterExpanded": this.isFilterExpanded(),
|
|
4508
|
+
"refresh": this.refresh(),
|
|
4509
|
+
"fileName": this.fileName(),
|
|
4510
|
+
};
|
|
4511
|
+
console.log(message, inputs);
|
|
4512
|
+
}
|
|
4513
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAppsFilterBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4514
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: NettyAppsFilterBase, isStandalone: true, selector: "ntybase-netty-apps-base", inputs: { isFilterExpanded: { classPropertyName: "isFilterExpanded", publicName: "isFilterExpanded", isSignal: true, isRequired: false, transformFunction: null }, refresh: { classPropertyName: "refresh", publicName: "refresh", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isFilterExpanded: "isFilterExpandedChange", filteredRecords: "filteredRecords" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
4515
|
+
}
|
|
4516
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NettyAppsFilterBase, decorators: [{
|
|
4517
|
+
type: Component,
|
|
4518
|
+
args: [{ selector: 'ntybase-netty-apps-base', imports: [], template: `` }]
|
|
4519
|
+
}], ctorParameters: () => [], propDecorators: { isFilterExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFilterExpanded", required: false }] }, { type: i0.Output, args: ["isFilterExpandedChange"] }], filteredRecords: [{ type: i0.Output, args: ["filteredRecords"] }], refresh: [{ type: i0.Input, args: [{ isSignal: true, alias: "refresh", required: false }] }], fileName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileName", required: false }] }] } });
|
|
4274
4520
|
|
|
4275
4521
|
/*
|
|
4276
4522
|
* Public API Surface of ntybase
|
|
@@ -4280,5 +4526,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
4280
4526
|
* Generated bundle index. Do not edit.
|
|
4281
4527
|
*/
|
|
4282
4528
|
|
|
4283
|
-
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, NettyBaseApp, NettyHelper, NettyImageService, NettyMenuService, NtyLoadingComponent, NtyLoadingInterceptor, Ntybase, NtybaseModule, RangeDateTimeFilter, RangeNumberFilter, RangeStringFilter, UrlHelperService, ntyAuthenticationInterceptor };
|
|
4529
|
+
export { AlertService, AuthenticationGuard, AuthenticationInterceptor, AuthenticationService, ButtonRenderer, CanDeactivateGuard, CheckboxRenderer, CommonService, ConfirmDialog, CredentialsService, CurrentUserPreference, ENVIRONMENT_CONFIG, EnvironmentInfo, EnvironmentInfoService, ExcelImportBase, ForgotPassword, Login, LoginDto, MFACodeDto, MfaLogin, NettyAgGridBase, NettyAgGridListBase, NettyAgGridListFilterBase, NettyAgGridLogBase, NettyAgGridSaveBase, NettyAgGridService, NettyAppsBase, NettyAppsFilterBase, NettyBaseApp, NettyHelper, NettyImageService, NettyMenuService, NtyLoadingComponent, NtyLoadingInterceptor, Ntybase, NtybaseModule, RangeDateTimeFilter, RangeNumberFilter, RangeStringFilter, UrlHelperService, ntyAuthenticationInterceptor };
|
|
4284
4530
|
//# sourceMappingURL=nettyapps-ntybase.mjs.map
|