@abp/ng.core 7.0.0 → 7.0.2
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/esm2020/lib/abstracts/ng-model.component.mjs +1 -1
- package/esm2020/lib/clients/http.client.mjs +34 -0
- package/esm2020/lib/clients/index.mjs +2 -0
- package/esm2020/lib/components/dynamic-layout.component.mjs +6 -4
- package/esm2020/lib/components/replaceable-route-container.component.mjs +1 -1
- package/esm2020/lib/core.module.mjs +7 -1
- package/esm2020/lib/directives/debounce.directive.mjs +1 -1
- package/esm2020/lib/directives/for.directive.mjs +20 -12
- package/esm2020/lib/directives/form-submit.directive.mjs +2 -2
- package/esm2020/lib/directives/permission.directive.mjs +11 -6
- package/esm2020/lib/directives/replaceable-template.directive.mjs +9 -5
- package/esm2020/lib/directives/stop-propagation.directive.mjs +2 -2
- package/esm2020/lib/handlers/routes.handler.mjs +9 -7
- package/esm2020/lib/interceptors/api.interceptor.mjs +3 -2
- package/esm2020/lib/models/auth.mjs +1 -1
- package/esm2020/lib/models/dtos.mjs +6 -6
- package/esm2020/lib/models/environment.mjs +1 -1
- package/esm2020/lib/models/session.mjs +1 -1
- package/esm2020/lib/providers/include-localization-resources.provider.mjs +2 -2
- package/esm2020/lib/providers/locale.provider.mjs +6 -2
- package/esm2020/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +1 -1
- package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +1 -1
- package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +1 -1
- package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +2 -2
- package/esm2020/lib/proxy/volo/abp/http/modeling/models.mjs +1 -1
- package/esm2020/lib/proxy/volo/abp/localization/models.mjs +1 -1
- package/esm2020/lib/services/config-state.service.mjs +4 -1
- package/esm2020/lib/services/dom-insertion.service.mjs +6 -4
- package/esm2020/lib/services/environment.service.mjs +5 -5
- package/esm2020/lib/services/http-wait.service.mjs +4 -1
- package/esm2020/lib/services/lazy-load.service.mjs +6 -4
- package/esm2020/lib/services/localization.service.mjs +7 -7
- package/esm2020/lib/services/multi-tenancy.service.mjs +1 -1
- package/esm2020/lib/services/permission.service.mjs +1 -1
- package/esm2020/lib/services/replaceable-components.service.mjs +1 -1
- package/esm2020/lib/services/resource-wait.service.mjs +2 -2
- package/esm2020/lib/services/rest.service.mjs +2 -3
- package/esm2020/lib/services/router-events.service.mjs +2 -2
- package/esm2020/lib/services/routes.service.mjs +2 -2
- package/esm2020/lib/services/session-state.service.mjs +1 -1
- package/esm2020/lib/services/subscription.service.mjs +4 -2
- package/esm2020/lib/strategies/content-security.strategy.mjs +4 -2
- package/esm2020/lib/strategies/content.strategy.mjs +6 -2
- package/esm2020/lib/strategies/context.strategy.mjs +1 -1
- package/esm2020/lib/strategies/cross-origin.strategy.mjs +4 -2
- package/esm2020/lib/strategies/loading.strategy.mjs +1 -1
- package/esm2020/lib/tokens/http-context.token.mjs +3 -0
- package/esm2020/lib/tokens/include-localization-resources.token.mjs +2 -2
- package/esm2020/lib/tokens/index.mjs +3 -1
- package/esm2020/lib/tokens/localization.token.mjs +1 -1
- package/esm2020/lib/tokens/queue.token.mjs +3 -0
- package/esm2020/lib/tokens/set-token-response-to-storage.token.mjs +4 -1
- package/esm2020/lib/utils/common-utils.mjs +4 -1
- package/esm2020/lib/utils/date-utils.mjs +3 -3
- package/esm2020/lib/utils/environment-utils.mjs +2 -2
- package/esm2020/lib/utils/factory-utils.mjs +2 -2
- package/esm2020/lib/utils/index.mjs +2 -1
- package/esm2020/lib/utils/internal-store-utils.mjs +2 -1
- package/esm2020/lib/utils/lazy-load-utils.mjs +2 -2
- package/esm2020/lib/utils/localization-utils.mjs +1 -1
- package/esm2020/lib/utils/multi-tenancy-utils.mjs +7 -4
- package/esm2020/lib/utils/object-utils.mjs +1 -1
- package/esm2020/lib/utils/queue.mjs +41 -0
- package/esm2020/lib/utils/route-utils.mjs +2 -2
- package/esm2020/lib/utils/tree-utils.mjs +1 -1
- package/esm2020/lib/validators/range.validator.mjs +1 -1
- package/esm2020/lib/validators/required.validator.mjs +1 -1
- package/esm2020/lib/validators/string-length.validator.mjs +1 -1
- package/esm2020/lib/validators/username.validator.mjs +2 -2
- package/esm2020/locale/utils/register-locale.mjs +2 -2
- package/esm2020/public-api.mjs +2 -1
- package/esm2020/testing/lib/services/mock-permission.service.mjs +1 -1
- package/esm2020/testing/lib/services/mock-rest.service.mjs +2 -2
- package/fesm2015/abp-ng.core-locale.mjs +1 -1
- package/fesm2015/abp-ng.core-locale.mjs.map +1 -1
- package/fesm2015/abp-ng.core-testing.mjs.map +1 -1
- package/fesm2015/abp-ng.core.mjs +213 -77
- package/fesm2015/abp-ng.core.mjs.map +1 -1
- package/fesm2020/abp-ng.core-locale.mjs +1 -1
- package/fesm2020/abp-ng.core-locale.mjs.map +1 -1
- package/fesm2020/abp-ng.core-testing.mjs.map +1 -1
- package/fesm2020/abp-ng.core.mjs +203 -73
- package/fesm2020/abp-ng.core.mjs.map +1 -1
- package/lib/abstracts/ng-model.component.d.ts +4 -4
- package/lib/clients/http.client.d.ts +11 -0
- package/lib/clients/index.d.ts +1 -0
- package/lib/components/dynamic-layout.component.d.ts +2 -2
- package/lib/components/replaceable-route-container.component.d.ts +1 -1
- package/lib/directives/for.directive.d.ts +6 -6
- package/lib/directives/form-submit.directive.d.ts +1 -1
- package/lib/directives/permission.directive.d.ts +4 -2
- package/lib/models/auth.d.ts +4 -1
- package/lib/models/dtos.d.ts +11 -11
- package/lib/models/environment.d.ts +3 -1
- package/lib/models/session.d.ts +1 -1
- package/lib/providers/include-localization-resources.provider.d.ts +1 -1
- package/lib/proxy/volo/abp/http/modeling/models.d.ts +1 -1
- package/lib/proxy/volo/abp/localization/models.d.ts +1 -0
- package/lib/services/config-state.service.d.ts +5 -3
- package/lib/services/dom-insertion.service.d.ts +1 -1
- package/lib/services/environment.service.d.ts +1 -1
- package/lib/services/localization.service.d.ts +5 -2
- package/lib/services/multi-tenancy.service.d.ts +1 -1
- package/lib/services/permission.service.d.ts +2 -2
- package/lib/services/replaceable-components.service.d.ts +2 -2
- package/lib/services/rest.service.d.ts +1 -1
- package/lib/services/router-events.service.d.ts +2 -2
- package/lib/services/routes.service.d.ts +3 -1
- package/lib/services/session-state.service.d.ts +1 -1
- package/lib/services/subscription.service.d.ts +1 -1
- package/lib/strategies/cross-origin.strategy.d.ts +2 -2
- package/lib/tokens/http-context.token.d.ts +2 -0
- package/lib/tokens/include-localization-resources.token.d.ts +1 -1
- package/lib/tokens/index.d.ts +2 -0
- package/lib/tokens/localization.token.d.ts +2 -2
- package/lib/tokens/queue.token.d.ts +3 -0
- package/lib/tokens/set-token-response-to-storage.token.d.ts +3 -0
- package/lib/utils/common-utils.d.ts +9 -8
- package/lib/utils/factory-utils.d.ts +3 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/localization-utils.d.ts +1 -1
- package/lib/utils/object-utils.d.ts +2 -1
- package/lib/utils/queue.d.ts +14 -0
- package/lib/utils/route-utils.d.ts +2 -2
- package/lib/utils/tree-utils.d.ts +3 -3
- package/package.json +3 -3
- package/public-api.d.ts +1 -0
package/fesm2020/abp-ng.core.mjs
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { ChangeDetectorRef, Component, Input, Injectable, InjectionToken, Inject, isDevMode, Optional, SkipSelf, Directive, EventEmitter, Output, Self, Injector, Pipe, NgModule, APP_INITIALIZER, LOCALE_ID, NgModuleFactory, Compiler, ComponentFactoryResolver, ApplicationRef } from '@angular/core';
|
|
3
|
-
import { of, BehaviorSubject, Subject, throwError, combineLatest, from, Subscription, fromEvent, ReplaySubject, lastValueFrom, Observable, timer, concat } from 'rxjs';
|
|
3
|
+
import { of, BehaviorSubject, Subject, throwError, combineLatest, from, Subscription, fromEvent, ReplaySubject, lastValueFrom, Observable, timer, pipe, concat } from 'rxjs';
|
|
4
4
|
import * as i1$1 from '@angular/router';
|
|
5
5
|
import { PRIMARY_OUTLET, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ActivatedRoute, Router, RouterModule } from '@angular/router';
|
|
6
6
|
import * as i5 from '@angular/common';
|
|
7
7
|
import { registerLocaleData, DOCUMENT, DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, CommonModule } from '@angular/common';
|
|
8
|
-
import { map, distinctUntilChanged, filter, catchError, switchMap, take, tap, debounceTime, mapTo, takeUntil,
|
|
8
|
+
import { map, distinctUntilChanged, filter, catchError, switchMap, take, tap, debounceTime, mapTo, takeUntil, delay, retryWhen, shareReplay, finalize } from 'rxjs/operators';
|
|
9
9
|
import * as i1 from '@angular/common/http';
|
|
10
|
-
import { HttpParams, HttpClient, HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
|
|
10
|
+
import { HttpParams, HttpClient, HttpClientModule, HttpClientXsrfModule, HttpContextToken, HttpHeaders, HttpContext } from '@angular/common/http';
|
|
11
11
|
import compare from 'just-compare';
|
|
12
12
|
import * as i1$2 from '@angular/forms';
|
|
13
13
|
import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
14
14
|
import clone from 'just-clone';
|
|
15
|
+
import { __classPrivateFieldGet } from 'tslib';
|
|
15
16
|
|
|
16
17
|
// Not an abstract class on purpose. Do not change!
|
|
17
18
|
class AbstractNgModelComponent {
|
|
@@ -248,6 +249,9 @@ function isNode(obj) {
|
|
|
248
249
|
}
|
|
249
250
|
function isObjectAndNotArrayNotNode(obj) {
|
|
250
251
|
return isObjectAndNotArray(obj) && !isNode(obj);
|
|
252
|
+
}
|
|
253
|
+
function checkHasProp(object, key) {
|
|
254
|
+
return Object.prototype.hasOwnProperty.call(object, key);
|
|
251
255
|
}
|
|
252
256
|
|
|
253
257
|
function deepMerge(target, source) {
|
|
@@ -306,6 +310,7 @@ class InternalStore {
|
|
|
306
310
|
this.update$.next(patchedState);
|
|
307
311
|
}
|
|
308
312
|
deepPatch(state) {
|
|
313
|
+
// TODO: Strict improve deepMerge
|
|
309
314
|
this.state$.next(deepMerge(this.state, state));
|
|
310
315
|
this.update$.next(state);
|
|
311
316
|
}
|
|
@@ -318,7 +323,7 @@ class InternalStore {
|
|
|
318
323
|
}
|
|
319
324
|
}
|
|
320
325
|
|
|
321
|
-
const mapToApiUrl = (key) => (apis) => (apis[key] || apis.default).url || apis.default.url;
|
|
326
|
+
const mapToApiUrl = (key) => (apis) => ((key && apis[key]) || apis.default).url || apis.default.url;
|
|
322
327
|
const mapToIssuer = (issuer) => {
|
|
323
328
|
if (!issuer) {
|
|
324
329
|
return issuer;
|
|
@@ -339,7 +344,7 @@ class EnvironmentService {
|
|
|
339
344
|
return this.store.state;
|
|
340
345
|
}
|
|
341
346
|
getApiUrl(key) {
|
|
342
|
-
return mapToApiUrl(key)(this.store.state
|
|
347
|
+
return mapToApiUrl(key)(this.store.state?.apis);
|
|
343
348
|
}
|
|
344
349
|
getApiUrl$(key) {
|
|
345
350
|
return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));
|
|
@@ -348,11 +353,11 @@ class EnvironmentService {
|
|
|
348
353
|
this.store.set(environment);
|
|
349
354
|
}
|
|
350
355
|
getIssuer() {
|
|
351
|
-
const issuer = this.store.state
|
|
356
|
+
const issuer = this.store.state?.oAuthConfig?.issuer;
|
|
352
357
|
return mapToIssuer(issuer);
|
|
353
358
|
}
|
|
354
359
|
getIssuer$() {
|
|
355
|
-
return this.store.sliceState(state => state
|
|
360
|
+
return this.store.sliceState(state => state?.oAuthConfig?.issuer).pipe(map(mapToIssuer));
|
|
356
361
|
}
|
|
357
362
|
}
|
|
358
363
|
EnvironmentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -419,8 +424,7 @@ class RestService {
|
|
|
419
424
|
.pipe(catchError(err => (skipHandleError ? throwError(err) : this.handleError(err))));
|
|
420
425
|
}
|
|
421
426
|
getParams(params, encoder) {
|
|
422
|
-
const filteredParams = Object.
|
|
423
|
-
const value = params[key];
|
|
427
|
+
const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
|
|
424
428
|
if (isUndefinedOrEmptyString(value))
|
|
425
429
|
return acc;
|
|
426
430
|
if (value === null && !this.options.sendNullsAsQueryParam)
|
|
@@ -511,6 +515,9 @@ class ConfigStateService {
|
|
|
511
515
|
.subscribe(res => this.store.set(res));
|
|
512
516
|
}
|
|
513
517
|
getLocalizationAndCombineWithAppState(appState) {
|
|
518
|
+
if (!appState.localization.currentCulture.cultureName) {
|
|
519
|
+
throw new Error('culture name should defined');
|
|
520
|
+
}
|
|
514
521
|
return this.getlocalizationResource(appState.localization.currentCulture.cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })));
|
|
515
522
|
}
|
|
516
523
|
getlocalizationResource(cultureName) {
|
|
@@ -771,13 +778,13 @@ class LocalizationService {
|
|
|
771
778
|
Object.entries(remote).forEach(entry => {
|
|
772
779
|
const resourceName = entry[0];
|
|
773
780
|
const remoteTexts = entry[1];
|
|
774
|
-
let resource = local
|
|
781
|
+
let resource = local?.get(resourceName) || {};
|
|
775
782
|
resource = { ...resource, ...remoteTexts };
|
|
776
|
-
local
|
|
783
|
+
local?.set(resourceName, resource);
|
|
777
784
|
});
|
|
778
785
|
}
|
|
779
786
|
return local;
|
|
780
|
-
}))
|
|
787
|
+
}), filter(Boolean))
|
|
781
788
|
.subscribe(val => this.localizations$.next(val));
|
|
782
789
|
}
|
|
783
790
|
addLocalization(localizations) {
|
|
@@ -798,7 +805,7 @@ class LocalizationService {
|
|
|
798
805
|
listenToSetLanguage() {
|
|
799
806
|
this.sessionState
|
|
800
807
|
.onLanguageChange$()
|
|
801
|
-
.pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.
|
|
808
|
+
.pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshAppState().pipe(map(() => lang))), filter(Boolean), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
|
|
802
809
|
.subscribe(lang => this._languageChange$.next(lang));
|
|
803
810
|
}
|
|
804
811
|
registerLocale(locale) {
|
|
@@ -850,14 +857,14 @@ class LocalizationService {
|
|
|
850
857
|
getLocalization(state, key, ...interpolateParams) {
|
|
851
858
|
if (!key)
|
|
852
859
|
key = '';
|
|
853
|
-
let defaultValue;
|
|
860
|
+
let defaultValue = '';
|
|
854
861
|
if (typeof key !== 'string') {
|
|
855
862
|
defaultValue = key.defaultValue;
|
|
856
863
|
key = key.key;
|
|
857
864
|
}
|
|
858
865
|
const keys = key.split('::');
|
|
859
866
|
const warn = (message) => {
|
|
860
|
-
if (isDevMode)
|
|
867
|
+
if (isDevMode())
|
|
861
868
|
console.warn(message);
|
|
862
869
|
};
|
|
863
870
|
if (keys.length < 2) {
|
|
@@ -1262,7 +1269,7 @@ class AbstractNavTreeService extends AbstractTreeService {
|
|
|
1262
1269
|
}
|
|
1263
1270
|
hasInvisibleChild(identifier) {
|
|
1264
1271
|
const node = this.find(item => item[this.id] === identifier);
|
|
1265
|
-
return node?.children?.some(child => child.invisible);
|
|
1272
|
+
return node?.children?.some(child => child.invisible) || false;
|
|
1266
1273
|
}
|
|
1267
1274
|
/* istanbul ignore next */
|
|
1268
1275
|
ngOnDestroy() {
|
|
@@ -1300,7 +1307,9 @@ class SubscriptionService {
|
|
|
1300
1307
|
}
|
|
1301
1308
|
closeOne(subscription) {
|
|
1302
1309
|
this.removeOne(subscription);
|
|
1303
|
-
subscription
|
|
1310
|
+
if (subscription) {
|
|
1311
|
+
subscription.unsubscribe();
|
|
1312
|
+
}
|
|
1304
1313
|
}
|
|
1305
1314
|
ngOnDestroy() {
|
|
1306
1315
|
this.subscription.unsubscribe();
|
|
@@ -1335,7 +1344,7 @@ class DynamicLayoutComponent {
|
|
|
1335
1344
|
]);
|
|
1336
1345
|
this.isLayoutVisible = true;
|
|
1337
1346
|
if (dynamicLayoutComponent) {
|
|
1338
|
-
if (isDevMode)
|
|
1347
|
+
if (isDevMode())
|
|
1339
1348
|
console.warn('DynamicLayoutComponent must be used only in AppComponent.');
|
|
1340
1349
|
return;
|
|
1341
1350
|
}
|
|
@@ -1367,8 +1376,10 @@ class DynamicLayoutComponent {
|
|
|
1367
1376
|
if (this.layoutKey === expectedLayout)
|
|
1368
1377
|
return;
|
|
1369
1378
|
const key = this.layouts.get(expectedLayout);
|
|
1370
|
-
|
|
1371
|
-
|
|
1379
|
+
if (key) {
|
|
1380
|
+
this.layout = this.getComponent(key)?.component;
|
|
1381
|
+
this.layoutKey = expectedLayout;
|
|
1382
|
+
}
|
|
1372
1383
|
if (!this.layout) {
|
|
1373
1384
|
this.showLayoutNotFoundError(expectedLayout);
|
|
1374
1385
|
}
|
|
@@ -1874,16 +1885,20 @@ class ForDirective {
|
|
|
1874
1885
|
const rw = [];
|
|
1875
1886
|
changes.forEachOperation((record, previousIndex, currentIndex) => {
|
|
1876
1887
|
if (record.previousIndex == null) {
|
|
1877
|
-
const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex);
|
|
1888
|
+
const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex || 0);
|
|
1878
1889
|
rw.push(new RecordView(record, view));
|
|
1879
1890
|
}
|
|
1880
|
-
else if (currentIndex == null) {
|
|
1891
|
+
else if (currentIndex == null && previousIndex !== null) {
|
|
1881
1892
|
this.vcRef.remove(previousIndex);
|
|
1882
1893
|
}
|
|
1883
1894
|
else {
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1895
|
+
if (previousIndex !== null) {
|
|
1896
|
+
const view = this.vcRef.get(previousIndex);
|
|
1897
|
+
if (view && currentIndex !== null) {
|
|
1898
|
+
this.vcRef.move(view, currentIndex);
|
|
1899
|
+
rw.push(new RecordView(record, view));
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1887
1902
|
}
|
|
1888
1903
|
});
|
|
1889
1904
|
for (let i = 0, l = rw.length; i < l; i++) {
|
|
@@ -1898,8 +1913,10 @@ class ForDirective {
|
|
|
1898
1913
|
viewRef.context.list = this.items;
|
|
1899
1914
|
}
|
|
1900
1915
|
changes.forEachIdentityChange((record) => {
|
|
1901
|
-
|
|
1902
|
-
|
|
1916
|
+
if (record.currentIndex !== null) {
|
|
1917
|
+
const viewRef = this.vcRef.get(record.currentIndex);
|
|
1918
|
+
viewRef.context.$implicit = record.item;
|
|
1919
|
+
}
|
|
1903
1920
|
});
|
|
1904
1921
|
}
|
|
1905
1922
|
projectItems(items) {
|
|
@@ -1926,8 +1943,9 @@ class ForDirective {
|
|
|
1926
1943
|
}
|
|
1927
1944
|
}
|
|
1928
1945
|
sortItems(items) {
|
|
1929
|
-
|
|
1930
|
-
|
|
1946
|
+
const orderBy = this.orderBy;
|
|
1947
|
+
if (orderBy) {
|
|
1948
|
+
items.sort((a, b) => (a[orderBy] > b[orderBy] ? 1 : a[orderBy] < b[orderBy] ? -1 : 0));
|
|
1931
1949
|
}
|
|
1932
1950
|
else {
|
|
1933
1951
|
items.sort();
|
|
@@ -1938,10 +1956,11 @@ class ForDirective {
|
|
|
1938
1956
|
if (!Array.isArray(items))
|
|
1939
1957
|
return;
|
|
1940
1958
|
const compareFn = this.compareFn;
|
|
1941
|
-
|
|
1959
|
+
const filterBy = this.filterBy;
|
|
1960
|
+
if (typeof filterBy !== 'undefined' &&
|
|
1942
1961
|
typeof this.filterVal !== 'undefined' &&
|
|
1943
1962
|
this.filterVal !== '') {
|
|
1944
|
-
items = items.filter(item => compareFn(item[
|
|
1963
|
+
items = items.filter(item => compareFn(item[filterBy], this.filterVal));
|
|
1945
1964
|
}
|
|
1946
1965
|
switch (this.orderDir) {
|
|
1947
1966
|
case 'ASC':
|
|
@@ -2012,7 +2031,7 @@ class FormSubmitDirective {
|
|
|
2012
2031
|
}
|
|
2013
2032
|
this.executedNgSubmit = true;
|
|
2014
2033
|
});
|
|
2015
|
-
const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter(
|
|
2034
|
+
const keyup$ = fromEvent(this.host.nativeElement, 'keyup').pipe(debounceTime(this.debounce), filter(event => !(event.target instanceof HTMLTextAreaElement)), filter(event => event && event.key === 'Enter'));
|
|
2016
2035
|
this.subscription.addOne(keyup$, () => {
|
|
2017
2036
|
if (!this.executedNgSubmit) {
|
|
2018
2037
|
this.host.nativeElement.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
|
|
@@ -2079,12 +2098,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
2079
2098
|
args: ['abpInit']
|
|
2080
2099
|
}] } });
|
|
2081
2100
|
|
|
2101
|
+
const QUEUE_MANAGER = new InjectionToken("QUEUE_MANAGER");
|
|
2102
|
+
|
|
2082
2103
|
class PermissionDirective {
|
|
2083
|
-
constructor(templateRef, vcRef, permissionService, cdRef) {
|
|
2104
|
+
constructor(templateRef, vcRef, permissionService, cdRef, queue) {
|
|
2084
2105
|
this.templateRef = templateRef;
|
|
2085
2106
|
this.vcRef = vcRef;
|
|
2086
2107
|
this.permissionService = permissionService;
|
|
2087
2108
|
this.cdRef = cdRef;
|
|
2109
|
+
this.queue = queue;
|
|
2088
2110
|
this.runChangeDetection = true;
|
|
2089
2111
|
this.cdrSubject = new ReplaySubject();
|
|
2090
2112
|
this.rendered = false;
|
|
@@ -2121,11 +2143,11 @@ class PermissionDirective {
|
|
|
2121
2143
|
this.check();
|
|
2122
2144
|
}
|
|
2123
2145
|
ngAfterViewInit() {
|
|
2124
|
-
this.cdrSubject.pipe(take(1)).subscribe(() => this.cdRef.detectChanges());
|
|
2146
|
+
this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));
|
|
2125
2147
|
this.rendered = true;
|
|
2126
2148
|
}
|
|
2127
2149
|
}
|
|
2128
|
-
PermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: PermissionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2150
|
+
PermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: PermissionService }, { token: i0.ChangeDetectorRef }, { token: QUEUE_MANAGER }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2129
2151
|
PermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: PermissionDirective, selector: "[abpPermission]", inputs: { condition: ["abpPermission", "condition"], runChangeDetection: ["abpPermissionRunChangeDetection", "runChangeDetection"] }, usesOnChanges: true, ngImport: i0 });
|
|
2130
2152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PermissionDirective, decorators: [{
|
|
2131
2153
|
type: Directive,
|
|
@@ -2134,7 +2156,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
2134
2156
|
}]
|
|
2135
2157
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
|
|
2136
2158
|
type: Optional
|
|
2137
|
-
}] }, { type: i0.ViewContainerRef }, { type: PermissionService }, { type: i0.ChangeDetectorRef }
|
|
2159
|
+
}] }, { type: i0.ViewContainerRef }, { type: PermissionService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
2160
|
+
type: Inject,
|
|
2161
|
+
args: [QUEUE_MANAGER]
|
|
2162
|
+
}] }]; }, propDecorators: { condition: [{
|
|
2138
2163
|
type: Input,
|
|
2139
2164
|
args: ['abpPermission']
|
|
2140
2165
|
}], runChangeDetection: [{
|
|
@@ -2230,11 +2255,15 @@ class ReplaceableTemplateDirective {
|
|
|
2230
2255
|
[key]: {
|
|
2231
2256
|
enumerable: true,
|
|
2232
2257
|
configurable: true,
|
|
2233
|
-
get: () => this.data.inputs[key]?.value,
|
|
2234
|
-
...(this.data.inputs[key]?.twoWay && {
|
|
2258
|
+
get: () => this.data.inputs?.[key]?.value,
|
|
2259
|
+
...(this.data.inputs?.[key]?.twoWay && {
|
|
2235
2260
|
set: (newValue) => {
|
|
2236
|
-
this.data.inputs[key]
|
|
2237
|
-
|
|
2261
|
+
if (this.data.inputs?.[key]) {
|
|
2262
|
+
this.data.inputs[key].value = newValue;
|
|
2263
|
+
}
|
|
2264
|
+
if (this.data.outputs?.[`${key}Change`]) {
|
|
2265
|
+
this.data.outputs[`${key}Change`](newValue);
|
|
2266
|
+
}
|
|
2238
2267
|
},
|
|
2239
2268
|
}),
|
|
2240
2269
|
},
|
|
@@ -2269,7 +2298,7 @@ class StopPropagationDirective {
|
|
|
2269
2298
|
this.stopPropEvent = new EventEmitter();
|
|
2270
2299
|
}
|
|
2271
2300
|
ngOnInit() {
|
|
2272
|
-
this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'),
|
|
2301
|
+
this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), event => {
|
|
2273
2302
|
event.stopPropagation();
|
|
2274
2303
|
this.stopPropEvent.emit(event);
|
|
2275
2304
|
});
|
|
@@ -2297,14 +2326,16 @@ class RoutesHandler {
|
|
|
2297
2326
|
}
|
|
2298
2327
|
addRoutes() {
|
|
2299
2328
|
this.router?.config?.forEach(({ path = '', data }) => {
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
if (Array.isArray(data.routes)) {
|
|
2303
|
-
this.routes.add(data.routes);
|
|
2329
|
+
const routes = data?.routes;
|
|
2330
|
+
if (!routes)
|
|
2304
2331
|
return;
|
|
2332
|
+
if (Array.isArray(routes)) {
|
|
2333
|
+
this.routes.add(routes);
|
|
2334
|
+
}
|
|
2335
|
+
else {
|
|
2336
|
+
const routesFlatten = flatRoutes([{ path, ...routes }], { path: '' });
|
|
2337
|
+
this.routes.add(routesFlatten);
|
|
2305
2338
|
}
|
|
2306
|
-
const routes = flatRoutes([{ path, ...data.routes }], { path: '' });
|
|
2307
|
-
this.routes.add(routes);
|
|
2308
2339
|
});
|
|
2309
2340
|
}
|
|
2310
2341
|
}
|
|
@@ -2477,7 +2508,10 @@ class LocaleId extends String {
|
|
|
2477
2508
|
}
|
|
2478
2509
|
toString() {
|
|
2479
2510
|
const { currentLang } = this.localizationService;
|
|
2480
|
-
|
|
2511
|
+
if (checkHasProp(differentLocales, currentLang)) {
|
|
2512
|
+
return differentLocales[currentLang];
|
|
2513
|
+
}
|
|
2514
|
+
return currentLang;
|
|
2481
2515
|
}
|
|
2482
2516
|
valueOf() {
|
|
2483
2517
|
return this.toString();
|
|
@@ -2512,7 +2546,7 @@ function getRemoteEnv(injector, environment) {
|
|
|
2512
2546
|
httpErrorReporter.reportError(err);
|
|
2513
2547
|
return of(null);
|
|
2514
2548
|
}), // TODO: Consider get handle function from a provider
|
|
2515
|
-
tap(env => environmentService.setState(mergeEnvironments(environment, env, remoteEnv))))
|
|
2549
|
+
tap(env => environmentService.setState(mergeEnvironments(environment, env || {}, remoteEnv))))
|
|
2516
2550
|
.toPromise();
|
|
2517
2551
|
}
|
|
2518
2552
|
function mergeEnvironments(local, remote, config) {
|
|
@@ -2648,13 +2682,16 @@ function replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder =
|
|
|
2648
2682
|
if (environment.application.baseUrl) {
|
|
2649
2683
|
environment.application.baseUrl = environment.application.baseUrl.replace(placeholder, tenancyName);
|
|
2650
2684
|
}
|
|
2651
|
-
if (environment.oAuthConfig
|
|
2685
|
+
if (environment.oAuthConfig?.redirectUri) {
|
|
2652
2686
|
environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(placeholder, tenancyName);
|
|
2653
2687
|
}
|
|
2654
|
-
|
|
2688
|
+
if (!environment.oAuthConfig) {
|
|
2689
|
+
environment.oAuthConfig = {};
|
|
2690
|
+
}
|
|
2691
|
+
environment.oAuthConfig.issuer = (environment.oAuthConfig.issuer || '').replace(placeholder, tenancyName);
|
|
2655
2692
|
Object.keys(environment.apis).forEach(api => {
|
|
2656
2693
|
Object.keys(environment.apis[api]).forEach(key => {
|
|
2657
|
-
environment.apis[api][key] = environment.apis[api][key].replace(placeholder, tenancyName);
|
|
2694
|
+
environment.apis[api][key] = (environment.apis[api][key] || '').replace(placeholder, tenancyName);
|
|
2658
2695
|
});
|
|
2659
2696
|
});
|
|
2660
2697
|
return environmentService.setState(environment);
|
|
@@ -2730,11 +2767,11 @@ function getShortDateFormat(configStateService) {
|
|
|
2730
2767
|
}
|
|
2731
2768
|
function getShortTimeFormat(configStateService) {
|
|
2732
2769
|
const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');
|
|
2733
|
-
return dateTimeFormat
|
|
2770
|
+
return dateTimeFormat?.shortTimePattern?.replace('tt', 'a');
|
|
2734
2771
|
}
|
|
2735
2772
|
function getShortDateShortTimeFormat(configStateService) {
|
|
2736
2773
|
const dateTimeFormat = configStateService.getDeep('localization.currentCulture.dateTimeFormat');
|
|
2737
|
-
return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat
|
|
2774
|
+
return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat?.shortTimePattern?.replace('tt', 'a')}`;
|
|
2738
2775
|
}
|
|
2739
2776
|
|
|
2740
2777
|
class LazyModuleFactory extends NgModuleFactory {
|
|
@@ -2747,7 +2784,7 @@ class LazyModuleFactory extends NgModuleFactory {
|
|
|
2747
2784
|
}
|
|
2748
2785
|
create(parentInjector) {
|
|
2749
2786
|
const injector = Injector.create({
|
|
2750
|
-
parent: parentInjector,
|
|
2787
|
+
...(parentInjector && { parent: parentInjector }),
|
|
2751
2788
|
providers: this.moduleWithProviders.providers,
|
|
2752
2789
|
});
|
|
2753
2790
|
const compiler = injector.get(Compiler);
|
|
@@ -2849,7 +2886,9 @@ class CrossOriginStrategy {
|
|
|
2849
2886
|
setCrossOrigin(element) {
|
|
2850
2887
|
if (this.integrity)
|
|
2851
2888
|
element.setAttribute('integrity', this.integrity);
|
|
2852
|
-
|
|
2889
|
+
if (this.crossorigin) {
|
|
2890
|
+
element.setAttribute('crossorigin', this.crossorigin);
|
|
2891
|
+
}
|
|
2853
2892
|
}
|
|
2854
2893
|
}
|
|
2855
2894
|
class NoCrossOriginStrategy extends CrossOriginStrategy {
|
|
@@ -2918,7 +2957,7 @@ function fromLazyLoad(element, domStrategy = DOM_STRATEGY.AppendToHead(), crossO
|
|
|
2918
2957
|
function createErrorHandler(observer, element) {
|
|
2919
2958
|
return function (event) {
|
|
2920
2959
|
clearCallbacks(element);
|
|
2921
|
-
element.parentNode
|
|
2960
|
+
element.parentNode?.removeChild(element);
|
|
2922
2961
|
observer.error(event);
|
|
2923
2962
|
};
|
|
2924
2963
|
}
|
|
@@ -2931,6 +2970,47 @@ function clearCallbacks(element) {
|
|
|
2931
2970
|
element.onsuspend = null;
|
|
2932
2971
|
}
|
|
2933
2972
|
|
|
2973
|
+
class DefaultQueueManager {
|
|
2974
|
+
constructor() {
|
|
2975
|
+
this.queue = [];
|
|
2976
|
+
this.isRunning = false;
|
|
2977
|
+
this.stack = 0;
|
|
2978
|
+
this.interval = 0;
|
|
2979
|
+
this.stackSize = 100;
|
|
2980
|
+
}
|
|
2981
|
+
init(interval, stackSize) {
|
|
2982
|
+
this.interval = interval;
|
|
2983
|
+
this.stackSize = stackSize;
|
|
2984
|
+
}
|
|
2985
|
+
add(fn) {
|
|
2986
|
+
this.queue.push(fn);
|
|
2987
|
+
this.run();
|
|
2988
|
+
}
|
|
2989
|
+
run() {
|
|
2990
|
+
if (this.isRunning)
|
|
2991
|
+
return;
|
|
2992
|
+
this.stack++;
|
|
2993
|
+
this.isRunning = true;
|
|
2994
|
+
const fn = this.queue.shift();
|
|
2995
|
+
if (!fn) {
|
|
2996
|
+
this.isRunning = false;
|
|
2997
|
+
return;
|
|
2998
|
+
}
|
|
2999
|
+
fn();
|
|
3000
|
+
if (this.stack > this.stackSize) {
|
|
3001
|
+
setTimeout(() => {
|
|
3002
|
+
this.isRunning = false;
|
|
3003
|
+
this.run();
|
|
3004
|
+
this.stack = 0;
|
|
3005
|
+
}, this.interval);
|
|
3006
|
+
}
|
|
3007
|
+
else {
|
|
3008
|
+
this.isRunning = false;
|
|
3009
|
+
this.run();
|
|
3010
|
+
}
|
|
3011
|
+
}
|
|
3012
|
+
}
|
|
3013
|
+
|
|
2934
3014
|
class DomInsertionService {
|
|
2935
3015
|
constructor() {
|
|
2936
3016
|
this.inserted = new Set();
|
|
@@ -2944,9 +3024,11 @@ class DomInsertionService {
|
|
|
2944
3024
|
return element;
|
|
2945
3025
|
}
|
|
2946
3026
|
removeContent(element) {
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
3027
|
+
if (element.textContent) {
|
|
3028
|
+
const hash = generateHash(element.textContent);
|
|
3029
|
+
this.inserted.delete(hash);
|
|
3030
|
+
element.parentNode?.removeChild(element);
|
|
3031
|
+
}
|
|
2950
3032
|
}
|
|
2951
3033
|
has(content) {
|
|
2952
3034
|
const hash = generateHash(content);
|
|
@@ -3010,6 +3092,9 @@ class HttpWaitService {
|
|
|
3010
3092
|
this.store.patch({ filteredRequests });
|
|
3011
3093
|
}
|
|
3012
3094
|
applyFilter(requests) {
|
|
3095
|
+
if (!requests) {
|
|
3096
|
+
return [];
|
|
3097
|
+
}
|
|
3013
3098
|
const { filteredRequests } = this.store.state;
|
|
3014
3099
|
return requests.filter(({ method, url }) => !filteredRequests.find(filteredRequest => this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) })));
|
|
3015
3100
|
}
|
|
@@ -3038,7 +3123,7 @@ class ResourceWaitService {
|
|
|
3038
3123
|
return this.store.sliceState(({ resources }) => !!resources.size);
|
|
3039
3124
|
}
|
|
3040
3125
|
updateLoading$() {
|
|
3041
|
-
return this.store.sliceUpdate(({ resources }) => !!resources
|
|
3126
|
+
return this.store.sliceUpdate(({ resources }) => !!resources?.size);
|
|
3042
3127
|
}
|
|
3043
3128
|
clearLoading() {
|
|
3044
3129
|
this.store.patch({ resources: new Set() });
|
|
@@ -3072,7 +3157,9 @@ class LazyLoadService {
|
|
|
3072
3157
|
if (this.loaded.has(strategy.path))
|
|
3073
3158
|
return of(new CustomEvent('load'));
|
|
3074
3159
|
this.resourceWaitService.addResource(strategy.path);
|
|
3075
|
-
|
|
3160
|
+
const delayOperator = retryDelay ? pipe(delay(retryDelay)) : pipe();
|
|
3161
|
+
const takeOp = retryTimes ? pipe(take(retryTimes)) : pipe();
|
|
3162
|
+
return strategy.createStream().pipe(retryWhen(error$ => concat(error$.pipe(delayOperator, takeOp), throwError(() => new CustomEvent('error')))), tap(() => {
|
|
3076
3163
|
this.loaded.set(strategy.path, strategy.element);
|
|
3077
3164
|
this.resourceWaitService.deleteResource(strategy.path);
|
|
3078
3165
|
}), delay(100), shareReplay({ bufferSize: 1, refCount: true }));
|
|
@@ -3081,7 +3168,7 @@ class LazyLoadService {
|
|
|
3081
3168
|
const element = this.loaded.get(path);
|
|
3082
3169
|
if (!element)
|
|
3083
3170
|
return false;
|
|
3084
|
-
element.parentNode
|
|
3171
|
+
element.parentNode?.removeChild(element);
|
|
3085
3172
|
this.loaded.delete(path);
|
|
3086
3173
|
return true;
|
|
3087
3174
|
}
|
|
@@ -3544,6 +3631,10 @@ class CoreModule {
|
|
|
3544
3631
|
useValue: localizationContributor(options.localizations),
|
|
3545
3632
|
deps: [LocalizationService],
|
|
3546
3633
|
},
|
|
3634
|
+
{
|
|
3635
|
+
provide: QUEUE_MANAGER,
|
|
3636
|
+
useClass: DefaultQueueManager,
|
|
3637
|
+
},
|
|
3547
3638
|
IncludeLocalizationResourcesProvider,
|
|
3548
3639
|
],
|
|
3549
3640
|
};
|
|
@@ -3607,7 +3698,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
3607
3698
|
class ListResultDto {
|
|
3608
3699
|
constructor(initialValues = {}) {
|
|
3609
3700
|
for (const key in initialValues) {
|
|
3610
|
-
if (
|
|
3701
|
+
if (checkHasProp(initialValues, key)) {
|
|
3611
3702
|
this[key] = initialValues[key];
|
|
3612
3703
|
}
|
|
3613
3704
|
}
|
|
@@ -3622,8 +3713,7 @@ class LimitedResultRequestDto {
|
|
|
3622
3713
|
constructor(initialValues = {}) {
|
|
3623
3714
|
this.maxResultCount = 10;
|
|
3624
3715
|
for (const key in initialValues) {
|
|
3625
|
-
if (
|
|
3626
|
-
initialValues[key] !== undefined) {
|
|
3716
|
+
if (checkHasProp(initialValues, key) && initialValues[key] !== undefined) {
|
|
3627
3717
|
this[key] = initialValues[key];
|
|
3628
3718
|
}
|
|
3629
3719
|
}
|
|
@@ -3642,7 +3732,7 @@ class PagedAndSortedResultRequestDto extends PagedResultRequestDto {
|
|
|
3642
3732
|
class EntityDto {
|
|
3643
3733
|
constructor(initialValues = {}) {
|
|
3644
3734
|
for (const key in initialValues) {
|
|
3645
|
-
if (
|
|
3735
|
+
if (checkHasProp(initialValues, key)) {
|
|
3646
3736
|
this[key] = initialValues[key];
|
|
3647
3737
|
}
|
|
3648
3738
|
}
|
|
@@ -3681,7 +3771,7 @@ class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
|
|
|
3681
3771
|
class ExtensibleObject {
|
|
3682
3772
|
constructor(initialValues = {}) {
|
|
3683
3773
|
for (const key in initialValues) {
|
|
3684
|
-
if (
|
|
3774
|
+
if (checkHasProp(initialValues, key)) {
|
|
3685
3775
|
this[key] = initialValues[key];
|
|
3686
3776
|
}
|
|
3687
3777
|
}
|
|
@@ -3795,7 +3885,9 @@ class LooseContentSecurityStrategy extends ContentSecurityStrategy {
|
|
|
3795
3885
|
super(nonce);
|
|
3796
3886
|
}
|
|
3797
3887
|
applyCSP(element) {
|
|
3798
|
-
|
|
3888
|
+
if (this.nonce) {
|
|
3889
|
+
element.setAttribute('nonce', this.nonce);
|
|
3890
|
+
}
|
|
3799
3891
|
}
|
|
3800
3892
|
}
|
|
3801
3893
|
class NoContentSecurityStrategy extends ContentSecurityStrategy {
|
|
@@ -3823,7 +3915,11 @@ class ContentStrategy {
|
|
|
3823
3915
|
insertElement() {
|
|
3824
3916
|
const element = this.createElement();
|
|
3825
3917
|
if (this.options && Object.keys(this.options).length > 0) {
|
|
3826
|
-
Object.keys(this.options).forEach(key =>
|
|
3918
|
+
Object.keys(this.options).forEach(key => {
|
|
3919
|
+
if (this.options[key]) {
|
|
3920
|
+
element[key] = this.options[key];
|
|
3921
|
+
}
|
|
3922
|
+
});
|
|
3827
3923
|
}
|
|
3828
3924
|
this.contentSecurityStrategy.applyCSP(element);
|
|
3829
3925
|
this.domStrategy.insertElement(element);
|
|
@@ -4029,8 +4125,13 @@ const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFIL
|
|
|
4029
4125
|
|
|
4030
4126
|
const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');
|
|
4031
4127
|
|
|
4128
|
+
/**
|
|
4129
|
+
* @deprecated The token should not be used anymore.
|
|
4130
|
+
*/
|
|
4032
4131
|
const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');
|
|
4033
4132
|
|
|
4133
|
+
const IS_EXTERNAL_REQUEST = new HttpContextToken(() => false);
|
|
4134
|
+
|
|
4034
4135
|
function validateMinAge({ age = 18 } = {}) {
|
|
4035
4136
|
return (control) => {
|
|
4036
4137
|
if (['', null, undefined].indexOf(control.value) > -1)
|
|
@@ -4128,7 +4229,7 @@ function isValidUrl(value) {
|
|
|
4128
4229
|
}
|
|
4129
4230
|
|
|
4130
4231
|
const onlyLetterAndNumberRegex = /^[a-zA-Z0-9]+$/;
|
|
4131
|
-
function validateUsername({ pattern } = { pattern: onlyLetterAndNumberRegex }) {
|
|
4232
|
+
function validateUsername({ pattern = /.*/ } = { pattern: onlyLetterAndNumberRegex }) {
|
|
4132
4233
|
return (control) => {
|
|
4133
4234
|
const isValid = isValidUserName(control.value, pattern);
|
|
4134
4235
|
return isValid ? null : { usernamePattern: { actualValue: control.value } };
|
|
@@ -4156,7 +4257,7 @@ class ApiInterceptor {
|
|
|
4156
4257
|
this.httpWaitService = httpWaitService;
|
|
4157
4258
|
}
|
|
4158
4259
|
getAdditionalHeaders(existingHeaders) {
|
|
4159
|
-
return existingHeaders;
|
|
4260
|
+
return existingHeaders || new HttpHeaders();
|
|
4160
4261
|
}
|
|
4161
4262
|
intercept(request, next) {
|
|
4162
4263
|
this.httpWaitService.addRequest(request);
|
|
@@ -4172,11 +4273,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
4172
4273
|
}]
|
|
4173
4274
|
}], ctorParameters: function () { return [{ type: HttpWaitService }]; } });
|
|
4174
4275
|
|
|
4276
|
+
var _ExternalHttpClient_instances, _ExternalHttpClient_setPlaceholderContext;
|
|
4277
|
+
// source : https://github.com/armanozak/demo-angular-server-specific-interceptors
|
|
4278
|
+
class ExternalHttpClient extends HttpClient {
|
|
4279
|
+
constructor() {
|
|
4280
|
+
super(...arguments);
|
|
4281
|
+
_ExternalHttpClient_instances.add(this);
|
|
4282
|
+
}
|
|
4283
|
+
request(first, url, options = {}) {
|
|
4284
|
+
if (typeof first === 'string') {
|
|
4285
|
+
__classPrivateFieldGet(this, _ExternalHttpClient_instances, "m", _ExternalHttpClient_setPlaceholderContext).call(this, options);
|
|
4286
|
+
return super.request(first, url || '', options);
|
|
4287
|
+
}
|
|
4288
|
+
__classPrivateFieldGet(this, _ExternalHttpClient_instances, "m", _ExternalHttpClient_setPlaceholderContext).call(this, first);
|
|
4289
|
+
return super.request(first);
|
|
4290
|
+
}
|
|
4291
|
+
}
|
|
4292
|
+
_ExternalHttpClient_instances = new WeakSet(), _ExternalHttpClient_setPlaceholderContext = function _ExternalHttpClient_setPlaceholderContext(optionsOrRequest) {
|
|
4293
|
+
optionsOrRequest.context ?? (optionsOrRequest.context = new HttpContext());
|
|
4294
|
+
optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);
|
|
4295
|
+
};
|
|
4296
|
+
ExternalHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExternalHttpClient, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
4297
|
+
ExternalHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExternalHttpClient, providedIn: 'root' });
|
|
4298
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExternalHttpClient, decorators: [{
|
|
4299
|
+
type: Injectable,
|
|
4300
|
+
args: [{
|
|
4301
|
+
providedIn: 'root',
|
|
4302
|
+
}]
|
|
4303
|
+
}] });
|
|
4304
|
+
|
|
4175
4305
|
// export * from './lib/handlers';
|
|
4176
4306
|
|
|
4177
4307
|
/**
|
|
4178
4308
|
* Generated bundle index. Do not edit.
|
|
4179
4309
|
*/
|
|
4180
4310
|
|
|
4181
|
-
export { APP_INIT_ERROR_HANDLERS, AbpApiDefinitionService, AbpApplicationConfigurationService, AbpApplicationLocalizationService, AbpTenantService, AbpValidators, AbstractNavTreeService, AbstractNgModelComponent, AbstractTreeService, ApiInterceptor, AuditedEntityDto, AuditedEntityWithUserDto, AuthGuard, AuthService, AutofocusDirective, BaseCoreModule, BaseTreeNode, CHECK_AUTHENTICATION_STATE_FN_KEY, CONTAINER_STRATEGY, CONTENT_SECURITY_STRATEGY, CONTENT_STRATEGY, CONTEXT_STRATEGY, COOKIE_LANGUAGE_KEY, CORE_OPTIONS, CROSS_ORIGIN_STRATEGY, ClearContainerStrategy, ComponentContextStrategy, ComponentProjectionStrategy, ConfigStateService, ContainerStrategy, ContentProjectionService, ContentSecurityStrategy, ContentStrategy, ContextStrategy, CoreModule, CreationAuditedEntityDto, CreationAuditedEntityWithUserDto, CrossOriginStrategy, DOM_STRATEGY, DomInsertionService, DomStrategy, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleObject, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, InitDirective, InputEventDebounceDirective, InsertIntoContainerStrategy, InternalStore, LIST_QUERY_DEBOUNCE_TIME, LOADER_DELAY, LOADING_STRATEGY, LOCALIZATIONS, LazyLoadService, LazyModuleFactory, LimitedResultRequestDto, ListResultDto, ListService, LoadingStrategy, LocalizationModule, LocalizationPipe, LocalizationService, LooseContentSecurityStrategy, MultiTenancyService, NAVIGATE_TO_MANAGE_PROFILE, NavigationEvent, NoContentSecurityStrategy, NoContextStrategy, NoCrossOriginStrategy, index as ObjectExtending, PIPE_TO_LOGIN_FN_KEY, PROJECTION_STRATEGY, PagedAndSortedResultRequestDto, PagedResultDto, PagedResultRequestDto, PermissionDirective, PermissionGuard, PermissionService, ProjectionStrategy, ReplaceableComponentsService, ReplaceableRouteContainerComponent, ReplaceableTemplateDirective, ResourceWaitService, RestService, RootComponentProjectionStrategy, RootCoreModule, RouterEvents, RouterOutletComponent, RouterWaitService, RoutesService, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, ScriptContentStrategy, ScriptLoadingStrategy, SessionStateService, ShortDatePipe, ShortDateTimePipe, ShortTimePipe, SortPipe, StopPropagationDirective, StyleContentStrategy, StyleLoadingStrategy, SubscriptionService, TENANT_KEY, TemplateContextStrategy, TemplateProjectionStrategy, ToInjectorPipe, TrackByService, WebHttpUrlEncodingCodec, coreOptionsFactory, createLocalizationPipeKeyGenerator, createLocalizer, createLocalizerWithFallback, createMapFromList, createTokenParser, createTreeFromList, createTreeNodeFilterCreator, deepMerge, differentLocales, downloadBlob, escapeHtmlChars, exists, featuresFactory, findRoute, fromLazyLoad, generateHash, generatePassword, getInitialData, getLocaleDirection, getPathName, getRemoteEnv, getRoutePath, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, interpolate, isArray, isNode, isNullOrEmpty, isNullOrUndefined, isNumber, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isUndefinedOrEmptyString, localeInitializer, localizationContributor, localizations$, mapEnumToOptions, noop, parseTenantFromUrl, pushValueTo, reloadRoute, trackBy, trackByDeep, uuid, validateCreditCard, validateMinAge, validateRange, validateRequired, validateStringLength, validateUrl };
|
|
4311
|
+
export { APP_INIT_ERROR_HANDLERS, AbpApiDefinitionService, AbpApplicationConfigurationService, AbpApplicationLocalizationService, AbpTenantService, AbpValidators, AbstractNavTreeService, AbstractNgModelComponent, AbstractTreeService, ApiInterceptor, AuditedEntityDto, AuditedEntityWithUserDto, AuthGuard, AuthService, AutofocusDirective, BaseCoreModule, BaseTreeNode, CHECK_AUTHENTICATION_STATE_FN_KEY, CONTAINER_STRATEGY, CONTENT_SECURITY_STRATEGY, CONTENT_STRATEGY, CONTEXT_STRATEGY, COOKIE_LANGUAGE_KEY, CORE_OPTIONS, CROSS_ORIGIN_STRATEGY, ClearContainerStrategy, ComponentContextStrategy, ComponentProjectionStrategy, ConfigStateService, ContainerStrategy, ContentProjectionService, ContentSecurityStrategy, ContentStrategy, ContextStrategy, CoreModule, CreationAuditedEntityDto, CreationAuditedEntityWithUserDto, CrossOriginStrategy, DOM_STRATEGY, DefaultQueueManager, DomInsertionService, DomStrategy, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleObject, ExternalHttpClient, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, IS_EXTERNAL_REQUEST, InitDirective, InputEventDebounceDirective, InsertIntoContainerStrategy, InternalStore, LIST_QUERY_DEBOUNCE_TIME, LOADER_DELAY, LOADING_STRATEGY, LOCALIZATIONS, LazyLoadService, LazyModuleFactory, LimitedResultRequestDto, ListResultDto, ListService, LoadingStrategy, LocalizationModule, LocalizationPipe, LocalizationService, LooseContentSecurityStrategy, MultiTenancyService, NAVIGATE_TO_MANAGE_PROFILE, NavigationEvent, NoContentSecurityStrategy, NoContextStrategy, NoCrossOriginStrategy, index as ObjectExtending, PIPE_TO_LOGIN_FN_KEY, PROJECTION_STRATEGY, PagedAndSortedResultRequestDto, PagedResultDto, PagedResultRequestDto, PermissionDirective, PermissionGuard, PermissionService, ProjectionStrategy, QUEUE_MANAGER, ReplaceableComponentsService, ReplaceableRouteContainerComponent, ReplaceableTemplateDirective, ResourceWaitService, RestService, RootComponentProjectionStrategy, RootCoreModule, RouterEvents, RouterOutletComponent, RouterWaitService, RoutesService, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, ScriptContentStrategy, ScriptLoadingStrategy, SessionStateService, ShortDatePipe, ShortDateTimePipe, ShortTimePipe, SortPipe, StopPropagationDirective, StyleContentStrategy, StyleLoadingStrategy, SubscriptionService, TENANT_KEY, TemplateContextStrategy, TemplateProjectionStrategy, ToInjectorPipe, TrackByService, WebHttpUrlEncodingCodec, checkHasProp, coreOptionsFactory, createLocalizationPipeKeyGenerator, createLocalizer, createLocalizerWithFallback, createMapFromList, createTokenParser, createTreeFromList, createTreeNodeFilterCreator, deepMerge, differentLocales, downloadBlob, escapeHtmlChars, exists, featuresFactory, findRoute, fromLazyLoad, generateHash, generatePassword, getInitialData, getLocaleDirection, getPathName, getRemoteEnv, getRoutePath, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, interpolate, isArray, isNode, isNullOrEmpty, isNullOrUndefined, isNumber, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isUndefinedOrEmptyString, localeInitializer, localizationContributor, localizations$, mapEnumToOptions, noop, parseTenantFromUrl, pushValueTo, reloadRoute, trackBy, trackByDeep, uuid, validateCreditCard, validateMinAge, validateRange, validateRequired, validateStringLength, validateUrl };
|
|
4182
4312
|
//# sourceMappingURL=abp-ng.core.mjs.map
|