@nettyapps/ntybase 21.1.29 → 21.1.31
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.
|
@@ -326,11 +326,11 @@ class ErrorAlert {
|
|
|
326
326
|
dialogRef = inject((MatDialogRef));
|
|
327
327
|
data = inject(MAT_DIALOG_DATA);
|
|
328
328
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ErrorAlert, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
329
|
-
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
|
|
329
|
+
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" }] });
|
|
330
330
|
}
|
|
331
331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ErrorAlert, decorators: [{
|
|
332
332
|
type: Component,
|
|
333
|
-
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
|
|
333
|
+
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"] }]
|
|
334
334
|
}] });
|
|
335
335
|
|
|
336
336
|
// alert.service.ts
|
|
@@ -377,53 +377,42 @@ class AlertService {
|
|
|
377
377
|
verticalPosition: 'bottom',
|
|
378
378
|
});
|
|
379
379
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
? actualError
|
|
395
|
-
: { message: this.getErrorMessage(actualError) };
|
|
380
|
+
/**
|
|
381
|
+
* Displays an error dialog with flexible parameters.
|
|
382
|
+
* Intelligently extracts meaningful C# error messages or falls back to a translation key.
|
|
383
|
+
* * Supported usages:
|
|
384
|
+
* - showError('@fallbackKey', err)
|
|
385
|
+
* - showError(err)
|
|
386
|
+
* - showError(err, '@fallbackKey')
|
|
387
|
+
* - showError('@fallbackKey')
|
|
388
|
+
*/
|
|
389
|
+
showError(arg1, arg2, customComponent = ErrorAlert, width = 'auto', height = 'auto') {
|
|
390
|
+
const isArg1Str = typeof arg1 === 'string';
|
|
391
|
+
const fallbackKey = isArg1Str ? arg1 : (typeof arg2 === 'string' ? arg2 : '');
|
|
392
|
+
const errorObj = isArg1Str ? arg2 : arg1;
|
|
393
|
+
// Open the Dialog
|
|
396
394
|
return new Promise((resolve) => {
|
|
397
|
-
|
|
398
|
-
width:
|
|
399
|
-
height: height,
|
|
400
|
-
maxWidth: '95vw',
|
|
395
|
+
this.dialog.open(customComponent, {
|
|
396
|
+
width, height, maxWidth: '95vw',
|
|
401
397
|
data: {
|
|
402
|
-
|
|
403
|
-
title: '@errorOccurred',
|
|
398
|
+
message: this.getErrorMessage(errorObj, fallbackKey),
|
|
399
|
+
title: this.translate.instant('@errorOccurred'),
|
|
404
400
|
},
|
|
405
|
-
});
|
|
406
|
-
dialogRef.afterClosed().subscribe(() => {
|
|
407
|
-
resolve();
|
|
408
|
-
});
|
|
401
|
+
}).afterClosed().subscribe(() => resolve());
|
|
409
402
|
});
|
|
410
403
|
}
|
|
411
|
-
getErrorMessage(
|
|
412
|
-
if (!
|
|
413
|
-
return '';
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
return error.error.message;
|
|
424
|
-
if (error.message)
|
|
425
|
-
return error.message;
|
|
426
|
-
return JSON.stringify(error);
|
|
404
|
+
getErrorMessage(errorObj, fallbackKey) {
|
|
405
|
+
if (!errorObj) {
|
|
406
|
+
return fallbackKey ? this.translate.instant(fallbackKey) : this.translate.instant('@errorOccurred');
|
|
407
|
+
}
|
|
408
|
+
const data = errorObj.error ?? errorObj;
|
|
409
|
+
const isStr = typeof data === 'string';
|
|
410
|
+
const backendMessage = isStr ? data : (data?.message || data?.details || JSON.stringify(data));
|
|
411
|
+
const isMeaningful = isStr ? !data.startsWith('<') : !!(data?.message || data?.details);
|
|
412
|
+
if (fallbackKey) {
|
|
413
|
+
return isMeaningful ? backendMessage : this.translate.instant(fallbackKey);
|
|
414
|
+
}
|
|
415
|
+
return backendMessage;
|
|
427
416
|
}
|
|
428
417
|
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 });
|
|
429
418
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: AlertService, providedIn: 'root' });
|