@abp/ng.theme.shared 8.1.0-rc.2 → 8.1.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/adapters/date-time.adapter.mjs +9 -7
- package/esm2022/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +35 -22
- package/esm2022/lib/components/internet-connection-status/internet-connection-status.component.mjs +28 -14
- package/esm2022/lib/constants/default-errors.mjs +13 -1
- package/esm2022/lib/constants/index.mjs +5 -0
- package/esm2022/lib/constants/scripts.mjs +2 -0
- package/esm2022/lib/directives/ngx-datatable-list.directive.mjs +53 -46
- package/esm2022/lib/handlers/error.handler.mjs +2 -2
- package/esm2022/lib/services/create-error-component.service.mjs +7 -8
- package/esm2022/lib/theme-shared.module.mjs +2 -7
- package/esm2022/lib/tokens/http-error.token.mjs +1 -11
- package/esm2022/public-api.mjs +2 -3
- package/fesm2022/abp-ng.theme.shared.mjs +214 -176
- package/fesm2022/abp-ng.theme.shared.mjs.map +1 -1
- package/lib/components/http-error-wrapper/http-error-wrapper.component.d.ts +8 -7
- package/lib/constants/default-errors.d.ts +12 -0
- package/lib/constants/index.d.ts +4 -0
- package/lib/constants/scripts.d.ts +2 -0
- package/lib/directives/ngx-datatable-list.directive.d.ts +18 -18
- package/lib/services/create-error-component.service.d.ts +2 -2
- package/lib/tokens/http-error.token.d.ts +0 -1
- package/package.json +2 -2
- package/public-api.d.ts +1 -2
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, ViewChild, InjectionToken, Inject, inject, ViewEncapsulation, Optional, ContentChild, Directive, HostListener, forwardRef, HostBinding, NgModule, Host, RendererFactory2,
|
|
2
|
+
import { Injectable, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, ViewChild, InjectionToken, Inject, inject, DestroyRef, createComponent, ViewEncapsulation, Optional, ContentChild, Directive, HostListener, forwardRef, HostBinding, NgModule, ChangeDetectorRef, Host, RendererFactory2, Injector, EnvironmentInjector, ApplicationRef, APP_INITIALIZER, LOCALE_ID } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
|
-
import { formatDate, DOCUMENT, CommonModule,
|
|
4
|
+
import { formatDate, DOCUMENT, CommonModule, DatePipe } from '@angular/common';
|
|
5
5
|
import * as i3 from '@ng-bootstrap/ng-bootstrap';
|
|
6
|
-
import { NgbDateAdapter, NgbTimeAdapter, NgbInputDatepickerConfig, NgbTypeaheadConfig, NgbDateParserFormatter, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap';
|
|
6
|
+
import { NgbDateAdapter, NgbTimeAdapter, NgbTooltip, NgbInputDatepickerConfig, NgbTypeaheadConfig, NgbDateParserFormatter, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap';
|
|
7
7
|
import { animation, style, animate, keyframes, trigger, state, transition, useAnimation, query } from '@angular/animations';
|
|
8
8
|
import * as i1$1 from '@angular/router';
|
|
9
|
-
import { ResolveEnd } from '@angular/router';
|
|
9
|
+
import { Router, ResolveEnd } from '@angular/router';
|
|
10
10
|
import * as i2 from '@abp/ng.core';
|
|
11
11
|
import { getRoutePath, SubscriptionService, PROJECTION_STRATEGY, uuid, AbstractNgModelComponent, InternetConnectionService, LocalizationModule, LocalizationService, getLocaleDirection, DomInsertionService, CONTENT_STRATEGY, InternalStore, RouterEvents, AuthService, SessionStateService, HttpErrorReporterService, RoutesService, TENANT_NOT_FOUND_BY_NAME, CoreModule, noop, ConfigStateService } from '@abp/ng.core';
|
|
12
12
|
import { startWith, map, debounceTime, filter, takeUntil, distinctUntilChanged, take, switchMap } from 'rxjs/operators';
|
|
13
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
13
14
|
import { fromEvent, Subscription, combineLatest, timer, ReplaySubject, Subject, of, from, Observable, EMPTY, BehaviorSubject } from 'rxjs';
|
|
14
15
|
import * as i2$1 from '@angular/forms';
|
|
15
16
|
import { NG_VALUE_ACCESSOR, FormsModule, Validators } from '@angular/forms';
|
|
16
17
|
import * as i1$2 from '@swimlane/ngx-datatable';
|
|
17
|
-
import { ColumnMode, NgxDatatableModule } from '@swimlane/ngx-datatable';
|
|
18
|
+
import { ColumnMode, DatatableComponent, NgxDatatableModule } from '@swimlane/ngx-datatable';
|
|
18
19
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
19
20
|
import { NgxValidateCoreModule, VALIDATION_BLUEPRINTS, VALIDATION_MAP_ERRORS_FN, defaultMapErrorsFn, VALIDATION_VALIDATE_ON_SUBMIT, normalizeDiacritics } from '@ngx-validate/core';
|
|
20
21
|
|
|
21
22
|
class DateTimeAdapter {
|
|
22
23
|
fromModel(value) {
|
|
23
|
-
if (!value)
|
|
24
|
+
if (!value) {
|
|
24
25
|
return null;
|
|
26
|
+
}
|
|
25
27
|
const date = new Date(value);
|
|
26
|
-
if (isNaN(date))
|
|
28
|
+
if (isNaN(date)) {
|
|
27
29
|
return null;
|
|
30
|
+
}
|
|
28
31
|
this.value = {
|
|
29
32
|
year: date.getFullYear(),
|
|
30
33
|
month: date.getMonth() + 1,
|
|
@@ -36,11 +39,11 @@ class DateTimeAdapter {
|
|
|
36
39
|
return this.value;
|
|
37
40
|
}
|
|
38
41
|
toModel(value) {
|
|
39
|
-
if (!value)
|
|
42
|
+
if (!value) {
|
|
40
43
|
return '';
|
|
44
|
+
}
|
|
41
45
|
const now = new Date();
|
|
42
46
|
const newValue = {
|
|
43
|
-
// TODO look for strict mode errors
|
|
44
47
|
year: now.getUTCFullYear(),
|
|
45
48
|
month: now.getMonth() + 1,
|
|
46
49
|
day: now.getDate(),
|
|
@@ -50,8 +53,8 @@ class DateTimeAdapter {
|
|
|
50
53
|
...this.value,
|
|
51
54
|
...value,
|
|
52
55
|
};
|
|
53
|
-
const date = new Date(newValue.year, newValue.month - 1, newValue.day, newValue.hour, newValue.minute, newValue.second);
|
|
54
|
-
return
|
|
56
|
+
const date = new Date(Date.UTC(newValue.year, newValue.month - 1, newValue.day, newValue.hour, newValue.minute, newValue.second));
|
|
57
|
+
return date.toISOString().replace('Z', '');
|
|
55
58
|
}
|
|
56
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DateTimeAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
60
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DateTimeAdapter }); }
|
|
@@ -466,13 +469,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
466
469
|
}] }] });
|
|
467
470
|
|
|
468
471
|
class HttpErrorWrapperComponent {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
}
|
|
472
|
-
constructor(subscription) {
|
|
473
|
-
this.subscription = subscription;
|
|
472
|
+
constructor() {
|
|
473
|
+
this.destroyRef = inject(DestroyRef);
|
|
474
474
|
this.document = inject(DOCUMENT);
|
|
475
475
|
this.window = this.document.defaultView;
|
|
476
|
+
this.router = inject(Router);
|
|
476
477
|
this.status = 0;
|
|
477
478
|
this.title = 'Oops!';
|
|
478
479
|
this.details = 'Sorry, an error has occured.';
|
|
@@ -480,16 +481,27 @@ class HttpErrorWrapperComponent {
|
|
|
480
481
|
this.hideCloseIcon = false;
|
|
481
482
|
this.isHomeShow = true;
|
|
482
483
|
}
|
|
484
|
+
get statusText() {
|
|
485
|
+
return this.status ? `[${this.status}]` : '';
|
|
486
|
+
}
|
|
483
487
|
ngOnInit() {
|
|
484
|
-
this.
|
|
485
|
-
|
|
488
|
+
const computedStyle = this.window.getComputedStyle(this.document.body);
|
|
489
|
+
const backgroundColor = computedStyle?.getPropertyValue('background-color');
|
|
490
|
+
this.backgroundColor = backgroundColor || '#fff';
|
|
486
491
|
}
|
|
487
492
|
ngAfterViewInit() {
|
|
488
493
|
if (this.customComponent) {
|
|
489
|
-
const customComponentRef = this.
|
|
490
|
-
|
|
491
|
-
|
|
494
|
+
const customComponentRef = createComponent(this.customComponent, {
|
|
495
|
+
environmentInjector: this.environmentInjector,
|
|
496
|
+
});
|
|
492
497
|
customComponentRef.instance.errorStatus = this.status;
|
|
498
|
+
//In our custom "HttpErrorComponent", we have a "status" property.
|
|
499
|
+
//We used to have "errorStatus", but it wasn't signal type. "status" variable is signal type.
|
|
500
|
+
//I've checked because of backward compatibility. Developers might have their own custom HttpErrorComponent.
|
|
501
|
+
//We need to deprecated and remove "errorStatus" in the future.
|
|
502
|
+
if (customComponentRef.instance.status) {
|
|
503
|
+
customComponentRef.instance.status.set(this.status);
|
|
504
|
+
}
|
|
493
505
|
customComponentRef.instance.destroy$ = this.destroy$;
|
|
494
506
|
this.appRef.attachView(customComponentRef.hostView);
|
|
495
507
|
if (this.containerRef) {
|
|
@@ -497,23 +509,28 @@ class HttpErrorWrapperComponent {
|
|
|
497
509
|
}
|
|
498
510
|
customComponentRef.changeDetectorRef.detectChanges();
|
|
499
511
|
}
|
|
500
|
-
|
|
501
|
-
|
|
512
|
+
fromEvent(this.document, 'keyup')
|
|
513
|
+
.pipe(debounceTime(150), filter((key) => key && key.key === 'Escape'), takeUntilDestroyed(this.destroyRef))
|
|
514
|
+
.subscribe(() => this.destroy());
|
|
502
515
|
}
|
|
503
|
-
|
|
516
|
+
goHome() {
|
|
517
|
+
this.router.navigateByUrl('/', { onSameUrlNavigation: 'reload' });
|
|
504
518
|
this.destroy();
|
|
505
519
|
}
|
|
506
520
|
destroy() {
|
|
507
521
|
this.destroy$.next();
|
|
508
522
|
this.destroy$.complete();
|
|
509
523
|
}
|
|
510
|
-
|
|
511
|
-
|
|
524
|
+
ngOnDestroy() {
|
|
525
|
+
this.destroy();
|
|
526
|
+
}
|
|
527
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: HttpErrorWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
528
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: HttpErrorWrapperComponent, selector: "abp-http-error-wrapper", viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n @if (!hideCloseIcon) {\r\n <button id=\"abp-close-button\" type=\"button\" class=\"btn-close me-2\" (click)=\"destroy()\"></button>\r\n }\r\n\r\n @if (!customComponent) {\r\n <div class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n @if (isHomeShow) {\r\n <a (click)=\"goHome()\" class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
512
529
|
}
|
|
513
530
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: HttpErrorWrapperComponent, decorators: [{
|
|
514
531
|
type: Component,
|
|
515
|
-
args: [{ selector: 'abp-http-error-wrapper',
|
|
516
|
-
}],
|
|
532
|
+
args: [{ selector: 'abp-http-error-wrapper', template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n @if (!hideCloseIcon) {\r\n <button id=\"abp-close-button\" type=\"button\" class=\"btn-close me-2\" (click)=\"destroy()\"></button>\r\n }\r\n\r\n @if (!customComponent) {\r\n <div class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n @if (isHomeShow) {\r\n <a (click)=\"goHome()\" class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"] }]
|
|
533
|
+
}], propDecorators: { containerRef: [{
|
|
517
534
|
type: ViewChild,
|
|
518
535
|
args: ['container', { static: false }]
|
|
519
536
|
}] } });
|
|
@@ -1452,96 +1469,37 @@ class InternetConnectionStatusComponent {
|
|
|
1452
1469
|
this.isOnline = this.internetConnectionService.networkStatus;
|
|
1453
1470
|
}
|
|
1454
1471
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: InternetConnectionStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1455
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1456
|
-
|
|
1457
|
-
<
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1472
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: InternetConnectionStatusComponent, isStandalone: true, selector: "abp-internet-status", ngImport: i0, template: `
|
|
1473
|
+
@if (!isOnline()) {
|
|
1474
|
+
<div class="status-icon">
|
|
1475
|
+
<i
|
|
1476
|
+
ngbTooltip="{{ 'AbpUi::InternetConnectionInfo' | abpLocalization }}"
|
|
1477
|
+
container="body"
|
|
1478
|
+
placement="left-top"
|
|
1479
|
+
class="fa fa-wifi text-blinking blink"
|
|
1480
|
+
>
|
|
1481
|
+
</i>
|
|
1482
|
+
</div>
|
|
1483
|
+
}
|
|
1484
|
+
`, isInline: true, styles: [".blink{animation:blinker .9s cubic-bezier(.5,0,1,1) infinite alternate}@keyframes blinker{0%{color:#c1c1c1}70%{color:#fa2379}to{color:#fa2379}}.text-blinking{font-size:30px}.status-icon{position:fixed;z-index:999999;top:50%;left:50%;width:30px;text-align:center;margin-left:-15px;margin-top:-15px;translate:transform(-50%,-50%)}\n"], dependencies: [{ kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i2.LocalizationPipe, name: "abpLocalization" }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] }); }
|
|
1461
1485
|
}
|
|
1462
1486
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: InternetConnectionStatusComponent, decorators: [{
|
|
1463
1487
|
type: Component,
|
|
1464
|
-
args: [{ selector: 'abp-internet-status', standalone: true, imports: [
|
|
1465
|
-
|
|
1466
|
-
<
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1488
|
+
args: [{ selector: 'abp-internet-status', standalone: true, imports: [LocalizationModule, NgbTooltip], template: `
|
|
1489
|
+
@if (!isOnline()) {
|
|
1490
|
+
<div class="status-icon">
|
|
1491
|
+
<i
|
|
1492
|
+
ngbTooltip="{{ 'AbpUi::InternetConnectionInfo' | abpLocalization }}"
|
|
1493
|
+
container="body"
|
|
1494
|
+
placement="left-top"
|
|
1495
|
+
class="fa fa-wifi text-blinking blink"
|
|
1496
|
+
>
|
|
1497
|
+
</i>
|
|
1498
|
+
</div>
|
|
1499
|
+
}
|
|
1500
|
+
`, styles: [".blink{animation:blinker .9s cubic-bezier(.5,0,1,1) infinite alternate}@keyframes blinker{0%{color:#c1c1c1}70%{color:#fa2379}to{color:#fa2379}}.text-blinking{font-size:30px}.status-icon{position:fixed;z-index:999999;top:50%;left:50%;width:30px;text-align:center;margin-left:-15px;margin-top:-15px;translate:transform(-50%,-50%)}\n"] }]
|
|
1470
1501
|
}] });
|
|
1471
1502
|
|
|
1472
|
-
const DEFAULT_VALIDATION_BLUEPRINTS = {
|
|
1473
|
-
creditCard: 'AbpValidation::ThisFieldIsNotAValidCreditCardNumber.',
|
|
1474
|
-
email: 'AbpValidation::ThisFieldIsNotAValidEmailAddress.',
|
|
1475
|
-
invalid: 'AbpValidation::ThisFieldIsNotValid.',
|
|
1476
|
-
max: 'AbpValidation::ThisFieldMustBeLessOrEqual{0}[{{ max }}]',
|
|
1477
|
-
maxlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}[{{ requiredLength }}]',
|
|
1478
|
-
min: 'AbpValidation::ThisFieldMustBeGreaterThanOrEqual{0}[{{ min }}]',
|
|
1479
|
-
minlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]',
|
|
1480
|
-
ngbDate: 'AbpValidation::ThisFieldIsNotValid.',
|
|
1481
|
-
passwordMismatch: 'AbpIdentity::Volo.Abp.Identity:PasswordConfirmationFailed',
|
|
1482
|
-
range: 'AbpValidation::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]',
|
|
1483
|
-
required: 'AbpValidation::ThisFieldIsRequired.',
|
|
1484
|
-
url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl',
|
|
1485
|
-
passwordRequiresLower: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresLower',
|
|
1486
|
-
passwordRequiresUpper: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresUpper',
|
|
1487
|
-
passwordRequiresDigit: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresDigit',
|
|
1488
|
-
passwordRequiresNonAlphanumeric: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresNonAlphanumeric',
|
|
1489
|
-
usernamePattern: 'AbpIdentity::Volo.Abp.Identity:InvalidUserName[{{ actualValue }}]',
|
|
1490
|
-
customMessage: '{{ customMessage }}'
|
|
1491
|
-
};
|
|
1492
|
-
|
|
1493
|
-
const DEFAULT_ERROR_MESSAGES = {
|
|
1494
|
-
defaultError: {
|
|
1495
|
-
title: 'An error has occurred!',
|
|
1496
|
-
details: 'Error detail not sent by server.',
|
|
1497
|
-
},
|
|
1498
|
-
defaultError401: {
|
|
1499
|
-
title: 'You are not authenticated!',
|
|
1500
|
-
details: 'You should be authenticated (sign in) in order to perform this operation.',
|
|
1501
|
-
},
|
|
1502
|
-
defaultError403: {
|
|
1503
|
-
title: 'You are not authorized!',
|
|
1504
|
-
details: 'You are not allowed to perform this operation.',
|
|
1505
|
-
},
|
|
1506
|
-
defaultError404: {
|
|
1507
|
-
title: 'Resource not found!',
|
|
1508
|
-
details: 'The resource requested could not found on the server.',
|
|
1509
|
-
},
|
|
1510
|
-
defaultError500: {
|
|
1511
|
-
title: 'Internal server error',
|
|
1512
|
-
details: 'Error detail not sent by server.',
|
|
1513
|
-
},
|
|
1514
|
-
};
|
|
1515
|
-
const DEFAULT_ERROR_LOCALIZATIONS = {
|
|
1516
|
-
defaultError: {
|
|
1517
|
-
title: 'AbpUi::DefaultErrorMessage',
|
|
1518
|
-
details: 'AbpUi::DefaultErrorMessageDetail',
|
|
1519
|
-
},
|
|
1520
|
-
defaultError401: {
|
|
1521
|
-
title: 'AbpUi::DefaultErrorMessage401',
|
|
1522
|
-
details: 'AbpUi::DefaultErrorMessage401Detail',
|
|
1523
|
-
},
|
|
1524
|
-
defaultError403: {
|
|
1525
|
-
title: 'AbpUi::DefaultErrorMessage403',
|
|
1526
|
-
details: 'AbpUi::DefaultErrorMessage403Detail',
|
|
1527
|
-
},
|
|
1528
|
-
defaultError404: {
|
|
1529
|
-
title: 'AbpUi::DefaultErrorMessage404',
|
|
1530
|
-
details: 'AbpUi::DefaultErrorMessage404Detail',
|
|
1531
|
-
},
|
|
1532
|
-
defaultError500: {
|
|
1533
|
-
title: 'AbpUi::500Message',
|
|
1534
|
-
details: 'AbpUi::DefaultErrorMessage',
|
|
1535
|
-
},
|
|
1536
|
-
};
|
|
1537
|
-
const CUSTOM_HTTP_ERROR_HANDLER_PRIORITY = Object.freeze({
|
|
1538
|
-
veryLow: -99,
|
|
1539
|
-
low: -9,
|
|
1540
|
-
normal: 0,
|
|
1541
|
-
high: 9,
|
|
1542
|
-
veryHigh: 99,
|
|
1543
|
-
});
|
|
1544
|
-
|
|
1545
1503
|
class EllipsisDirective {
|
|
1546
1504
|
get inlineClass() {
|
|
1547
1505
|
return this.enabled && this.width;
|
|
@@ -1753,15 +1711,29 @@ const defaultNgxDatatableMessages = {
|
|
|
1753
1711
|
const NGX_DATATABLE_MESSAGES = new InjectionToken('NGX_DATATABLE_MESSAGES');
|
|
1754
1712
|
|
|
1755
1713
|
class NgxDatatableListDirective {
|
|
1756
|
-
constructor(
|
|
1757
|
-
this.table =
|
|
1758
|
-
this.cdRef =
|
|
1759
|
-
this.
|
|
1760
|
-
this.
|
|
1761
|
-
this.
|
|
1762
|
-
this.querySubscription = new Subscription();
|
|
1714
|
+
constructor() {
|
|
1715
|
+
this.table = inject(DatatableComponent);
|
|
1716
|
+
this.cdRef = inject(ChangeDetectorRef);
|
|
1717
|
+
this.destroyRef = inject(DestroyRef);
|
|
1718
|
+
this.localizationService = inject(LocalizationService);
|
|
1719
|
+
this.ngxDatatableMessages = inject(NGX_DATATABLE_MESSAGES, { optional: true });
|
|
1763
1720
|
this.setInitialValues();
|
|
1764
1721
|
}
|
|
1722
|
+
ngDoCheck() {
|
|
1723
|
+
this.refreshPageIfDataExist();
|
|
1724
|
+
}
|
|
1725
|
+
ngOnInit() {
|
|
1726
|
+
this.subscribeToPage();
|
|
1727
|
+
this.subscribeToSort();
|
|
1728
|
+
}
|
|
1729
|
+
ngOnChanges({ list }) {
|
|
1730
|
+
this.subscribeToQuery();
|
|
1731
|
+
if (!list.firstChange)
|
|
1732
|
+
return;
|
|
1733
|
+
const { maxResultCount, page } = list.currentValue;
|
|
1734
|
+
this.table.limit = maxResultCount;
|
|
1735
|
+
this.table.offset = page;
|
|
1736
|
+
}
|
|
1765
1737
|
setInitialValues() {
|
|
1766
1738
|
this.table.externalPaging = true;
|
|
1767
1739
|
this.table.externalSorting = true;
|
|
@@ -1772,15 +1744,8 @@ class NgxDatatableListDirective {
|
|
|
1772
1744
|
selectedMessage: this.localizationService.instant(selectedMessage),
|
|
1773
1745
|
};
|
|
1774
1746
|
}
|
|
1775
|
-
subscribeToPage() {
|
|
1776
|
-
const sub = this.table.page.subscribe(({ offset }) => {
|
|
1777
|
-
this.list.page = offset;
|
|
1778
|
-
this.table.offset = offset;
|
|
1779
|
-
});
|
|
1780
|
-
this.subscription.add(sub);
|
|
1781
|
-
}
|
|
1782
1747
|
subscribeToSort() {
|
|
1783
|
-
|
|
1748
|
+
this.table.sort.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ sorts: [{ prop, dir }] }) => {
|
|
1784
1749
|
if (prop === this.list.sortKey && this.list.sortOrder === 'desc') {
|
|
1785
1750
|
this.list.sortKey = '';
|
|
1786
1751
|
this.list.sortOrder = '';
|
|
@@ -1792,34 +1757,41 @@ class NgxDatatableListDirective {
|
|
|
1792
1757
|
this.list.sortOrder = dir;
|
|
1793
1758
|
}
|
|
1794
1759
|
});
|
|
1795
|
-
|
|
1760
|
+
}
|
|
1761
|
+
subscribeToPage() {
|
|
1762
|
+
this.table.page.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ offset }) => {
|
|
1763
|
+
this.setTablePage(offset);
|
|
1764
|
+
});
|
|
1796
1765
|
}
|
|
1797
1766
|
subscribeToQuery() {
|
|
1798
|
-
|
|
1799
|
-
this.querySubscription.unsubscribe();
|
|
1800
|
-
this.querySubscription = this.list.query$.subscribe(() => {
|
|
1767
|
+
this.list.query$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
1801
1768
|
const offset = this.list.page;
|
|
1802
1769
|
if (this.table.offset !== offset)
|
|
1803
1770
|
this.table.offset = offset;
|
|
1804
1771
|
});
|
|
1805
1772
|
}
|
|
1806
|
-
|
|
1807
|
-
this.
|
|
1808
|
-
|
|
1809
|
-
return;
|
|
1810
|
-
const { maxResultCount, page } = list.currentValue;
|
|
1811
|
-
this.table.limit = maxResultCount;
|
|
1812
|
-
this.table.offset = page;
|
|
1813
|
-
}
|
|
1814
|
-
ngOnDestroy() {
|
|
1815
|
-
this.subscription.unsubscribe();
|
|
1816
|
-
this.querySubscription.unsubscribe();
|
|
1773
|
+
setTablePage(pageNum) {
|
|
1774
|
+
this.list.page = pageNum;
|
|
1775
|
+
this.table.offset = pageNum;
|
|
1817
1776
|
}
|
|
1818
|
-
|
|
1819
|
-
this.
|
|
1820
|
-
|
|
1777
|
+
refreshPageIfDataExist() {
|
|
1778
|
+
if (this.table.rows?.length < 1 && this.table.count > 0) {
|
|
1779
|
+
let maxPage = Math.floor(Number(this.table.count / this.list.maxResultCount));
|
|
1780
|
+
if (this.table.count < this.list.maxResultCount) {
|
|
1781
|
+
this.setTablePage(0);
|
|
1782
|
+
return;
|
|
1783
|
+
}
|
|
1784
|
+
if (this.table.count % this.list.maxResultCount === 0) {
|
|
1785
|
+
maxPage -= 1;
|
|
1786
|
+
}
|
|
1787
|
+
if (this.list.page < maxPage) {
|
|
1788
|
+
this.setTablePage(this.list.page);
|
|
1789
|
+
return;
|
|
1790
|
+
}
|
|
1791
|
+
this.setTablePage(maxPage);
|
|
1792
|
+
}
|
|
1821
1793
|
}
|
|
1822
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgxDatatableListDirective, deps: [
|
|
1794
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgxDatatableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1823
1795
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: NgxDatatableListDirective, isStandalone: true, selector: "ngx-datatable[list]", inputs: { list: "list" }, exportAs: ["ngxDatatableList"], usesOnChanges: true, ngImport: i0 }); }
|
|
1824
1796
|
}
|
|
1825
1797
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgxDatatableListDirective, decorators: [{
|
|
@@ -1830,12 +1802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
1830
1802
|
standalone: true,
|
|
1831
1803
|
exportAs: 'ngxDatatableList',
|
|
1832
1804
|
}]
|
|
1833
|
-
}], ctorParameters: () => [
|
|
1834
|
-
type: Optional
|
|
1835
|
-
}, {
|
|
1836
|
-
type: Inject,
|
|
1837
|
-
args: [NGX_DATATABLE_MESSAGES]
|
|
1838
|
-
}] }], propDecorators: { list: [{
|
|
1805
|
+
}], ctorParameters: () => [], propDecorators: { list: [{
|
|
1839
1806
|
type: Input
|
|
1840
1807
|
}] } });
|
|
1841
1808
|
|
|
@@ -1957,16 +1924,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
1957
1924
|
type: Injectable
|
|
1958
1925
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
1959
1926
|
|
|
1960
|
-
function httpErrorConfigFactory(config = {}) {
|
|
1961
|
-
if (config.errorScreen && config.errorScreen.component && !config.errorScreen.forWhichErrors) {
|
|
1962
|
-
config.errorScreen.forWhichErrors = [401, 403, 404, 500];
|
|
1963
|
-
}
|
|
1964
|
-
return {
|
|
1965
|
-
skipHandledErrorCodes: [],
|
|
1966
|
-
errorScreen: {},
|
|
1967
|
-
...config,
|
|
1968
|
-
};
|
|
1969
|
-
}
|
|
1970
1927
|
const HTTP_ERROR_CONFIG = new InjectionToken('HTTP_ERROR_CONFIG');
|
|
1971
1928
|
/**
|
|
1972
1929
|
@deprecated use **`CUSTOM_ERROR_HANDLERS`** injection token instead of this, see more info https://docs.abp.io/en/abp/latest/UI/Angular/HTTP-Requests
|
|
@@ -1974,6 +1931,70 @@ const HTTP_ERROR_CONFIG = new InjectionToken('HTTP_ERROR_CONFIG');
|
|
|
1974
1931
|
const HTTP_ERROR_HANDLER = new InjectionToken('HTTP_ERROR_HANDLER');
|
|
1975
1932
|
const CUSTOM_ERROR_HANDLERS = new InjectionToken('CUSTOM_ERROR_HANDLERS');
|
|
1976
1933
|
|
|
1934
|
+
const DEFAULT_ERROR_MESSAGES = {
|
|
1935
|
+
defaultError: {
|
|
1936
|
+
title: 'An error has occurred!',
|
|
1937
|
+
details: 'Error detail not sent by server.',
|
|
1938
|
+
},
|
|
1939
|
+
defaultError401: {
|
|
1940
|
+
title: 'You are not authenticated!',
|
|
1941
|
+
details: 'You should be authenticated (sign in) in order to perform this operation.',
|
|
1942
|
+
},
|
|
1943
|
+
defaultError403: {
|
|
1944
|
+
title: 'You are not authorized!',
|
|
1945
|
+
details: 'You are not allowed to perform this operation.',
|
|
1946
|
+
},
|
|
1947
|
+
defaultError404: {
|
|
1948
|
+
title: 'Resource not found!',
|
|
1949
|
+
details: 'The resource requested could not found on the server.',
|
|
1950
|
+
},
|
|
1951
|
+
defaultError500: {
|
|
1952
|
+
title: 'Internal server error',
|
|
1953
|
+
details: 'Error detail not sent by server.',
|
|
1954
|
+
},
|
|
1955
|
+
};
|
|
1956
|
+
const DEFAULT_ERROR_LOCALIZATIONS = {
|
|
1957
|
+
defaultError: {
|
|
1958
|
+
title: 'AbpUi::DefaultErrorMessage',
|
|
1959
|
+
details: 'AbpUi::DefaultErrorMessageDetail',
|
|
1960
|
+
},
|
|
1961
|
+
defaultError401: {
|
|
1962
|
+
title: 'AbpUi::DefaultErrorMessage401',
|
|
1963
|
+
details: 'AbpUi::DefaultErrorMessage401Detail',
|
|
1964
|
+
},
|
|
1965
|
+
defaultError403: {
|
|
1966
|
+
title: 'AbpUi::DefaultErrorMessage403',
|
|
1967
|
+
details: 'AbpUi::DefaultErrorMessage403Detail',
|
|
1968
|
+
},
|
|
1969
|
+
defaultError404: {
|
|
1970
|
+
title: 'AbpUi::DefaultErrorMessage404',
|
|
1971
|
+
details: 'AbpUi::DefaultErrorMessage404Detail',
|
|
1972
|
+
},
|
|
1973
|
+
defaultError500: {
|
|
1974
|
+
title: 'AbpUi::500Message',
|
|
1975
|
+
details: 'AbpUi::DefaultErrorMessage',
|
|
1976
|
+
},
|
|
1977
|
+
};
|
|
1978
|
+
const CUSTOM_HTTP_ERROR_HANDLER_PRIORITY = Object.freeze({
|
|
1979
|
+
veryLow: -99,
|
|
1980
|
+
low: -9,
|
|
1981
|
+
normal: 0,
|
|
1982
|
+
high: 9,
|
|
1983
|
+
veryHigh: 99,
|
|
1984
|
+
});
|
|
1985
|
+
const HTTP_ERROR_STATUS = {
|
|
1986
|
+
'401': 'AbpUi::401Message',
|
|
1987
|
+
'403': 'AbpUi::403Message',
|
|
1988
|
+
'404': 'AbpUi::404Message',
|
|
1989
|
+
'500': 'AbpUi::500Message',
|
|
1990
|
+
};
|
|
1991
|
+
const HTTP_ERROR_DETAIL = {
|
|
1992
|
+
'401': 'AbpUi::DefaultErrorMessage401Detail',
|
|
1993
|
+
'403': 'AbpUi::DefaultErrorMessage403Detail',
|
|
1994
|
+
'404': 'AbpUi::DefaultErrorMessage404Detail',
|
|
1995
|
+
'500': 'AbpUi::DefaultErrorMessage',
|
|
1996
|
+
};
|
|
1997
|
+
|
|
1977
1998
|
var styles = `
|
|
1978
1999
|
.is-invalid .form-control {
|
|
1979
2000
|
border-color: #dc3545;
|
|
@@ -2379,9 +2400,9 @@ class CreateErrorComponentService {
|
|
|
2379
2400
|
constructor() {
|
|
2380
2401
|
this.document = inject(DOCUMENT);
|
|
2381
2402
|
this.rendererFactory = inject(RendererFactory2);
|
|
2382
|
-
this.cfRes = inject(ComponentFactoryResolver);
|
|
2383
2403
|
this.routerEvents = inject(RouterEvents);
|
|
2384
2404
|
this.injector = inject(Injector);
|
|
2405
|
+
this.envInjector = inject(EnvironmentInjector);
|
|
2385
2406
|
this.httpErrorConfig = inject(HTTP_ERROR_CONFIG);
|
|
2386
2407
|
this.componentRef = null;
|
|
2387
2408
|
this.listenToRouterDataResolved();
|
|
@@ -2412,9 +2433,9 @@ class CreateErrorComponentService {
|
|
|
2412
2433
|
const renderer = this.rendererFactory.createRenderer(null, null);
|
|
2413
2434
|
const hostElement = this.getErrorHostElement();
|
|
2414
2435
|
const host = renderer.selectRootElement(hostElement, true);
|
|
2415
|
-
this.componentRef =
|
|
2416
|
-
.
|
|
2417
|
-
|
|
2436
|
+
this.componentRef = createComponent(HttpErrorWrapperComponent, {
|
|
2437
|
+
environmentInjector: this.envInjector,
|
|
2438
|
+
});
|
|
2418
2439
|
for (const key in instance) {
|
|
2419
2440
|
/* istanbul ignore else */
|
|
2420
2441
|
if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, key)) {
|
|
@@ -2424,9 +2445,8 @@ class CreateErrorComponentService {
|
|
|
2424
2445
|
this.componentRef.instance.hideCloseIcon = this.isCloseIconHidden();
|
|
2425
2446
|
const appRef = this.injector.get(ApplicationRef);
|
|
2426
2447
|
if (this.canCreateCustomError(instance.status)) {
|
|
2427
|
-
this.componentRef.instance.cfRes = this.cfRes;
|
|
2428
2448
|
this.componentRef.instance.appRef = appRef;
|
|
2429
|
-
this.componentRef.instance.
|
|
2449
|
+
this.componentRef.instance.environmentInjector = this.envInjector;
|
|
2430
2450
|
this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen?.component;
|
|
2431
2451
|
}
|
|
2432
2452
|
appRef.attachView(this.componentRef.hostView);
|
|
@@ -2697,7 +2717,7 @@ class ErrorHandler {
|
|
|
2697
2717
|
this.filterRestErrors = ({ status }) => {
|
|
2698
2718
|
if (typeof status !== 'number')
|
|
2699
2719
|
return false;
|
|
2700
|
-
if (!this.httpErrorConfig
|
|
2720
|
+
if (!this.httpErrorConfig?.skipHandledErrorCodes) {
|
|
2701
2721
|
return true;
|
|
2702
2722
|
}
|
|
2703
2723
|
return this.httpErrorConfig.skipHandledErrorCodes?.findIndex(code => code === status) < 0;
|
|
@@ -2820,6 +2840,27 @@ const DEFAULT_HANDLERS_PROVIDERS = [
|
|
|
2820
2840
|
},
|
|
2821
2841
|
];
|
|
2822
2842
|
|
|
2843
|
+
const DEFAULT_VALIDATION_BLUEPRINTS = {
|
|
2844
|
+
creditCard: 'AbpValidation::ThisFieldIsNotAValidCreditCardNumber.',
|
|
2845
|
+
email: 'AbpValidation::ThisFieldIsNotAValidEmailAddress.',
|
|
2846
|
+
invalid: 'AbpValidation::ThisFieldIsNotValid.',
|
|
2847
|
+
max: 'AbpValidation::ThisFieldMustBeLessOrEqual{0}[{{ max }}]',
|
|
2848
|
+
maxlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}[{{ requiredLength }}]',
|
|
2849
|
+
min: 'AbpValidation::ThisFieldMustBeGreaterThanOrEqual{0}[{{ min }}]',
|
|
2850
|
+
minlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]',
|
|
2851
|
+
ngbDate: 'AbpValidation::ThisFieldIsNotValid.',
|
|
2852
|
+
passwordMismatch: 'AbpIdentity::Volo.Abp.Identity:PasswordConfirmationFailed',
|
|
2853
|
+
range: 'AbpValidation::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]',
|
|
2854
|
+
required: 'AbpValidation::ThisFieldIsRequired.',
|
|
2855
|
+
url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl',
|
|
2856
|
+
passwordRequiresLower: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresLower',
|
|
2857
|
+
passwordRequiresUpper: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresUpper',
|
|
2858
|
+
passwordRequiresDigit: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresDigit',
|
|
2859
|
+
passwordRequiresNonAlphanumeric: 'AbpIdentity::Volo.Abp.Identity:PasswordRequiresNonAlphanumeric',
|
|
2860
|
+
usernamePattern: 'AbpIdentity::Volo.Abp.Identity:InvalidUserName[{{ actualValue }}]',
|
|
2861
|
+
customMessage: '{{ customMessage }}'
|
|
2862
|
+
};
|
|
2863
|
+
|
|
2823
2864
|
function isNumber(value) {
|
|
2824
2865
|
return !isNaN(toInteger(value));
|
|
2825
2866
|
}
|
|
@@ -2988,11 +3029,6 @@ class ThemeSharedModule {
|
|
|
2988
3029
|
useFactory: noop,
|
|
2989
3030
|
},
|
|
2990
3031
|
{ provide: HTTP_ERROR_CONFIG, useValue: httpErrorConfig },
|
|
2991
|
-
{
|
|
2992
|
-
provide: 'HTTP_ERROR_CONFIG',
|
|
2993
|
-
useFactory: httpErrorConfigFactory,
|
|
2994
|
-
deps: [HTTP_ERROR_CONFIG],
|
|
2995
|
-
},
|
|
2996
3032
|
{ provide: NgbDateParserFormatter, useClass: DateParserFormatter },
|
|
2997
3033
|
NG_BOOTSTRAP_CONFIG_PROVIDERS,
|
|
2998
3034
|
{
|
|
@@ -3100,6 +3136,8 @@ function validatePassword(shouldContain) {
|
|
|
3100
3136
|
};
|
|
3101
3137
|
}
|
|
3102
3138
|
|
|
3139
|
+
var scripts = '';
|
|
3140
|
+
|
|
3103
3141
|
/*
|
|
3104
3142
|
* Public API Surface of theme-shared
|
|
3105
3143
|
*/
|
|
@@ -3108,5 +3146,5 @@ function validatePassword(shouldContain) {
|
|
|
3108
3146
|
* Generated bundle index. Do not edit.
|
|
3109
3147
|
*/
|
|
3110
3148
|
|
|
3111
|
-
export { AbpFormatErrorHandlerService, AbpVisibleDirective, BaseThemeSharedModule, BreadcrumbComponent, BreadcrumbItemsComponent, ButtonComponent, CUSTOM_ERROR_HANDLERS, CUSTOM_HTTP_ERROR_HANDLER_PRIORITY, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardHeaderDirective, CardImgTopDirective, CardModule, CardSubtitleDirective, CardTitleDirective, Confirmation, ConfirmationComponent, ConfirmationService, CreateErrorComponentService, DEFAULT_ERROR_LOCALIZATIONS, DEFAULT_ERROR_MESSAGES, DEFAULT_HANDLERS_PROVIDERS, DEFAULT_VALIDATION_BLUEPRINTS, DateAdapter, DateParserFormatter, DateTimeAdapter, DisabledDirective, DocumentDirHandlerService, EllipsisDirective, ErrorHandler, FormCheckboxComponent, FormInputComponent, HTTP_ERROR_CONFIG, HTTP_ERROR_HANDLER, HttpErrorWrapperComponent, InternetConnectionStatusComponent, LoaderBarComponent, LoadingComponent, LoadingDirective, ModalCloseDirective, ModalComponent, ModalRefService, NGX_DATATABLE_MESSAGES, NG_BOOTSTRAP_CONFIG_PROVIDERS, NavItem, NavItemsService, NgxDatatableDefaultDirective, NgxDatatableListDirective, PageAlertService, PasswordComponent, RouterErrorHandlerService, SUPPRESS_UNSAVED_CHANGES_WARNING, StatusCodeErrorHandlerService, THEME_SHARED_APPEND_CONTENT, THEME_SHARED_ROUTE_PROVIDERS, TenantResolveErrorHandlerService, ThemeSharedModule, TimeAdapter, ToastComponent, ToastContainerComponent, ToasterService, UnknownStatusCodeErrorHandlerService, UserMenu, UserMenuService, bounceIn, collapse, collapseLinearWithMargin, collapseWithMargin, collapseX, collapseY, collapseYWithMargin, configureNgBootstrap, configureRoutes, defaultNgxDatatableMessages, dialogAnimation, eFormComponets, expandX, expandY, expandYWithMargin, fadeAnimation, fadeIn, fadeInDown, fadeInLeft, fadeInRight, fadeInUp, fadeOut, fadeOutDown, fadeOutLeft, fadeOutRight, fadeOutUp, getErrorFromRequestBody, getPasswordValidators,
|
|
3149
|
+
export { AbpFormatErrorHandlerService, AbpVisibleDirective, BaseThemeSharedModule, BreadcrumbComponent, BreadcrumbItemsComponent, ButtonComponent, CUSTOM_ERROR_HANDLERS, CUSTOM_HTTP_ERROR_HANDLER_PRIORITY, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardHeaderDirective, CardImgTopDirective, CardModule, CardSubtitleDirective, CardTitleDirective, Confirmation, ConfirmationComponent, ConfirmationService, CreateErrorComponentService, DEFAULT_ERROR_LOCALIZATIONS, DEFAULT_ERROR_MESSAGES, DEFAULT_HANDLERS_PROVIDERS, DEFAULT_VALIDATION_BLUEPRINTS, DateAdapter, DateParserFormatter, DateTimeAdapter, DisabledDirective, DocumentDirHandlerService, EllipsisDirective, ErrorHandler, FormCheckboxComponent, FormInputComponent, HTTP_ERROR_CONFIG, HTTP_ERROR_DETAIL, HTTP_ERROR_HANDLER, HTTP_ERROR_STATUS, HttpErrorWrapperComponent, InternetConnectionStatusComponent, LoaderBarComponent, LoadingComponent, LoadingDirective, ModalCloseDirective, ModalComponent, ModalRefService, NGX_DATATABLE_MESSAGES, NG_BOOTSTRAP_CONFIG_PROVIDERS, NavItem, NavItemsService, NgxDatatableDefaultDirective, NgxDatatableListDirective, PageAlertService, PasswordComponent, RouterErrorHandlerService, SUPPRESS_UNSAVED_CHANGES_WARNING, StatusCodeErrorHandlerService, THEME_SHARED_APPEND_CONTENT, THEME_SHARED_ROUTE_PROVIDERS, TenantResolveErrorHandlerService, ThemeSharedModule, TimeAdapter, ToastComponent, ToastContainerComponent, ToasterService, UnknownStatusCodeErrorHandlerService, UserMenu, UserMenuService, bounceIn, collapse, collapseLinearWithMargin, collapseWithMargin, collapseX, collapseY, collapseYWithMargin, configureNgBootstrap, configureRoutes, defaultNgxDatatableMessages, dialogAnimation, eFormComponets, expandX, expandY, expandYWithMargin, fadeAnimation, fadeIn, fadeInDown, fadeInLeft, fadeInRight, fadeInUp, fadeOut, fadeOutDown, fadeOutLeft, fadeOutRight, fadeOutUp, getErrorFromRequestBody, getPasswordValidators, slideFromBottom, tenantNotFoundProvider, toastInOut, validatePassword };
|
|
3112
3150
|
//# sourceMappingURL=abp-ng.theme.shared.mjs.map
|