@koalarx/ui 20.1.7 → 20.1.9
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/core/components/kl-root/index.d.ts +0 -1
- package/fesm2022/koalarx-ui-core-components-kl-root.mjs +1 -3
- package/fesm2022/koalarx-ui-core-components-kl-root.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-services.mjs +4 -2
- package/fesm2022/koalarx-ui-shared-services.mjs.map +1 -1
- package/fesm2022/koalarx-ui.mjs +1 -2
- package/fesm2022/koalarx-ui.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/package.json +13 -13
|
@@ -2,7 +2,6 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { OnInit } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
declare class KlRoot implements OnInit {
|
|
5
|
-
private readonly authorization;
|
|
6
5
|
routerLoaderColor: i0.InputSignal<string>;
|
|
7
6
|
ngOnInit(): void;
|
|
8
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<KlRoot, never>;
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { input, Component } from '@angular/core';
|
|
3
3
|
import { DialogContainer } from '@koalarx/ui/core/components/dialog';
|
|
4
4
|
import { LoaderPageContent } from '@koalarx/ui/core/components/loader-page';
|
|
5
5
|
import { SideWindowContainer } from '@koalarx/ui/core/components/side-window';
|
|
6
6
|
import { SnackbarContainer } from '@koalarx/ui/core/components/snackbar';
|
|
7
|
-
import { Authorization } from '@koalarx/ui/shared/services';
|
|
8
7
|
import { LoadingBarRouterModule } from '@ngx-loading-bar/router';
|
|
9
8
|
import * as i1 from '@ngx-loading-bar/core';
|
|
10
9
|
|
|
11
10
|
class KlRoot {
|
|
12
|
-
authorization = inject(Authorization);
|
|
13
11
|
routerLoaderColor = input('#6A1B9A');
|
|
14
12
|
ngOnInit() {
|
|
15
13
|
if (document.querySelector('html')?.getAttribute('data-theme') === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-core-components-kl-root.mjs","sources":["../../projects/koala-ui/core/components/kl-root/kl-root.ts","../../projects/koala-ui/core/components/kl-root/kl-root.html","../../projects/koala-ui/core/components/kl-root/koalarx-ui-core-components-kl-root.ts"],"sourcesContent":["import { Component,
|
|
1
|
+
{"version":3,"file":"koalarx-ui-core-components-kl-root.mjs","sources":["../../projects/koala-ui/core/components/kl-root/kl-root.ts","../../projects/koala-ui/core/components/kl-root/kl-root.html","../../projects/koala-ui/core/components/kl-root/koalarx-ui-core-components-kl-root.ts"],"sourcesContent":["import { Component, input, OnInit } from '@angular/core';\nimport { DialogContainer } from '@koalarx/ui/core/components/dialog';\nimport { LoaderPageContent } from '@koalarx/ui/core/components/loader-page';\nimport { SideWindowContainer } from '@koalarx/ui/core/components/side-window';\nimport { SnackbarContainer } from '@koalarx/ui/core/components/snackbar';\nimport { LoadingBarRouterModule } from '@ngx-loading-bar/router';\n\n@Component({\n selector: 'kl-root',\n templateUrl: './kl-root.html',\n imports: [\n DialogContainer,\n LoadingBarRouterModule,\n SideWindowContainer,\n SnackbarContainer,\n LoaderPageContent,\n ],\n})\nexport class KlRoot implements OnInit {\n routerLoaderColor = input<string>('#6A1B9A');\n\n ngOnInit(): void {\n if (document.querySelector('html')?.getAttribute('data-theme') === null) {\n document.querySelector('html')?.setAttribute('data-theme', 'light');\n }\n }\n}\n","<ngx-loading-bar\n [color]=\"routerLoaderColor()\"\n height=\"4px\"\n [includeSpinner]=\"false\"\n/>\n\n<main class=\"overflow-x-hidden\">\n <kl-loader-page-content />\n <kl-snackbar-container />\n <kl-dialog-container />\n <kl-side-window-container />\n <div class=\"kl-generic-component-container\"></div>\n\n <ng-content />\n</main>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAkBa,MAAM,CAAA;AACjB,IAAA,iBAAiB,GAAG,KAAK,CAAS,SAAS,CAAC;IAE5C,QAAQ,GAAA;AACN,QAAA,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;AACvE,YAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;;;uGAL5D,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBnB,4VAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJI,eAAe,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,mBAAmB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,iBAAiB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,CAAA;;2FAGR,MAAM,EAAA,UAAA,EAAA,CAAA;kBAXlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAEV,OAAA,EAAA;wBACP,eAAe;wBACf,sBAAsB;wBACtB,mBAAmB;wBACnB,iBAAiB;wBACjB,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EAAA,4VAAA,EAAA;;;AEhBH;;AAEG;;;;"}
|
|
@@ -12,8 +12,8 @@ class Authorization {
|
|
|
12
12
|
appConfig = inject(AppConfig);
|
|
13
13
|
translation = this.appConfig.translation.jwtAuthorizationService;
|
|
14
14
|
authConfig = this.appConfig.authConfig;
|
|
15
|
-
_accessToken = signal(
|
|
16
|
-
_refreshToken = signal(
|
|
15
|
+
_accessToken = signal(null);
|
|
16
|
+
_refreshToken = signal(null);
|
|
17
17
|
_isAuthenticated = signal(false);
|
|
18
18
|
_userinfo = signal(null);
|
|
19
19
|
router = inject(Router);
|
|
@@ -74,6 +74,8 @@ class Authorization {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
init() {
|
|
77
|
+
this._accessToken.set(localStorage.getItem(this.authConfig.storageTokenKey));
|
|
78
|
+
this._refreshToken.set(localStorage.getItem(this.authConfig?.storageRefreshTokenKey));
|
|
77
79
|
effect(() => {
|
|
78
80
|
const userInfo = this._userinfo();
|
|
79
81
|
if (userInfo) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-services.mjs","sources":["../../projects/koala-ui/shared/services/authorization.ts","../../projects/koala-ui/shared/services/koalarx-ui-shared-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { AuthConfig } from '@koalarx/ui/core/models';\nimport { Confirm } from '@koalarx/ui/shared/components/confirm';\nimport { jwtDecode } from 'jwt-decode';\nimport { first } from 'rxjs/internal/operators/first';\nimport { tap } from 'rxjs/internal/operators/tap';\n\n@Injectable({ providedIn: 'root' })\nexport class Authorization<TUser = any> {\n private readonly appConfig = inject(AppConfig);\n private readonly translation =\n this.appConfig.translation.jwtAuthorizationService;\n private readonly authConfig = this.appConfig.authConfig as AuthConfig;\n private _accessToken = signal<string | null>(\n localStorage.getItem(this.authConfig.storageTokenKey)\n );\n private _refreshToken = signal<string | null>(\n localStorage.getItem(this.authConfig.storageRefreshTokenKey)\n );\n private _isAuthenticated = signal<boolean>(false);\n private _userinfo = signal<TUser | null>(null);\n private readonly router = inject(Router);\n private readonly http = inject(HttpClient);\n private readonly confirm = inject(Confirm);\n\n get accessToken() {\n const accessToken = this._accessToken();\n return accessToken;\n }\n\n set accessToken(accessToken: string | null) {\n if (accessToken) {\n localStorage.setItem(this.authConfig.storageTokenKey, accessToken);\n } else {\n localStorage.removeItem(this.authConfig.storageTokenKey);\n }\n\n this._accessToken.set(accessToken);\n }\n\n get refreshToken() {\n const refreshToken = this._refreshToken();\n return refreshToken;\n }\n\n set refreshToken(refreshToken: string | null) {\n if (refreshToken) {\n localStorage.setItem(\n this.authConfig.storageRefreshTokenKey,\n refreshToken\n );\n } else {\n localStorage.removeItem(this.authConfig.storageRefreshTokenKey);\n }\n\n this._refreshToken.set(refreshToken);\n }\n\n get isAuthenticated() {\n return this._isAuthenticated.asReadonly();\n }\n\n get userinfo() {\n return this._userinfo.asReadonly();\n }\n\n get isExpired() {\n return computed(() => {\n const accessToken = this._accessToken();\n\n if (accessToken) {\n const decodedToken = jwtDecode(accessToken);\n\n if (decodedToken) {\n const exp = new Date((decodedToken.exp ?? 0) * 1000);\n const now = new Date();\n\n return exp < now;\n }\n }\n\n return true;\n });\n }\n\n get hasToken() {\n return computed(() => !!this._accessToken());\n }\n\n constructor() {\n if (this.appConfig.authConfig) {\n this.init();\n }\n }\n\n private init() {\n effect(() => {\n const userInfo = this._userinfo();\n\n if (userInfo) {\n this.updateAuthState();\n }\n });\n\n effect(() => {\n const isAuthenticated = this.isAuthenticated();\n\n if (\n isAuthenticated &&\n (!this.authConfig.loginRoute ||\n (this.authConfig.loginRoute &&\n location.hash.includes(this.authConfig.loginRoute))) &&\n this.authConfig.homeRoute\n ) {\n this.router.navigate([this.authConfig.homeRoute]);\n }\n });\n\n effect(() => {\n const hasToken = this.hasToken();\n\n if (hasToken) {\n this.loadUserInfo();\n } else if (\n this.authConfig.loginRoute &&\n !location.hash.includes(this.authConfig.loginRoute)\n ) {\n this.router.navigate([this.authConfig.loginRoute]);\n }\n });\n }\n\n private updateAuthState() {\n this._isAuthenticated.set(\n this.hasToken() && !this.isExpired() && !!this._userinfo()\n );\n }\n\n private logoutUser() {\n localStorage.removeItem(this.authConfig.storageTokenKey);\n localStorage.removeItem(this.authConfig.storageRefreshTokenKey);\n this._userinfo.set(null);\n this._refreshToken.set(null);\n this._accessToken.set(null);\n this.updateAuthState();\n }\n\n private loadUserInfo() {\n this.http.get<TUser>(this.authConfig.userInfo.url).subscribe({\n next: (userInfo) => this._userinfo.set(userInfo),\n error: () => this.logoutUser(),\n });\n }\n\n logout(force = false) {\n if (force) {\n this.logoutUser();\n return;\n }\n\n this.confirm.open({\n message: this.translation.questionLogoutMessage,\n yesCallback: () => this.logoutUser(),\n });\n }\n\n updateToken() {\n return this.http.post<any>(this.authConfig.refreshToken.url, {}).pipe(\n tap({\n next: (response) => {\n this.accessToken =\n response[this.authConfig.refreshToken.response.accessTokenKeyName];\n this.refreshToken =\n response[this.authConfig.refreshToken.response.refreshTokenKeyName];\n this.updateAuthState();\n },\n error: () => {\n this.logout(true);\n this.router.navigate([this.authConfig.loginRoute]);\n },\n }),\n first()\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-services.mjs","sources":["../../projects/koala-ui/shared/services/authorization.ts","../../projects/koala-ui/shared/services/koalarx-ui-shared-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { AuthConfig } from '@koalarx/ui/core/models';\nimport { Confirm } from '@koalarx/ui/shared/components/confirm';\nimport { jwtDecode } from 'jwt-decode';\nimport { first } from 'rxjs/internal/operators/first';\nimport { tap } from 'rxjs/internal/operators/tap';\n\n@Injectable({ providedIn: 'root' })\nexport class Authorization<TUser = any> {\n private readonly appConfig = inject(AppConfig);\n private readonly translation =\n this.appConfig.translation.jwtAuthorizationService;\n private readonly authConfig = this.appConfig.authConfig as AuthConfig;\n private _accessToken = signal<string | null>(null);\n private _refreshToken = signal<string | null>(null);\n private _isAuthenticated = signal<boolean>(false);\n private _userinfo = signal<TUser | null>(null);\n private readonly router = inject(Router);\n private readonly http = inject(HttpClient);\n private readonly confirm = inject(Confirm);\n\n get accessToken() {\n const accessToken = this._accessToken();\n return accessToken;\n }\n\n set accessToken(accessToken: string | null) {\n if (accessToken) {\n localStorage.setItem(this.authConfig.storageTokenKey, accessToken);\n } else {\n localStorage.removeItem(this.authConfig.storageTokenKey);\n }\n\n this._accessToken.set(accessToken);\n }\n\n get refreshToken() {\n const refreshToken = this._refreshToken();\n return refreshToken;\n }\n\n set refreshToken(refreshToken: string | null) {\n if (refreshToken) {\n localStorage.setItem(\n this.authConfig.storageRefreshTokenKey,\n refreshToken\n );\n } else {\n localStorage.removeItem(this.authConfig.storageRefreshTokenKey);\n }\n\n this._refreshToken.set(refreshToken);\n }\n\n get isAuthenticated() {\n return this._isAuthenticated.asReadonly();\n }\n\n get userinfo() {\n return this._userinfo.asReadonly();\n }\n\n get isExpired() {\n return computed(() => {\n const accessToken = this._accessToken();\n\n if (accessToken) {\n const decodedToken = jwtDecode(accessToken);\n\n if (decodedToken) {\n const exp = new Date((decodedToken.exp ?? 0) * 1000);\n const now = new Date();\n\n return exp < now;\n }\n }\n\n return true;\n });\n }\n\n get hasToken() {\n return computed(() => !!this._accessToken());\n }\n\n constructor() {\n if (this.appConfig.authConfig) {\n this.init();\n }\n }\n\n private init() {\n this._accessToken.set(\n localStorage.getItem(this.authConfig.storageTokenKey)\n );\n this._refreshToken.set(\n localStorage.getItem(this.authConfig?.storageRefreshTokenKey)\n );\n\n effect(() => {\n const userInfo = this._userinfo();\n\n if (userInfo) {\n this.updateAuthState();\n }\n });\n\n effect(() => {\n const isAuthenticated = this.isAuthenticated();\n\n if (\n isAuthenticated &&\n (!this.authConfig.loginRoute ||\n (this.authConfig.loginRoute &&\n location.hash.includes(this.authConfig.loginRoute))) &&\n this.authConfig.homeRoute\n ) {\n this.router.navigate([this.authConfig.homeRoute]);\n }\n });\n\n effect(() => {\n const hasToken = this.hasToken();\n\n if (hasToken) {\n this.loadUserInfo();\n } else if (\n this.authConfig.loginRoute &&\n !location.hash.includes(this.authConfig.loginRoute)\n ) {\n this.router.navigate([this.authConfig.loginRoute]);\n }\n });\n }\n\n private updateAuthState() {\n this._isAuthenticated.set(\n this.hasToken() && !this.isExpired() && !!this._userinfo()\n );\n }\n\n private logoutUser() {\n localStorage.removeItem(this.authConfig.storageTokenKey);\n localStorage.removeItem(this.authConfig.storageRefreshTokenKey);\n this._userinfo.set(null);\n this._refreshToken.set(null);\n this._accessToken.set(null);\n this.updateAuthState();\n }\n\n private loadUserInfo() {\n this.http.get<TUser>(this.authConfig.userInfo.url).subscribe({\n next: (userInfo) => this._userinfo.set(userInfo),\n error: () => this.logoutUser(),\n });\n }\n\n logout(force = false) {\n if (force) {\n this.logoutUser();\n return;\n }\n\n this.confirm.open({\n message: this.translation.questionLogoutMessage,\n yesCallback: () => this.logoutUser(),\n });\n }\n\n updateToken() {\n return this.http.post<any>(this.authConfig.refreshToken.url, {}).pipe(\n tap({\n next: (response) => {\n this.accessToken =\n response[this.authConfig.refreshToken.response.accessTokenKeyName];\n this.refreshToken =\n response[this.authConfig.refreshToken.response.refreshTokenKeyName];\n this.updateAuthState();\n },\n error: () => {\n this.logout(true);\n this.router.navigate([this.authConfig.loginRoute]);\n },\n }),\n first()\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/fesm2022/koalarx-ui.mjs
CHANGED
|
@@ -24,7 +24,6 @@ class AuthorizationInterceptor {
|
|
|
24
24
|
return request.clone();
|
|
25
25
|
}
|
|
26
26
|
intercept(request, next) {
|
|
27
|
-
const clonedReq = this.setAuthorization(request);
|
|
28
27
|
if (this.authorization.hasToken() &&
|
|
29
28
|
this.authorization.isExpired() &&
|
|
30
29
|
!this.authConfig?.refreshToken?.url) {
|
|
@@ -32,7 +31,7 @@ class AuthorizationInterceptor {
|
|
|
32
31
|
.updateToken()
|
|
33
32
|
.pipe(switchMap(() => next.handle(this.setAuthorization(request))));
|
|
34
33
|
}
|
|
35
|
-
return next.handle(
|
|
34
|
+
return next.handle(this.setAuthorization(request));
|
|
36
35
|
}
|
|
37
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AuthorizationInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
37
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AuthorizationInterceptor });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui.mjs","sources":["../../projects/koala-ui/core/interceptors/authorization-interceptor.ts","../../projects/koala-ui/core/interceptors/feedback-request-interceptor.ts","../../projects/koala-ui/core/koala-provider.ts","../../projects/koala-ui/koalarx-ui.ts"],"sourcesContent":["import {\n HttpInterceptor as AngularHttpInterceptor,\n HttpEvent,\n HttpHandler,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Authorization } from '@koalarx/ui/shared/services';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { switchMap } from 'rxjs/internal/operators/switchMap';\n\n@Injectable()\nexport class AuthorizationInterceptor implements AngularHttpInterceptor {\n private readonly authorization = inject(Authorization);\n private readonly authConfig = inject(AppConfig).authConfig;\n\n private setAuthorization(request: HttpRequest<any>) {\n if (this.authorization.hasToken()) {\n return request.clone({\n headers: request.headers.set(\n 'Authorization',\n `Bearer ${\n request.url === this.authConfig?.refreshToken?.url\n ? this.authorization.refreshToken\n : this.authorization.accessToken\n }`\n ),\n });\n }\n\n return request.clone();\n }\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n
|
|
1
|
+
{"version":3,"file":"koalarx-ui.mjs","sources":["../../projects/koala-ui/core/interceptors/authorization-interceptor.ts","../../projects/koala-ui/core/interceptors/feedback-request-interceptor.ts","../../projects/koala-ui/core/koala-provider.ts","../../projects/koala-ui/koalarx-ui.ts"],"sourcesContent":["import {\n HttpInterceptor as AngularHttpInterceptor,\n HttpEvent,\n HttpHandler,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Authorization } from '@koalarx/ui/shared/services';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { switchMap } from 'rxjs/internal/operators/switchMap';\n\n@Injectable()\nexport class AuthorizationInterceptor implements AngularHttpInterceptor {\n private readonly authorization = inject(Authorization);\n private readonly authConfig = inject(AppConfig).authConfig;\n\n private setAuthorization(request: HttpRequest<any>) {\n if (this.authorization.hasToken()) {\n return request.clone({\n headers: request.headers.set(\n 'Authorization',\n `Bearer ${\n request.url === this.authConfig?.refreshToken?.url\n ? this.authorization.refreshToken\n : this.authorization.accessToken\n }`\n ),\n });\n }\n\n return request.clone();\n }\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n if (\n this.authorization.hasToken() &&\n this.authorization.isExpired() &&\n !this.authConfig?.refreshToken?.url\n ) {\n return this.authorization\n .updateToken()\n .pipe(switchMap(() => next.handle(this.setAuthorization(request))));\n }\n\n return next.handle(this.setAuthorization(request));\n }\n}\n","import {\n HttpInterceptor as AngularHttpInterceptor,\n HttpEvent,\n HttpHandler,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { HttpErrorFeedbackAlert } from '@koalarx/ui/shared/utils';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { tap } from 'rxjs/internal/operators/tap';\n\n@Injectable()\nexport class FeedbackRequestInterceptor implements AngularHttpInterceptor {\n private readonly httpError = inject(HttpErrorFeedbackAlert);\n\n intercept(\n request: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n return next.handle(request.clone()).pipe(\n tap({\n error: (error) => this.httpError.tapError(error),\n })\n );\n }\n}\n","import {\n HTTP_INTERCEPTORS,\n HttpClient,\n HttpInterceptor,\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { Provider, Type } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { AuthConfig } from '@koalarx/ui/core/models';\nimport {\n getTranslationByLanguage,\n KoalaLanguage,\n} from '@koalarx/ui/core/translations';\nimport { MARKED_OPTIONS, provideMarkdown } from 'ngx-markdown';\nimport { NgxMaskConfig, provideEnvironmentNgxMask } from 'ngx-mask';\nimport { AuthorizationInterceptor } from './interceptors/authorization-interceptor';\nimport { FeedbackRequestInterceptor } from './interceptors/feedback-request-interceptor';\n\nconst maskOptions: Partial<NgxMaskConfig> = {\n validation: false,\n thousandSeparator: '.',\n};\n\ninterface KoalaSettings {\n hostApi?: string;\n language?: KoalaLanguage;\n httpClientErrorsMiddleware?: HttpClientErrorsMiddleware;\n authConfig?: AuthConfig;\n authorizationInterceptor?: Type<HttpInterceptor>;\n}\n\nexport function provideKoala(config?: KoalaSettings): Provider {\n const appConfig = new AppConfig();\n\n appConfig.language = config?.language ?? 'en';\n appConfig.translation = getTranslationByLanguage(config?.language ?? 'en');\n appConfig.hostApi = config?.hostApi;\n appConfig.httpClientErrorsMiddleware = config?.httpClientErrorsMiddleware;\n appConfig.authConfig = config?.authConfig;\n\n const providers: Provider = [\n provideEnvironmentNgxMask(maskOptions),\n provideHttpClient(withInterceptorsFromDi()),\n provideMarkdown({\n loader: HttpClient,\n markedOptions: {\n provide: MARKED_OPTIONS,\n useValue: {\n gfm: true,\n breaks: true,\n pedantic: false,\n },\n },\n }),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: FeedbackRequestInterceptor,\n multi: true,\n },\n {\n provide: AppConfig,\n useValue: appConfig,\n },\n ];\n\n if (config?.authConfig) {\n providers.push({\n provide: HTTP_INTERCEPTORS,\n useClass: config?.authorizationInterceptor ?? AuthorizationInterceptor,\n multi: true,\n });\n }\n\n return providers;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpInterceptor } from '@angular/common/http';
|
|
2
|
-
import { Provider } from '@angular/core';
|
|
2
|
+
import { Type, Provider } from '@angular/core';
|
|
3
3
|
import { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';
|
|
4
4
|
import { AuthConfig } from '@koalarx/ui/core/models';
|
|
5
5
|
import { KoalaLanguage } from '@koalarx/ui/core/translations';
|
|
@@ -9,7 +9,7 @@ interface KoalaSettings {
|
|
|
9
9
|
language?: KoalaLanguage;
|
|
10
10
|
httpClientErrorsMiddleware?: HttpClientErrorsMiddleware;
|
|
11
11
|
authConfig?: AuthConfig;
|
|
12
|
-
authorizationInterceptor?: HttpInterceptor
|
|
12
|
+
authorizationInterceptor?: Type<HttpInterceptor>;
|
|
13
13
|
}
|
|
14
14
|
declare function provideKoala(config?: KoalaSettings): Provider;
|
|
15
15
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koalarx/ui",
|
|
3
|
-
"version": "20.1.
|
|
3
|
+
"version": "20.1.9",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=20.0.0",
|
|
6
6
|
"@angular/core": ">=20.0.0"
|
|
@@ -210,14 +210,14 @@
|
|
|
210
210
|
"types": "./shared/components/input-field/input-cpf/index.d.ts",
|
|
211
211
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs"
|
|
212
212
|
},
|
|
213
|
-
"./shared/components/input-field/input-date": {
|
|
214
|
-
"types": "./shared/components/input-field/input-date/index.d.ts",
|
|
215
|
-
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-date.mjs"
|
|
216
|
-
},
|
|
217
213
|
"./shared/components/input-field/input-currency": {
|
|
218
214
|
"types": "./shared/components/input-field/input-currency/index.d.ts",
|
|
219
215
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-currency.mjs"
|
|
220
216
|
},
|
|
217
|
+
"./shared/components/input-field/input-date": {
|
|
218
|
+
"types": "./shared/components/input-field/input-date/index.d.ts",
|
|
219
|
+
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-date.mjs"
|
|
220
|
+
},
|
|
221
221
|
"./shared/components/input-field/input-datetime": {
|
|
222
222
|
"types": "./shared/components/input-field/input-datetime/index.d.ts",
|
|
223
223
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-datetime.mjs"
|
|
@@ -226,14 +226,14 @@
|
|
|
226
226
|
"types": "./shared/components/input-field/input-email/index.d.ts",
|
|
227
227
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-email.mjs"
|
|
228
228
|
},
|
|
229
|
-
"./shared/components/input-field/input-password": {
|
|
230
|
-
"types": "./shared/components/input-field/input-password/index.d.ts",
|
|
231
|
-
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs"
|
|
232
|
-
},
|
|
233
229
|
"./shared/components/input-field/input-month": {
|
|
234
230
|
"types": "./shared/components/input-field/input-month/index.d.ts",
|
|
235
231
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-month.mjs"
|
|
236
232
|
},
|
|
233
|
+
"./shared/components/input-field/input-password": {
|
|
234
|
+
"types": "./shared/components/input-field/input-password/index.d.ts",
|
|
235
|
+
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs"
|
|
236
|
+
},
|
|
237
237
|
"./shared/components/input-field/input-radio": {
|
|
238
238
|
"types": "./shared/components/input-field/input-radio/index.d.ts",
|
|
239
239
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-radio.mjs"
|
|
@@ -242,14 +242,14 @@
|
|
|
242
242
|
"types": "./shared/components/input-field/input-text/index.d.ts",
|
|
243
243
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-text.mjs"
|
|
244
244
|
},
|
|
245
|
-
"./shared/components/input-field/input-url": {
|
|
246
|
-
"types": "./shared/components/input-field/input-url/index.d.ts",
|
|
247
|
-
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs"
|
|
248
|
-
},
|
|
249
245
|
"./shared/components/input-field/input-time": {
|
|
250
246
|
"types": "./shared/components/input-field/input-time/index.d.ts",
|
|
251
247
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-time.mjs"
|
|
252
248
|
},
|
|
249
|
+
"./shared/components/input-field/input-url": {
|
|
250
|
+
"types": "./shared/components/input-field/input-url/index.d.ts",
|
|
251
|
+
"default": "./fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs"
|
|
252
|
+
},
|
|
253
253
|
"./shared/components/input-field/select": {
|
|
254
254
|
"types": "./shared/components/input-field/select/index.d.ts",
|
|
255
255
|
"default": "./fesm2022/koalarx-ui-shared-components-input-field-select.mjs"
|