@koalarx/ui 20.0.7 → 20.0.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/base/index.d.ts +1 -0
- package/core/config/index.d.ts +16 -4
- package/fesm2022/koalarx-ui-core-base.mjs +2 -1
- package/fesm2022/koalarx-ui-core-base.mjs.map +1 -1
- package/fesm2022/koalarx-ui-core-config.mjs +39 -4
- package/fesm2022/koalarx-ui-core-config.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-code-viewer.mjs +2 -2
- package/fesm2022/koalarx-ui-shared-components-code-viewer.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-confirm.mjs +1 -1
- package/fesm2022/koalarx-ui-shared-components-confirm.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-datatable.mjs +2 -2
- package/fesm2022/koalarx-ui-shared-components-datatable.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-field-errors.mjs +2 -2
- package/fesm2022/koalarx-ui-shared-components-field-errors.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-input-field-input-cnpj.mjs +3 -3
- package/fesm2022/koalarx-ui-shared-components-input-field-input-cnpj.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs +3 -3
- package/fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs +3 -3
- package/fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs +2 -2
- package/fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-components-on-this-page.mjs +1 -1
- package/fesm2022/koalarx-ui-shared-components-on-this-page.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-directives.mjs +2 -1
- package/fesm2022/koalarx-ui-shared-directives.mjs.map +1 -1
- package/fesm2022/koalarx-ui-shared-utils.mjs +9 -8
- package/fesm2022/koalarx-ui-shared-utils.mjs.map +1 -1
- package/fesm2022/koalarx-ui.mjs +46 -9
- package/fesm2022/koalarx-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/shared/directives/index.d.ts +1 -0
- package/shared/utils/index.d.ts +1 -2
package/core/base/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ interface HttpResourceRequestOptions<EntityType> {
|
|
|
15
15
|
declare abstract class HttpBase<EntityType = any, PayloadType = any, QueryType = any> {
|
|
16
16
|
protected readonly resource: string;
|
|
17
17
|
protected readonly hostApi: string | undefined;
|
|
18
|
+
private readonly appConfig;
|
|
18
19
|
protected readonly injector: Injector;
|
|
19
20
|
protected readonly http: HttpClient;
|
|
20
21
|
protected readonly url: string;
|
package/core/config/index.d.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';
|
|
2
2
|
import { KoalaLanguage, Translation } from '@koalarx/ui/core/translations';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
3
4
|
|
|
4
5
|
declare const GENERIC_COMPONENT_CONTAINER_NAME = ".kl-generic-component-container";
|
|
6
|
+
|
|
5
7
|
declare class AppConfig {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
private _hostApi;
|
|
9
|
+
private _language;
|
|
10
|
+
private _translation;
|
|
11
|
+
private _httpClientErrorsMiddleware;
|
|
12
|
+
set hostApi(hostApi: string | undefined);
|
|
13
|
+
get hostApi(): string | undefined;
|
|
14
|
+
set language(language: KoalaLanguage | undefined);
|
|
15
|
+
get language(): KoalaLanguage | undefined;
|
|
16
|
+
set translation(translation: Translation | undefined);
|
|
17
|
+
get translation(): Translation;
|
|
18
|
+
set httpClientErrorsMiddleware(httpClientErrorsMiddleware: HttpClientErrorsMiddleware | undefined);
|
|
19
|
+
get httpClientErrorsMiddleware(): HttpClientErrorsMiddleware | undefined;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppConfig, never>;
|
|
21
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AppConfig>;
|
|
10
22
|
}
|
|
11
23
|
|
|
12
24
|
export { AppConfig, GENERIC_COMPONENT_CONTAINER_NAME };
|
|
@@ -9,10 +9,11 @@ import { map } from 'rxjs/internal/operators/map';
|
|
|
9
9
|
class HttpBase {
|
|
10
10
|
resource;
|
|
11
11
|
hostApi;
|
|
12
|
+
appConfig = inject(AppConfig);
|
|
12
13
|
injector = inject(Injector);
|
|
13
14
|
http = inject(HttpClient);
|
|
14
15
|
url;
|
|
15
|
-
constructor(resource, hostApi =
|
|
16
|
+
constructor(resource, hostApi = this.appConfig.hostApi) {
|
|
16
17
|
this.resource = resource;
|
|
17
18
|
this.hostApi = hostApi;
|
|
18
19
|
this.url = `${this.hostApi}/${this.resource}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-core-base.mjs","sources":["../../projects/koala-ui/core/base/http-base.ts","../../projects/koala-ui/core/base/list-base.ts","../../projects/koala-ui/core/base/page-base.ts","../../projects/koala-ui/core/base/koalarx-ui-core-base.ts"],"sourcesContent":["import { HttpClient, httpResource } from '@angular/common/http';\nimport { inject, Injector, Signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { GetManyResult } from '@koalarx/ui/core/models';\nimport { AutocompleteOption } from '@koalarx/ui/shared/components/input-field/autocomplete';\nimport { SelectOption } from '@koalarx/ui/shared/components/input-field/select';\nimport { first } from 'rxjs/internal/operators/first';\nimport { map } from 'rxjs/internal/operators/map';\n\nexport interface HttpResourceRequestOptions<EntityType> {\n debounceTime?: number;\n endpoint?: string;\n mapOption?: (\n item: any\n ) => Omit<\n | AutocompleteOption<EntityType>\n | SelectOption<EntityType>\n | GetManyResult<EntityType>,\n 'data'\n >;\n}\n\nexport abstract class HttpBase<\n EntityType = any,\n PayloadType = any,\n QueryType = any\n> {\n protected readonly injector = inject(Injector);\n protected readonly http = inject(HttpClient);\n protected readonly url: string;\n\n constructor(\n protected readonly resource: string,\n protected readonly hostApi = AppConfig.hostApi\n ) {\n this.url = `${this.hostApi}/${this.resource}`;\n }\n\n post<T>(data: PayloadType, endpoint = '') {\n return this.http.post<T>(`${this.url}${endpoint}`, data).pipe(first());\n }\n\n put<T>(id: string, data: PayloadType) {\n return this.http.put<T>(`${this.url}/${id}`, data).pipe(first());\n }\n\n patch<T>(id: string, data: any) {\n return this.http.patch<T>(`${this.url}/${id}`, data).pipe(first());\n }\n\n delete<T>(id: string) {\n return this.http.delete<T>(`${this.url}/${id}`).pipe(first());\n }\n\n getMany<TResponse = EntityType>(query: QueryType, endpoint = '') {\n return this.http.get<GetManyResult<TResponse>>(`${this.url}${endpoint}`, {\n params: query as any,\n });\n }\n\n getById<TResponse = EntityType>(id: string | null) {\n return this.http.get<TResponse>(`${this.url}/${id}`);\n }\n\n getManyWithResource<TResponse = EntityType>(\n query: Signal<QueryType>,\n {\n endpoint = '',\n mapOption,\n }: Omit<HttpResourceRequestOptions<TResponse>, 'debounceTime'> = {}\n ) {\n return httpResource<GetManyResult<TResponse>>(\n () => {\n return {\n url: `${this.url}${endpoint}`,\n params: query() as any,\n };\n },\n {\n parse: mapOption as (data: any) => any,\n }\n );\n }\n\n getByIdWithResource<TResponse = EntityType>(\n id: Signal<string | null>,\n endpoint = ':id',\n mapResponse?: (response: TResponse) => TResponse\n ) {\n return httpResource<TResponse>(\n () => {\n const resourceId = id();\n\n if (!resourceId) {\n return undefined;\n }\n\n return `${this.url}/${endpoint.replace(':id', resourceId)}`;\n },\n {\n parse: mapResponse as (resume: any) => TResponse,\n }\n );\n }\n\n getByOneWithResource<TResponse = EntityType>(\n endpoint: Signal<string | null>,\n params?: Signal<any>,\n mapResponse?: (response: TResponse) => TResponse\n ) {\n return httpResource<TResponse>(\n () => {\n const resourceUrl = endpoint();\n\n if (!resourceUrl) {\n return undefined;\n }\n\n return {\n url: `${this.url}/${resourceUrl}`,\n params: params ? params() : undefined,\n };\n },\n {\n parse: mapResponse as (resume: any) => TResponse,\n }\n );\n }\n\n getManyForSelector<TResponse = EntityType>(\n query: QueryType | Signal<QueryType>,\n mapOption: (\n item: TResponse\n ) => Omit<AutocompleteOption<TResponse> | SelectOption<TResponse>, 'data'>\n ) {\n return rxResource({\n defaultValue: [],\n params: () => (query instanceof Function ? query() : query),\n stream: (data) =>\n this.getMany<TResponse>(data.params).pipe(\n map((response) =>\n response.items.map((item) => ({\n ...mapOption(item),\n data: item,\n }))\n )\n ),\n });\n }\n}\n","import { HttpResourceRef } from '@angular/common/http';\nimport {\n computed,\n Directive,\n effect,\n inject,\n input,\n signal,\n Type,\n} from '@angular/core';\nimport {\n GetManyResult,\n QueryPagination,\n SortFilterType,\n} from '@koalarx/ui/core/models';\nimport { HttpBase } from './http-base';\n\n@Directive()\nexport abstract class ListBase<\n QueryType extends QueryPagination,\n TEntity = any\n> {\n protected readonly resourceRef: HttpResourceRef<\n GetManyResult<TEntity> | undefined\n >;\n protected readonly limitPage = signal(30);\n protected readonly page = signal(1);\n protected readonly filter = signal<QueryType>({} as any);\n protected readonly resource: HttpBase<TEntity, any, QueryType>;\n protected readonly totalItemsOnPage = signal(0);\n protected readonly totalItems = signal(0);\n protected readonly list = signal<TEntity[]>([]);\n protected readonly sortFilter = signal<SortFilterType | null>(null);\n\n queryParams = computed<QueryType>(\n () =>\n ({\n page: this.page(),\n limit: this.limitPage(),\n ...(this.sortFilter() ?? {}),\n ...this.filter(),\n } as QueryType)\n );\n reload = input<boolean>(false);\n\n constructor(\n // eslint-disable-next-line @angular-eslint/prefer-inject\n resource: Type<HttpBase<TEntity, any, QueryType>>,\n // eslint-disable-next-line @angular-eslint/prefer-inject\n protected readonly componentFilter?: Type<any>\n ) {\n this.resource = inject(resource);\n this.resourceRef = this.resource.getManyWithResource(this.queryParams);\n\n effect(() => {\n const result = this.resourceRef.value();\n\n if (!result) {\n return;\n }\n\n this.list.set(result.items);\n this.totalItemsOnPage.set(result.items.length);\n this.totalItems.set(result.count);\n });\n\n effect(() => {\n if (this.reload()) {\n this.reloadList();\n }\n });\n }\n\n protected sort(sortFilter: SortFilterType) {\n this.sortFilter.set(sortFilter);\n }\n\n protected reloadList() {\n this.resourceRef.reload();\n }\n}\n","import { signal } from '@angular/core';\n\nexport abstract class PageBase {\n protected reload = signal(false);\n\n protected reloadList() {\n this.reload.set(true);\n setTimeout(() => this.reload.set(false));\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-core-base.mjs","sources":["../../projects/koala-ui/core/base/http-base.ts","../../projects/koala-ui/core/base/list-base.ts","../../projects/koala-ui/core/base/page-base.ts","../../projects/koala-ui/core/base/koalarx-ui-core-base.ts"],"sourcesContent":["import { HttpClient, httpResource } from '@angular/common/http';\nimport { inject, Injector, Signal } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { GetManyResult } from '@koalarx/ui/core/models';\nimport { AutocompleteOption } from '@koalarx/ui/shared/components/input-field/autocomplete';\nimport { SelectOption } from '@koalarx/ui/shared/components/input-field/select';\nimport { first } from 'rxjs/internal/operators/first';\nimport { map } from 'rxjs/internal/operators/map';\n\nexport interface HttpResourceRequestOptions<EntityType> {\n debounceTime?: number;\n endpoint?: string;\n mapOption?: (\n item: any\n ) => Omit<\n | AutocompleteOption<EntityType>\n | SelectOption<EntityType>\n | GetManyResult<EntityType>,\n 'data'\n >;\n}\n\nexport abstract class HttpBase<\n EntityType = any,\n PayloadType = any,\n QueryType = any\n> {\n private readonly appConfig = inject(AppConfig);\n protected readonly injector = inject(Injector);\n protected readonly http = inject(HttpClient);\n protected readonly url: string;\n\n constructor(\n protected readonly resource: string,\n protected readonly hostApi = this.appConfig.hostApi\n ) {\n this.url = `${this.hostApi}/${this.resource}`;\n }\n\n post<T>(data: PayloadType, endpoint = '') {\n return this.http.post<T>(`${this.url}${endpoint}`, data).pipe(first());\n }\n\n put<T>(id: string, data: PayloadType) {\n return this.http.put<T>(`${this.url}/${id}`, data).pipe(first());\n }\n\n patch<T>(id: string, data: any) {\n return this.http.patch<T>(`${this.url}/${id}`, data).pipe(first());\n }\n\n delete<T>(id: string) {\n return this.http.delete<T>(`${this.url}/${id}`).pipe(first());\n }\n\n getMany<TResponse = EntityType>(query: QueryType, endpoint = '') {\n return this.http.get<GetManyResult<TResponse>>(`${this.url}${endpoint}`, {\n params: query as any,\n });\n }\n\n getById<TResponse = EntityType>(id: string | null) {\n return this.http.get<TResponse>(`${this.url}/${id}`);\n }\n\n getManyWithResource<TResponse = EntityType>(\n query: Signal<QueryType>,\n {\n endpoint = '',\n mapOption,\n }: Omit<HttpResourceRequestOptions<TResponse>, 'debounceTime'> = {}\n ) {\n return httpResource<GetManyResult<TResponse>>(\n () => {\n return {\n url: `${this.url}${endpoint}`,\n params: query() as any,\n };\n },\n {\n parse: mapOption as (data: any) => any,\n }\n );\n }\n\n getByIdWithResource<TResponse = EntityType>(\n id: Signal<string | null>,\n endpoint = ':id',\n mapResponse?: (response: TResponse) => TResponse\n ) {\n return httpResource<TResponse>(\n () => {\n const resourceId = id();\n\n if (!resourceId) {\n return undefined;\n }\n\n return `${this.url}/${endpoint.replace(':id', resourceId)}`;\n },\n {\n parse: mapResponse as (resume: any) => TResponse,\n }\n );\n }\n\n getByOneWithResource<TResponse = EntityType>(\n endpoint: Signal<string | null>,\n params?: Signal<any>,\n mapResponse?: (response: TResponse) => TResponse\n ) {\n return httpResource<TResponse>(\n () => {\n const resourceUrl = endpoint();\n\n if (!resourceUrl) {\n return undefined;\n }\n\n return {\n url: `${this.url}/${resourceUrl}`,\n params: params ? params() : undefined,\n };\n },\n {\n parse: mapResponse as (resume: any) => TResponse,\n }\n );\n }\n\n getManyForSelector<TResponse = EntityType>(\n query: QueryType | Signal<QueryType>,\n mapOption: (\n item: TResponse\n ) => Omit<AutocompleteOption<TResponse> | SelectOption<TResponse>, 'data'>\n ) {\n return rxResource({\n defaultValue: [],\n params: () => (query instanceof Function ? query() : query),\n stream: (data) =>\n this.getMany<TResponse>(data.params).pipe(\n map((response) =>\n response.items.map((item) => ({\n ...mapOption(item),\n data: item,\n }))\n )\n ),\n });\n }\n}\n","import { HttpResourceRef } from '@angular/common/http';\nimport {\n computed,\n Directive,\n effect,\n inject,\n input,\n signal,\n Type,\n} from '@angular/core';\nimport {\n GetManyResult,\n QueryPagination,\n SortFilterType,\n} from '@koalarx/ui/core/models';\nimport { HttpBase } from './http-base';\n\n@Directive()\nexport abstract class ListBase<\n QueryType extends QueryPagination,\n TEntity = any\n> {\n protected readonly resourceRef: HttpResourceRef<\n GetManyResult<TEntity> | undefined\n >;\n protected readonly limitPage = signal(30);\n protected readonly page = signal(1);\n protected readonly filter = signal<QueryType>({} as any);\n protected readonly resource: HttpBase<TEntity, any, QueryType>;\n protected readonly totalItemsOnPage = signal(0);\n protected readonly totalItems = signal(0);\n protected readonly list = signal<TEntity[]>([]);\n protected readonly sortFilter = signal<SortFilterType | null>(null);\n\n queryParams = computed<QueryType>(\n () =>\n ({\n page: this.page(),\n limit: this.limitPage(),\n ...(this.sortFilter() ?? {}),\n ...this.filter(),\n } as QueryType)\n );\n reload = input<boolean>(false);\n\n constructor(\n // eslint-disable-next-line @angular-eslint/prefer-inject\n resource: Type<HttpBase<TEntity, any, QueryType>>,\n // eslint-disable-next-line @angular-eslint/prefer-inject\n protected readonly componentFilter?: Type<any>\n ) {\n this.resource = inject(resource);\n this.resourceRef = this.resource.getManyWithResource(this.queryParams);\n\n effect(() => {\n const result = this.resourceRef.value();\n\n if (!result) {\n return;\n }\n\n this.list.set(result.items);\n this.totalItemsOnPage.set(result.items.length);\n this.totalItems.set(result.count);\n });\n\n effect(() => {\n if (this.reload()) {\n this.reloadList();\n }\n });\n }\n\n protected sort(sortFilter: SortFilterType) {\n this.sortFilter.set(sortFilter);\n }\n\n protected reloadList() {\n this.resourceRef.reload();\n }\n}\n","import { signal } from '@angular/core';\n\nexport abstract class PageBase {\n protected reload = signal(false);\n\n protected reloadList() {\n this.reload.set(true);\n setTimeout(() => this.reload.set(false));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,45 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { en } from '@koalarx/ui/core/translations';
|
|
4
|
+
|
|
1
5
|
const GENERIC_COMPONENT_CONTAINER_NAME = '.kl-generic-component-container';
|
|
6
|
+
|
|
2
7
|
class AppConfig {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
_hostApi;
|
|
9
|
+
_language;
|
|
10
|
+
_translation;
|
|
11
|
+
_httpClientErrorsMiddleware;
|
|
12
|
+
set hostApi(hostApi) {
|
|
13
|
+
this._hostApi = hostApi;
|
|
14
|
+
}
|
|
15
|
+
get hostApi() {
|
|
16
|
+
return this._hostApi;
|
|
17
|
+
}
|
|
18
|
+
set language(language) {
|
|
19
|
+
this._language = language;
|
|
20
|
+
}
|
|
21
|
+
get language() {
|
|
22
|
+
return this._language;
|
|
23
|
+
}
|
|
24
|
+
set translation(translation) {
|
|
25
|
+
this._translation = translation;
|
|
26
|
+
}
|
|
27
|
+
get translation() {
|
|
28
|
+
return this._translation ?? en;
|
|
29
|
+
}
|
|
30
|
+
set httpClientErrorsMiddleware(httpClientErrorsMiddleware) {
|
|
31
|
+
this._httpClientErrorsMiddleware = httpClientErrorsMiddleware;
|
|
32
|
+
}
|
|
33
|
+
get httpClientErrorsMiddleware() {
|
|
34
|
+
return this._httpClientErrorsMiddleware;
|
|
35
|
+
}
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppConfig, providedIn: 'root' });
|
|
7
38
|
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppConfig, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{ providedIn: 'root' }]
|
|
42
|
+
}] });
|
|
8
43
|
|
|
9
44
|
/**
|
|
10
45
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-core-config.mjs","sources":["../../projects/koala-ui/core/config/constants.ts","../../projects/koala-ui/core/config/koalarx-ui-core-config.ts"],"sourcesContent":["import { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { KoalaLanguage, Translation } from '@koalarx/ui/core/translations';\n\nexport
|
|
1
|
+
{"version":3,"file":"koalarx-ui-core-config.mjs","sources":["../../projects/koala-ui/core/config/constants.ts","../../projects/koala-ui/core/config/app-config.ts","../../projects/koala-ui/core/config/koalarx-ui-core-config.ts"],"sourcesContent":["export const GENERIC_COMPONENT_CONTAINER_NAME =\n '.kl-generic-component-container';\n","import { Injectable } from '@angular/core';\nimport { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { KoalaLanguage, Translation, en } from '@koalarx/ui/core/translations';\n\n@Injectable({ providedIn: 'root' })\nexport class AppConfig {\n private _hostApi: string | undefined;\n private _language: KoalaLanguage | undefined;\n private _translation: Translation | undefined;\n private _httpClientErrorsMiddleware: HttpClientErrorsMiddleware | undefined;\n\n set hostApi(hostApi: string | undefined) {\n this._hostApi = hostApi;\n }\n\n get hostApi(): string | undefined {\n return this._hostApi;\n }\n\n set language(language: KoalaLanguage | undefined) {\n this._language = language;\n }\n\n get language(): KoalaLanguage | undefined {\n return this._language;\n }\n\n set translation(translation: Translation | undefined) {\n this._translation = translation;\n }\n\n get translation(): Translation {\n return this._translation ?? en;\n }\n\n set httpClientErrorsMiddleware(\n httpClientErrorsMiddleware: HttpClientErrorsMiddleware | undefined\n ) {\n this._httpClientErrorsMiddleware = httpClientErrorsMiddleware;\n }\n\n get httpClientErrorsMiddleware(): HttpClientErrorsMiddleware | undefined {\n return this._httpClientErrorsMiddleware;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAO,MAAM,gCAAgC,GAC3C;;MCIW,SAAS,CAAA;AACZ,IAAA,QAAQ;AACR,IAAA,SAAS;AACT,IAAA,YAAY;AACZ,IAAA,2BAA2B;IAEnC,IAAI,OAAO,CAAC,OAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;AAGzB,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAGtB,IAAI,QAAQ,CAAC,QAAmC,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;;AAG3B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAGvB,IAAI,WAAW,CAAC,WAAoC,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;;AAGjC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,EAAE;;IAGhC,IAAI,0BAA0B,CAC5B,0BAAkE,EAAA;AAElE,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B;;AAG/D,IAAA,IAAI,0BAA0B,GAAA;QAC5B,OAAO,IAAI,CAAC,2BAA2B;;uGArC9B,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADI,MAAM,EAAA,CAAA;;2FACnB,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACJlC;;AAEG;;;;"}
|
|
@@ -7,14 +7,14 @@ import 'prismjs/components/prism-typescript';
|
|
|
7
7
|
import 'prismjs/plugins/line-highlight/prism-line-highlight';
|
|
8
8
|
import 'prismjs/plugins/line-numbers/prism-line-numbers';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { signal, input, booleanAttribute, linkedSignal, Component } from '@angular/core';
|
|
10
|
+
import { inject, signal, input, booleanAttribute, linkedSignal, Component } from '@angular/core';
|
|
11
11
|
import { AppConfig } from '@koalarx/ui/core/config';
|
|
12
12
|
import { Tooltip } from '@koalarx/ui/shared/directives';
|
|
13
13
|
import * as i1 from 'ngx-markdown';
|
|
14
14
|
import { MarkdownModule } from 'ngx-markdown';
|
|
15
15
|
|
|
16
16
|
class CodeViewer {
|
|
17
|
-
translations = AppConfig.translation.codeViewer;
|
|
17
|
+
translations = inject(AppConfig).translation.codeViewer;
|
|
18
18
|
copied = signal(false);
|
|
19
19
|
content = signal('');
|
|
20
20
|
name = input.required();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-code-viewer.mjs","sources":["../../projects/koala-ui/shared/components/code-viewer/code-viewer.ts","../../projects/koala-ui/shared/components/code-viewer/code-viewer.html","../../projects/koala-ui/shared/components/code-viewer/koalarx-ui-shared-components-code-viewer.ts"],"sourcesContent":["import 'prismjs/prism';\n\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/plugins/line-highlight/prism-line-highlight';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport {\n booleanAttribute,\n Component,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { MarkdownModule } from 'ngx-markdown';\n\nexport type CodeViewerLanguage =\n | 'bash'\n | 'typescript'\n | 'html'\n | 'css'\n | 'json'\n | 'other';\n\nexport interface CodeViewerConfig {\n label: string;\n code?: string;\n language?: CodeViewerLanguage;\n src?: string;\n checked?: boolean;\n lineHighlight?: string;\n}\n\n@Component({\n selector: 'kl-code-viewer',\n templateUrl: './code-viewer.html',\n imports: [MarkdownModule, Tooltip],\n})\nexport class CodeViewer {\n readonly translations = AppConfig.translation.codeViewer;\n\n copied = signal(false);\n content = signal<string>('');\n\n name = input.required<string>();\n src = input.required<string>();\n language = input<CodeViewerLanguage>('other');\n lineHighlight = input<string>();\n lineNumbers = input(false, { transform: booleanAttribute });\n\n icon = linkedSignal(() => {\n const language = this.language();\n\n if (language) {\n switch (language) {\n case 'bash':\n return 'fa-solid fa-terminal p-1 text-[0.5rem]';\n case 'typescript':\n return 'fa-brands fa-angular py-0 px-[0.2rem] text-[1rem]';\n case 'html':\n return 'fa-brands fa-html5 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'css':\n return 'fa-brands fa-css3 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'json':\n return 'fa-regular fa-file-code py-[0.1rem] px-[0.2rem] text-[1rem]';\n }\n }\n\n return 'fa-solid fa-code';\n });\n\n clipboard(event: any) {\n this.content.set(event.replace(/^[^\\n]*\\n?/, '').replace(/`/g, ''));\n }\n\n copyCode() {\n const code = this.content();\n\n if (code) {\n navigator.clipboard.writeText(code).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n });\n }\n }\n}\n","<div class=\"relative rounded-xl bg-neutral-900 border border-base-300 mt-5 overflow-hidden\">\n <div class=\"flex items-center justify-between p-3\">\n <span class=\"flex items-center gap-2\">\n <i class=\"bg-neutral-400 text-neutral-950 rounded-sm\"\n [class]=\"icon()\">\n </i>\n <span class=\"text-neutral-500\">{{ name() }}</span>\n </span>\n\n <button class=\"hover:cursor-pointer px-2 text-md text-neutral-500 hover:text-neutral-300 hover:bg-neutral-800 rounded-sm\"\n type=\"button\"\n [tooltip]=\"copied()\n ? translations.copiedToClipboard\n : translations.copyToClipboard\"\n tooltipPosition=\"left\"\n (click)=\"copyCode()\">\n\n @if (copied()) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i class=\"fa-regular fa-clipboard\"></i>\n }\n </button>\n </div>\n\n <markdown\n [src]=\"src()\"\n [disableSanitizer]=\"true\"\n [lineNumbers]=\"lineNumbers()\"\n lineHighlight\n [line]=\"lineHighlight()\"\n (load)=\"clipboard($event)\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-code-viewer.mjs","sources":["../../projects/koala-ui/shared/components/code-viewer/code-viewer.ts","../../projects/koala-ui/shared/components/code-viewer/code-viewer.html","../../projects/koala-ui/shared/components/code-viewer/koalarx-ui-shared-components-code-viewer.ts"],"sourcesContent":["import 'prismjs/prism';\n\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/plugins/line-highlight/prism-line-highlight';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport {\n booleanAttribute,\n Component,\n inject,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { MarkdownModule } from 'ngx-markdown';\n\nexport type CodeViewerLanguage =\n | 'bash'\n | 'typescript'\n | 'html'\n | 'css'\n | 'json'\n | 'other';\n\nexport interface CodeViewerConfig {\n label: string;\n code?: string;\n language?: CodeViewerLanguage;\n src?: string;\n checked?: boolean;\n lineHighlight?: string;\n}\n\n@Component({\n selector: 'kl-code-viewer',\n templateUrl: './code-viewer.html',\n imports: [MarkdownModule, Tooltip],\n})\nexport class CodeViewer {\n readonly translations = inject(AppConfig).translation.codeViewer;\n\n copied = signal(false);\n content = signal<string>('');\n\n name = input.required<string>();\n src = input.required<string>();\n language = input<CodeViewerLanguage>('other');\n lineHighlight = input<string>();\n lineNumbers = input(false, { transform: booleanAttribute });\n\n icon = linkedSignal(() => {\n const language = this.language();\n\n if (language) {\n switch (language) {\n case 'bash':\n return 'fa-solid fa-terminal p-1 text-[0.5rem]';\n case 'typescript':\n return 'fa-brands fa-angular py-0 px-[0.2rem] text-[1rem]';\n case 'html':\n return 'fa-brands fa-html5 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'css':\n return 'fa-brands fa-css3 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'json':\n return 'fa-regular fa-file-code py-[0.1rem] px-[0.2rem] text-[1rem]';\n }\n }\n\n return 'fa-solid fa-code';\n });\n\n clipboard(event: any) {\n this.content.set(event.replace(/^[^\\n]*\\n?/, '').replace(/`/g, ''));\n }\n\n copyCode() {\n const code = this.content();\n\n if (code) {\n navigator.clipboard.writeText(code).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n });\n }\n }\n}\n","<div class=\"relative rounded-xl bg-neutral-900 border border-base-300 mt-5 overflow-hidden\">\n <div class=\"flex items-center justify-between p-3\">\n <span class=\"flex items-center gap-2\">\n <i class=\"bg-neutral-400 text-neutral-950 rounded-sm\"\n [class]=\"icon()\">\n </i>\n <span class=\"text-neutral-500\">{{ name() }}</span>\n </span>\n\n <button class=\"hover:cursor-pointer px-2 text-md text-neutral-500 hover:text-neutral-300 hover:bg-neutral-800 rounded-sm\"\n type=\"button\"\n [tooltip]=\"copied()\n ? translations.copiedToClipboard\n : translations.copyToClipboard\"\n tooltipPosition=\"left\"\n (click)=\"copyCode()\">\n\n @if (copied()) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i class=\"fa-regular fa-clipboard\"></i>\n }\n </button>\n </div>\n\n <markdown\n [src]=\"src()\"\n [disableSanitizer]=\"true\"\n [lineNumbers]=\"lineNumbers()\"\n lineHighlight\n [line]=\"lineHighlight()\"\n (load)=\"clipboard($event)\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { DialogRef, DIALOG_DATA, DialogContent, Dialog } from '@koalarx/ui/share
|
|
|
5
5
|
import { Button } from '@koalarx/ui/shared/directives';
|
|
6
6
|
|
|
7
7
|
class ConfirmContent {
|
|
8
|
-
translations = AppConfig.translation.confirm;
|
|
8
|
+
translations = inject(AppConfig).translation.confirm;
|
|
9
9
|
dialogRef = inject(DialogRef);
|
|
10
10
|
message = inject(DIALOG_DATA);
|
|
11
11
|
close(type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-confirm.mjs","sources":["../../projects/koala-ui/shared/components/confirm/confirm-content.ts","../../projects/koala-ui/shared/components/confirm/confirm-content.html","../../projects/koala-ui/shared/components/confirm/confirm.ts","../../projects/koala-ui/shared/components/confirm/koalarx-ui-shared-components-confirm.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport {\n DIALOG_DATA,\n DialogContent,\n DialogRef,\n} from '@koalarx/ui/shared/components/dialog';\nimport { Button } from '@koalarx/ui/shared/directives';\n\n@Component({\n selector: 'kl-confirm-content',\n templateUrl: './confirm-content.html',\n imports: [DialogContent, Button],\n})\nexport class ConfirmContent {\n readonly translations = AppConfig.translation.confirm;\n private readonly dialogRef = inject(DialogRef);\n\n message = inject<string>(DIALOG_DATA);\n\n close(type: 'yes' | 'no') {\n this.dialogRef.dismiss({ type });\n }\n}\n","<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">Tem certeza de que deseja continuar?</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-1 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"primary\" (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n","import { inject, Injectable } from '@angular/core';\nimport { Dialog } from '@koalarx/ui/shared/components/dialog';\nimport { ConfirmContent } from './confirm-content';\n\nexport interface ConfirmConfig {\n message: string;\n yesCallback?: () => void;\n noCallback?: () => void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Confirm {\n private readonly dialog = inject(Dialog);\n\n open(config: ConfirmConfig) {\n this.dialog.open(ConfirmContent, {\n data: config.message,\n afterClosed: {\n trigger: {},\n callback: (confirm: { type: 'yes' | 'no' }) => {\n if (confirm.type === 'yes' && config.yesCallback) {\n config.yesCallback();\n } else if (confirm.type === 'no' && config.noCallback) {\n config.noCallback();\n }\n },\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAca,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-confirm.mjs","sources":["../../projects/koala-ui/shared/components/confirm/confirm-content.ts","../../projects/koala-ui/shared/components/confirm/confirm-content.html","../../projects/koala-ui/shared/components/confirm/confirm.ts","../../projects/koala-ui/shared/components/confirm/koalarx-ui-shared-components-confirm.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport {\n DIALOG_DATA,\n DialogContent,\n DialogRef,\n} from '@koalarx/ui/shared/components/dialog';\nimport { Button } from '@koalarx/ui/shared/directives';\n\n@Component({\n selector: 'kl-confirm-content',\n templateUrl: './confirm-content.html',\n imports: [DialogContent, Button],\n})\nexport class ConfirmContent {\n readonly translations = inject(AppConfig).translation.confirm;\n private readonly dialogRef = inject(DialogRef);\n\n message = inject<string>(DIALOG_DATA);\n\n close(type: 'yes' | 'no') {\n this.dialogRef.dismiss({ type });\n }\n}\n","<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">Tem certeza de que deseja continuar?</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-1 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"primary\" (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n","import { inject, Injectable } from '@angular/core';\nimport { Dialog } from '@koalarx/ui/shared/components/dialog';\nimport { ConfirmContent } from './confirm-content';\n\nexport interface ConfirmConfig {\n message: string;\n yesCallback?: () => void;\n noCallback?: () => void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Confirm {\n private readonly dialog = inject(Dialog);\n\n open(config: ConfirmConfig) {\n this.dialog.open(ConfirmContent, {\n data: config.message,\n afterClosed: {\n trigger: {},\n callback: (confirm: { type: 'yes' | 'no' }) => {\n if (confirm.type === 'yes' && config.yesCallback) {\n config.yesCallback();\n } else if (confirm.type === 'no' && config.noCallback) {\n config.noCallback();\n }\n },\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAca,cAAc,CAAA;IAChB,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,OAAO;AAC5C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAE9C,IAAA,OAAO,GAAG,MAAM,CAAS,WAAW,CAAC;AAErC,IAAA,KAAK,CAAC,IAAkB,EAAA;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;;uGAPvB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,ECd3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qgBAeA,EDHY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,8DAAE,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAErB,OAAA,EAAA,CAAC,aAAa,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,qgBAAA,EAAA;;;MEDrB,OAAO,CAAA;AACD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAExC,IAAA,IAAI,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,OAAO;AACpB,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,QAAQ,EAAE,CAAC,OAA+B,KAAI;oBAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE;wBAChD,MAAM,CAAC,WAAW,EAAE;;yBACf,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;wBACrD,MAAM,CAAC,UAAU,EAAE;;iBAEtB;AACF,aAAA;AACF,SAAA,CAAC;;uGAhBO,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cADM,MAAM,EAAA,CAAA;;2FACnB,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVlC;;AAEG;;;;"}
|
|
@@ -171,7 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
171
171
|
}] });
|
|
172
172
|
|
|
173
173
|
class Filter {
|
|
174
|
-
translations = AppConfig.translation.datatable;
|
|
174
|
+
translations = inject(AppConfig).translation.datatable;
|
|
175
175
|
datatableFilter = inject(DatatableFilter);
|
|
176
176
|
filter = input([]);
|
|
177
177
|
payload = output();
|
|
@@ -193,7 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
193
193
|
|
|
194
194
|
class Datatable {
|
|
195
195
|
sideWindow = inject(SideWindow);
|
|
196
|
-
translations = AppConfig.translation.datatable;
|
|
196
|
+
translations = inject(AppConfig).translation.datatable;
|
|
197
197
|
currentPage = input.required();
|
|
198
198
|
totalItems = input.required();
|
|
199
199
|
totalItemsOnPage = input.required();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-datatable.mjs","sources":["../../projects/koala-ui/shared/components/datatable/sort-column/ordered-column.state.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.html","../../projects/koala-ui/shared/components/datatable/sort-column/sorted-item.ts","../../projects/koala-ui/shared/components/datatable/filter/datatable-filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter-factory.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.html","../../projects/koala-ui/shared/components/datatable/datatable.ts","../../projects/koala-ui/shared/components/datatable/datatable.html","../../projects/koala-ui/shared/components/datatable/koalarx-ui-shared-components-datatable.ts"],"sourcesContent":["import { SortHeaderColumn } from './sort-header-column';\r\n\r\nexport class OrderedColumnState {\r\n static current?: SortHeaderColumn;\r\n}\r\n","import {\n Component,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n QueryPaginationDirection,\n SortFilterType,\n} from '@koalarx/ui/core/models';\nimport { OrderedColumnState } from './ordered-column.state';\n\n@Component({\n selector: 'kl-sort-header-column',\n templateUrl: './sort-header-column.html',\n})\nexport class SortHeaderColumn {\n orderBy = input.required<string>();\n style = input('');\n defaultDirection = input<QueryPaginationDirection>();\n sortable = output<SortFilterType>();\n elOrderedColumn =\n viewChild<ElementRef<HTMLTableCellElement>>('orderedColumn');\n direction = signal<QueryPaginationDirection | null>(null);\n\n constructor() {\n effect(() => {\n const defaultDirection = this.defaultDirection();\n\n if (defaultDirection) {\n this.direction.set(defaultDirection);\n OrderedColumnState.current = this;\n this.toogleColumnStateOrder('set');\n }\n });\n }\n\n sort() {\n this.direction.update((current) => {\n if (\n OrderedColumnState.current &&\n OrderedColumnState.current.orderBy !== this.orderBy\n ) {\n OrderedColumnState.current.direction.set(null);\n OrderedColumnState.current.toogleColumnStateOrder('unset');\n }\n\n OrderedColumnState.current = this;\n\n let direction: QueryPaginationDirection;\n\n switch (current) {\n case 'asc':\n direction = 'desc';\n break;\n case 'desc':\n default:\n direction = 'asc';\n }\n\n this.toogleColumnStateOrder('set');\n\n this.sortable.emit({\n orderBy: this.orderBy(),\n direction,\n });\n\n return direction;\n });\n }\n\n async toogleColumnStateOrder(state: 'set' | 'unset') {\n const columnElement = this.elOrderedColumn()?.nativeElement.parentElement;\n\n if (!columnElement) {\n return;\n }\n\n if (state === 'set') {\n columnElement.classList.add('ordered-column');\n } else {\n columnElement.classList.remove('ordered-column');\n }\n }\n}\n","<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { SortFilterType } from '@koalarx/ui/core/models';\n\n@Directive({ selector: 'td[klSortedItem]' })\nexport class SortedItem {\n private readonly elementRef = inject<ElementRef<HTMLTableCellElement>>(\n ElementRef<HTMLTableCellElement>\n );\n\n klSortedItem = input.required<SortFilterType | null>();\n sortedPropName = input.required<string>();\n\n constructor() {\n effect(() => {\n const isSorted = this.klSortedItem()?.orderBy === this.sortedPropName();\n\n this.elementRef.nativeElement.classList.toggle('sorted', isSorted);\n\n if (isSorted) {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'ascending');\n } else {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'descending');\n }\n });\n }\n}\n","import { effect, Injectable, signal } from '@angular/core';\n\nexport interface FilterData {\n templateValue: string;\n propName: string;\n value: any;\n}\n\n@Injectable()\nexport class DatatableFilter {\n private readonly _payload = signal<Record<string, any>>({});\n private readonly _filters = signal<FilterData[]>([]);\n\n constructor() {\n effect(() => {\n const filters = this._filters();\n\n filters.forEach((filter) => {\n this._payload.update((current) => {\n return {\n ...current,\n [filter.propName]: filter.value,\n };\n });\n });\n });\n }\n\n get payload() {\n return this._payload.asReadonly();\n }\n\n get filters() {\n return this._filters.asReadonly();\n }\n\n setFilters(filters: FilterData[]) {\n this._filters.set(filters);\n }\n\n removeFilter(propName: string) {\n this._filters.update((current) => {\n return current.filter((filter) => filter.propName !== propName);\n });\n }\n\n clearFilters() {\n this._filters.set([]);\n this._payload.set({});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilterData } from './datatable-filter';\n\n@Injectable()\nexport class FilterFactory {\n private readonly _filter: FilterData[] = [];\n\n get filter() {\n return [...this._filter];\n }\n\n setFilters<T>(\n filter: T,\n templateNameFn: (propName: keyof typeof filter, value: any) => string\n ) {\n const filterData = filter as Record<string, any>;\n\n Object.keys(filterData).forEach((propName) => {\n const value = filterData[propName];\n\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n const templateValue = templateNameFn(propName as any, value);\n this.addFilter({ templateValue, propName, value });\n });\n\n return this._filter;\n }\n\n addFilter(filter: FilterData) {\n this._filter.push(filter);\n }\n\n toPayload(data: FilterData[]): Record<string, any> {\n return data.reduce((acc, curr) => {\n acc[curr.propName] = curr.value;\n return acc;\n }, {} as Record<string, any>);\n }\n}\n","import { Component, effect, inject, input, output } from '@angular/core';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { DatatableFilter, FilterData } from './datatable-filter';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\n@Component({\n selector: 'kl-filter',\n templateUrl: './filter.html',\n providers: [DatatableFilter],\n imports: [Tooltip],\n})\nexport class Filter {\n readonly translations = AppConfig.translation.datatable;\n\n datatableFilter = inject(DatatableFilter);\n filter = input<FilterData[]>([]);\n payload = output<Record<string, any>>();\n addFilter = output<FilterData[]>();\n\n constructor() {\n effect(() => this.datatableFilter.setFilters(this.filter()));\n effect(() => this.payload.emit(this.datatableFilter.payload()));\n }\n\n add() {\n this.addFilter.emit(this.datatableFilter.filters());\n }\n}\n","@if (datatableFilter.filters().length > 0) {\n <div class=\"p-2 pr-8 pl-8 border-b border-gray-200 dark:border-gray-700 w-full flex items-center gap-3 text-gray-500 dark:text-gray-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n </button>\n\n <div class=\"flex items-center gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-ghost text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus\"></i>\n </button>\n </div>\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Type,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { SideWindow } from '@koalarx/ui/shared/components/side-window';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { FilterData } from './filter/datatable-filter';\nimport { Filter } from './filter/filter';\n\n@Component({\n selector: 'kl-datatable',\n templateUrl: './datatable.html',\n imports: [FormsModule, Filter, Tooltip],\n})\nexport class Datatable {\n private readonly sideWindow = inject(SideWindow);\n\n readonly translations = AppConfig.translation.datatable;\n\n currentPage = input.required<number>();\n totalItems = input.required<number>();\n totalItemsOnPage = input.required<number>();\n currentPageSize = input.required<number>();\n isLoading = input.required();\n colspan = input.required<number>();\n componentFilter = input<Type<any>>();\n withPaginator = input(false, { transform: booleanAttribute });\n filter = signal<FilterData[]>([]);\n pageSize = model<number>(0);\n pageSizes = [10, 20, 30, 50, 100];\n\n skeletonRows = computed(() => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n skeletonCols = computed(() => {\n return Array.from({ length: this.colspan() }, (_, i) => i);\n });\n\n paginator = computed(() => {\n const isLoading = this.isLoading();\n const paginator: number[] = [];\n\n if (!isLoading) {\n const firstPage = 1;\n const previousPage = this.currentPage() - 1;\n const currentPage = this.currentPage();\n const nextPage = this.currentPage() + 1;\n const lastPage = Math.ceil(this.totalItems() / this.currentPageSize());\n\n if (firstPage < currentPage) {\n paginator.push(firstPage);\n }\n\n if (previousPage > firstPage) {\n paginator.push(previousPage);\n }\n\n paginator.push(currentPage);\n\n if (nextPage < lastPage) {\n paginator.push(nextPage);\n }\n\n if (lastPage > currentPage) {\n paginator.push(lastPage);\n }\n }\n\n return paginator;\n });\n\n pageChange = output<number>();\n pageSizeChange = output<number>();\n filterChange = output<Record<string, any>>();\n reloadList = output<void>();\n\n constructor() {\n effect(() => this.pageSize.set(this.currentPageSize()));\n effect(() => this.pageSizeChange.emit(this.pageSize()));\n effect(() => this.pageChange.emit(this.currentPage()));\n }\n\n openFilter(data?: FilterData[]) {\n const component = this.componentFilter();\n\n if (!component) {\n return;\n }\n\n this.sideWindow.open(component, {\n data,\n afterClosed: {\n trigger: [],\n callback: (filters: FilterData[]) => this.filter.set(filters),\n },\n });\n }\n}\n","<div class=\"flex flex-col h-full\">\n <div class=\"pr-8 pl-1 pt-0 pb-0 border-b border-gray-200 dark:border-gray-700 w-full flex items-center justify-between z-10\">\n <div class=\"flex items-center gap-2 p-2 opacity-80\">\n <button class=\"btn btn-circle btn-ghost btn-xs text-sm\"\n [tooltip]=\"translations.reloadListTooltip\"\n tooltipPosition=\"right\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n </button>\n\n <ng-content select=\"[menu]\" />\n\n <span class=\"relative top-[-0.10rem] pl-1 opacity-60\">|</span>\n\n @if (componentFilter()) {\n <button class=\"btn btn-ghost btn-xs text-sm\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-[1.5rem] w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n />\n\n <div class=\"overflow-x-auto h-full\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n } @else {\n <ng-content select=\"[body]\" />\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 border-t border-gray-200 dark:border-gray-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-[1.5rem]\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"paginator()[0] === currentPage()\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n «\n </button>\n\n @for (page of paginator(); track $index) {\n <button class=\"join-item btn btn-sm\"\n [class.btn-disabled]=\"page === currentPage()\"\n (click)=\"pageChange.emit(page)\">\n {{page}}\n </button>\n }\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"paginator()[paginator().length - 1] === currentPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n »\n </button>\n </div>\n </div>\n }\n</div>\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-components-datatable.mjs","sources":["../../projects/koala-ui/shared/components/datatable/sort-column/ordered-column.state.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.html","../../projects/koala-ui/shared/components/datatable/sort-column/sorted-item.ts","../../projects/koala-ui/shared/components/datatable/filter/datatable-filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter-factory.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.html","../../projects/koala-ui/shared/components/datatable/datatable.ts","../../projects/koala-ui/shared/components/datatable/datatable.html","../../projects/koala-ui/shared/components/datatable/koalarx-ui-shared-components-datatable.ts"],"sourcesContent":["import { SortHeaderColumn } from './sort-header-column';\r\n\r\nexport class OrderedColumnState {\r\n static current?: SortHeaderColumn;\r\n}\r\n","import {\n Component,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n QueryPaginationDirection,\n SortFilterType,\n} from '@koalarx/ui/core/models';\nimport { OrderedColumnState } from './ordered-column.state';\n\n@Component({\n selector: 'kl-sort-header-column',\n templateUrl: './sort-header-column.html',\n})\nexport class SortHeaderColumn {\n orderBy = input.required<string>();\n style = input('');\n defaultDirection = input<QueryPaginationDirection>();\n sortable = output<SortFilterType>();\n elOrderedColumn =\n viewChild<ElementRef<HTMLTableCellElement>>('orderedColumn');\n direction = signal<QueryPaginationDirection | null>(null);\n\n constructor() {\n effect(() => {\n const defaultDirection = this.defaultDirection();\n\n if (defaultDirection) {\n this.direction.set(defaultDirection);\n OrderedColumnState.current = this;\n this.toogleColumnStateOrder('set');\n }\n });\n }\n\n sort() {\n this.direction.update((current) => {\n if (\n OrderedColumnState.current &&\n OrderedColumnState.current.orderBy !== this.orderBy\n ) {\n OrderedColumnState.current.direction.set(null);\n OrderedColumnState.current.toogleColumnStateOrder('unset');\n }\n\n OrderedColumnState.current = this;\n\n let direction: QueryPaginationDirection;\n\n switch (current) {\n case 'asc':\n direction = 'desc';\n break;\n case 'desc':\n default:\n direction = 'asc';\n }\n\n this.toogleColumnStateOrder('set');\n\n this.sortable.emit({\n orderBy: this.orderBy(),\n direction,\n });\n\n return direction;\n });\n }\n\n async toogleColumnStateOrder(state: 'set' | 'unset') {\n const columnElement = this.elOrderedColumn()?.nativeElement.parentElement;\n\n if (!columnElement) {\n return;\n }\n\n if (state === 'set') {\n columnElement.classList.add('ordered-column');\n } else {\n columnElement.classList.remove('ordered-column');\n }\n }\n}\n","<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { SortFilterType } from '@koalarx/ui/core/models';\n\n@Directive({ selector: 'td[klSortedItem]' })\nexport class SortedItem {\n private readonly elementRef = inject<ElementRef<HTMLTableCellElement>>(\n ElementRef<HTMLTableCellElement>\n );\n\n klSortedItem = input.required<SortFilterType | null>();\n sortedPropName = input.required<string>();\n\n constructor() {\n effect(() => {\n const isSorted = this.klSortedItem()?.orderBy === this.sortedPropName();\n\n this.elementRef.nativeElement.classList.toggle('sorted', isSorted);\n\n if (isSorted) {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'ascending');\n } else {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'descending');\n }\n });\n }\n}\n","import { effect, Injectable, signal } from '@angular/core';\n\nexport interface FilterData {\n templateValue: string;\n propName: string;\n value: any;\n}\n\n@Injectable()\nexport class DatatableFilter {\n private readonly _payload = signal<Record<string, any>>({});\n private readonly _filters = signal<FilterData[]>([]);\n\n constructor() {\n effect(() => {\n const filters = this._filters();\n\n filters.forEach((filter) => {\n this._payload.update((current) => {\n return {\n ...current,\n [filter.propName]: filter.value,\n };\n });\n });\n });\n }\n\n get payload() {\n return this._payload.asReadonly();\n }\n\n get filters() {\n return this._filters.asReadonly();\n }\n\n setFilters(filters: FilterData[]) {\n this._filters.set(filters);\n }\n\n removeFilter(propName: string) {\n this._filters.update((current) => {\n return current.filter((filter) => filter.propName !== propName);\n });\n }\n\n clearFilters() {\n this._filters.set([]);\n this._payload.set({});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilterData } from './datatable-filter';\n\n@Injectable()\nexport class FilterFactory {\n private readonly _filter: FilterData[] = [];\n\n get filter() {\n return [...this._filter];\n }\n\n setFilters<T>(\n filter: T,\n templateNameFn: (propName: keyof typeof filter, value: any) => string\n ) {\n const filterData = filter as Record<string, any>;\n\n Object.keys(filterData).forEach((propName) => {\n const value = filterData[propName];\n\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n const templateValue = templateNameFn(propName as any, value);\n this.addFilter({ templateValue, propName, value });\n });\n\n return this._filter;\n }\n\n addFilter(filter: FilterData) {\n this._filter.push(filter);\n }\n\n toPayload(data: FilterData[]): Record<string, any> {\n return data.reduce((acc, curr) => {\n acc[curr.propName] = curr.value;\n return acc;\n }, {} as Record<string, any>);\n }\n}\n","import { Component, effect, inject, input, output } from '@angular/core';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { DatatableFilter, FilterData } from './datatable-filter';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\n@Component({\n selector: 'kl-filter',\n templateUrl: './filter.html',\n providers: [DatatableFilter],\n imports: [Tooltip],\n})\nexport class Filter {\n readonly translations = inject(AppConfig).translation.datatable;\n\n datatableFilter = inject(DatatableFilter);\n filter = input<FilterData[]>([]);\n payload = output<Record<string, any>>();\n addFilter = output<FilterData[]>();\n\n constructor() {\n effect(() => this.datatableFilter.setFilters(this.filter()));\n effect(() => this.payload.emit(this.datatableFilter.payload()));\n }\n\n add() {\n this.addFilter.emit(this.datatableFilter.filters());\n }\n}\n","@if (datatableFilter.filters().length > 0) {\n <div class=\"p-2 pr-8 pl-8 border-b border-gray-200 dark:border-gray-700 w-full flex items-center gap-3 text-gray-500 dark:text-gray-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n </button>\n\n <div class=\"flex items-center gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-ghost text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus\"></i>\n </button>\n </div>\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Type,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { SideWindow } from '@koalarx/ui/shared/components/side-window';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { FilterData } from './filter/datatable-filter';\nimport { Filter } from './filter/filter';\n\n@Component({\n selector: 'kl-datatable',\n templateUrl: './datatable.html',\n imports: [FormsModule, Filter, Tooltip],\n})\nexport class Datatable {\n private readonly sideWindow = inject(SideWindow);\n\n readonly translations = inject(AppConfig).translation.datatable;\n\n currentPage = input.required<number>();\n totalItems = input.required<number>();\n totalItemsOnPage = input.required<number>();\n currentPageSize = input.required<number>();\n isLoading = input.required();\n colspan = input.required<number>();\n componentFilter = input<Type<any>>();\n withPaginator = input(false, { transform: booleanAttribute });\n filter = signal<FilterData[]>([]);\n pageSize = model<number>(0);\n pageSizes = [10, 20, 30, 50, 100];\n\n skeletonRows = computed(() => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n skeletonCols = computed(() => {\n return Array.from({ length: this.colspan() }, (_, i) => i);\n });\n\n paginator = computed(() => {\n const isLoading = this.isLoading();\n const paginator: number[] = [];\n\n if (!isLoading) {\n const firstPage = 1;\n const previousPage = this.currentPage() - 1;\n const currentPage = this.currentPage();\n const nextPage = this.currentPage() + 1;\n const lastPage = Math.ceil(this.totalItems() / this.currentPageSize());\n\n if (firstPage < currentPage) {\n paginator.push(firstPage);\n }\n\n if (previousPage > firstPage) {\n paginator.push(previousPage);\n }\n\n paginator.push(currentPage);\n\n if (nextPage < lastPage) {\n paginator.push(nextPage);\n }\n\n if (lastPage > currentPage) {\n paginator.push(lastPage);\n }\n }\n\n return paginator;\n });\n\n pageChange = output<number>();\n pageSizeChange = output<number>();\n filterChange = output<Record<string, any>>();\n reloadList = output<void>();\n\n constructor() {\n effect(() => this.pageSize.set(this.currentPageSize()));\n effect(() => this.pageSizeChange.emit(this.pageSize()));\n effect(() => this.pageChange.emit(this.currentPage()));\n }\n\n openFilter(data?: FilterData[]) {\n const component = this.componentFilter();\n\n if (!component) {\n return;\n }\n\n this.sideWindow.open(component, {\n data,\n afterClosed: {\n trigger: [],\n callback: (filters: FilterData[]) => this.filter.set(filters),\n },\n });\n }\n}\n","<div class=\"flex flex-col h-full\">\n <div class=\"pr-8 pl-1 pt-0 pb-0 border-b border-gray-200 dark:border-gray-700 w-full flex items-center justify-between z-10\">\n <div class=\"flex items-center gap-2 p-2 opacity-80\">\n <button class=\"btn btn-circle btn-ghost btn-xs text-sm\"\n [tooltip]=\"translations.reloadListTooltip\"\n tooltipPosition=\"right\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n </button>\n\n <ng-content select=\"[menu]\" />\n\n <span class=\"relative top-[-0.10rem] pl-1 opacity-60\">|</span>\n\n @if (componentFilter()) {\n <button class=\"btn btn-ghost btn-xs text-sm\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-[1.5rem] w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n />\n\n <div class=\"overflow-x-auto h-full\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n } @else {\n <ng-content select=\"[body]\" />\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 border-t border-gray-200 dark:border-gray-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-[1.5rem]\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"paginator()[0] === currentPage()\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n «\n </button>\n\n @for (page of paginator(); track $index) {\n <button class=\"join-item btn btn-sm\"\n [class.btn-disabled]=\"page === currentPage()\"\n (click)=\"pageChange.emit(page)\">\n {{page}}\n </button>\n }\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"paginator()[paginator().length - 1] === currentPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n »\n </button>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, Component } from '@angular/core';
|
|
2
|
+
import { inject, input, Component } from '@angular/core';
|
|
3
3
|
import { AppConfig } from '@koalarx/ui/core/config';
|
|
4
4
|
|
|
5
5
|
class FieldErrors {
|
|
6
|
-
translations = AppConfig.translation.form;
|
|
6
|
+
translations = inject(AppConfig).translation.form;
|
|
7
7
|
field = input.required();
|
|
8
8
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: FieldErrors, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
9
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: FieldErrors, isStandalone: true, selector: "kl-field-errors", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (field().errors && field().touched) {\n <p class=\"validator-hint show mb-1.5\">\n <ng-content select=\"[errors]\" />\n\n @if (field().errors?.['required']) {\n {{translations.required}}<br/>\n }\n\n @if (field().errors?.['email']) {\n {{translations.invalidEmail}}<br/>\n }\n\n @if (field().errors?.['minlength']) {\n {{translations.invalidMinLength(field().errors?.['minlength'].requiredLength)}}<br/>\n }\n </p>\n}\n" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-field-errors.mjs","sources":["../../projects/koala-ui/shared/components/field-errors/field-errors.ts","../../projects/koala-ui/shared/components/field-errors/field-errors.html","../../projects/koala-ui/shared/components/field-errors/koalarx-ui-shared-components-field-errors.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\n@Component({\n selector: 'kl-field-errors',\n templateUrl: './field-errors.html',\n})\nexport class FieldErrors {\n readonly translations = AppConfig.translation.form;\n field = input.required<FormControl>();\n}\n","@if (field().errors && field().touched) {\n <p class=\"validator-hint show mb-1.5\">\n <ng-content select=\"[errors]\" />\n\n @if (field().errors?.['required']) {\n {{translations.required}}<br/>\n }\n\n @if (field().errors?.['email']) {\n {{translations.invalidEmail}}<br/>\n }\n\n @if (field().errors?.['minlength']) {\n {{translations.invalidMinLength(field().errors?.['minlength'].requiredLength)}}<br/>\n }\n </p>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAQa,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-field-errors.mjs","sources":["../../projects/koala-ui/shared/components/field-errors/field-errors.ts","../../projects/koala-ui/shared/components/field-errors/field-errors.html","../../projects/koala-ui/shared/components/field-errors/koalarx-ui-shared-components-field-errors.ts"],"sourcesContent":["import { Component, inject, input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\n@Component({\n selector: 'kl-field-errors',\n templateUrl: './field-errors.html',\n})\nexport class FieldErrors {\n readonly translations = inject(AppConfig).translation.form;\n field = input.required<FormControl>();\n}\n","@if (field().errors && field().touched) {\n <p class=\"validator-hint show mb-1.5\">\n <ng-content select=\"[errors]\" />\n\n @if (field().errors?.['required']) {\n {{translations.required}}<br/>\n }\n\n @if (field().errors?.['email']) {\n {{translations.invalidEmail}}<br/>\n }\n\n @if (field().errors?.['minlength']) {\n {{translations.invalidMinLength(field().errors?.['minlength'].requiredLength)}}<br/>\n }\n </p>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAQa,WAAW,CAAA;IACb,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI;AAC1D,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAe;uGAF1B,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,8MCRxB,+cAiBA,EAAA,CAAA;;2FDTa,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+cAAA,EAAA;;;AEL7B;;AAEG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { validateCnpj } from '@koalarx/utils/KlString';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { effect, Component } from '@angular/core';
|
|
3
|
+
import { inject, effect, Component } from '@angular/core';
|
|
4
|
+
import { AppConfig } from '@koalarx/ui/core/config';
|
|
4
5
|
import { InputFieldBase } from '@koalarx/ui/shared/components/input-field';
|
|
5
6
|
import { InputText } from '@koalarx/ui/shared/components/input-field/input-text';
|
|
6
|
-
import { AppConfig } from '@koalarx/ui/core/config';
|
|
7
7
|
|
|
8
8
|
function CNPJValidator(control) {
|
|
9
9
|
if (control.value && !validateCnpj(control.value)) {
|
|
@@ -13,7 +13,7 @@ function CNPJValidator(control) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
class InputCnpj extends InputFieldBase {
|
|
16
|
-
translations = AppConfig.translation.form;
|
|
16
|
+
translations = inject(AppConfig).translation.form;
|
|
17
17
|
constructor() {
|
|
18
18
|
super();
|
|
19
19
|
effect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-cnpj.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-cnpj/cnpj.validator.ts","../../projects/koala-ui/shared/components/input-field/input-cnpj/input-cnpj.ts","../../projects/koala-ui/shared/components/input-field/input-cnpj/input-cnpj.html","../../projects/koala-ui/shared/components/input-field/input-cnpj/koalarx-ui-shared-components-input-field-input-cnpj.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\r\nimport { validateCnpj } from '@koalarx/utils/KlString';\r\n\r\nexport function CNPJValidator(control: AbstractControl) {\r\n if (control.value && !validateCnpj(control.value)) {\r\n return { cnpjInvalid: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import { Component, effect } from '@angular/core';\nimport { InputFieldBase } from '@koalarx/ui/shared/components/input-field';\nimport { InputText } from '@koalarx/ui/shared/components/input-field/input-text';\nimport { CNPJValidator } from './cnpj.validator';\
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-cnpj.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-cnpj/cnpj.validator.ts","../../projects/koala-ui/shared/components/input-field/input-cnpj/input-cnpj.ts","../../projects/koala-ui/shared/components/input-field/input-cnpj/input-cnpj.html","../../projects/koala-ui/shared/components/input-field/input-cnpj/koalarx-ui-shared-components-input-field-input-cnpj.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\r\nimport { validateCnpj } from '@koalarx/utils/KlString';\r\n\r\nexport function CNPJValidator(control: AbstractControl) {\r\n if (control.value && !validateCnpj(control.value)) {\r\n return { cnpjInvalid: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import { Component, effect, inject } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { InputFieldBase } from '@koalarx/ui/shared/components/input-field';\nimport { InputText } from '@koalarx/ui/shared/components/input-field/input-text';\nimport { CNPJValidator } from './cnpj.validator';\n\n@Component({\n selector: 'kl-input-cnpj',\n templateUrl: './input-cnpj.html',\n imports: [InputText],\n})\nexport class InputCnpj extends InputFieldBase {\n readonly translations = inject(AppConfig).translation.form;\n\n constructor() {\n super();\n\n effect(() => {\n const control = this.control();\n\n control.addValidators(CNPJValidator);\n });\n }\n}\n","<kl-input-text\n [control]=\"control()\"\n [label]=\"label()\"\n mask=\"AA.AAA.AAA/AAAA-AA\">\n\n <ng-container errors>\n @if (control().errors?.['cnpjInvalid']) {\n <div class=\"error-message\">{{ translations.invalidCNPJ }}</div>\n }\n </ng-container>\n</kl-input-text>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAGM,SAAU,aAAa,CAAC,OAAwB,EAAA;AACpD,IAAA,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjD,QAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE;;AAG9B,IAAA,OAAO,IAAI;AACb;;ACEM,MAAO,SAAU,SAAQ,cAAc,CAAA;IAClC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI;AAE1D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,YAAA,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;AACtC,SAAC,CAAC;;uGAVO,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXtB,mSAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFY,SAAS,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAER,SAAS,EAAA,UAAA,EAAA,CAAA;kBALrB,SAAS;+BACE,eAAe,EAAA,OAAA,EAEhB,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,mSAAA,EAAA;;;AETtB;;AAEG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { validateCpf } from '@koalarx/utils/KlString';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { effect, Component } from '@angular/core';
|
|
3
|
+
import { inject, effect, Component } from '@angular/core';
|
|
4
|
+
import { AppConfig } from '@koalarx/ui/core/config';
|
|
4
5
|
import { InputFieldBase } from '@koalarx/ui/shared/components/input-field';
|
|
5
6
|
import { InputText } from '@koalarx/ui/shared/components/input-field/input-text';
|
|
6
|
-
import { AppConfig } from '@koalarx/ui/core/config';
|
|
7
7
|
|
|
8
8
|
function CPFValidator(control) {
|
|
9
9
|
if (control.value && !validateCpf(control.value)) {
|
|
@@ -13,7 +13,7 @@ function CPFValidator(control) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
class InputCpf extends InputFieldBase {
|
|
16
|
-
translations = AppConfig.translation.form;
|
|
16
|
+
translations = inject(AppConfig).translation.form;
|
|
17
17
|
constructor() {
|
|
18
18
|
super();
|
|
19
19
|
effect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-cpf.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-cpf/cpf.validator.ts","../../projects/koala-ui/shared/components/input-field/input-cpf/input-cpf.ts","../../projects/koala-ui/shared/components/input-field/input-cpf/input-cpf.html","../../projects/koala-ui/shared/components/input-field/input-cpf/koalarx-ui-shared-components-input-field-input-cpf.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\r\nimport { validateCpf } from '@koalarx/utils/KlString';\r\n\r\nexport function CPFValidator(control: AbstractControl) {\r\n if (control.value && !validateCpf(control.value)) {\r\n return { cpfInvalid: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import { Component, effect } from '@angular/core';\nimport { InputFieldBase } from '@koalarx/ui/shared/components/input-field';\nimport { InputText } from '@koalarx/ui/shared/components/input-field/input-text';\nimport { CPFValidator } from './cpf.validator';\
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-cpf.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-cpf/cpf.validator.ts","../../projects/koala-ui/shared/components/input-field/input-cpf/input-cpf.ts","../../projects/koala-ui/shared/components/input-field/input-cpf/input-cpf.html","../../projects/koala-ui/shared/components/input-field/input-cpf/koalarx-ui-shared-components-input-field-input-cpf.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\r\nimport { validateCpf } from '@koalarx/utils/KlString';\r\n\r\nexport function CPFValidator(control: AbstractControl) {\r\n if (control.value && !validateCpf(control.value)) {\r\n return { cpfInvalid: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import { Component, effect, inject } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { InputFieldBase } from '@koalarx/ui/shared/components/input-field';\nimport { InputText } from '@koalarx/ui/shared/components/input-field/input-text';\nimport { CPFValidator } from './cpf.validator';\n\n@Component({\n selector: 'kl-input-cpf',\n templateUrl: './input-cpf.html',\n imports: [InputText],\n})\nexport class InputCpf extends InputFieldBase {\n readonly translations = inject(AppConfig).translation.form;\n\n constructor() {\n super();\n\n effect(() => {\n const control = this.control();\n\n control.addValidators(CPFValidator);\n });\n }\n}\n","<kl-input-text\n [control]=\"control()\"\n [label]=\"label()\"\n mask=\"000.000.000-00\">\n\n <ng-container errors>\n @if (control().errors?.['cpfInvalid']) {\n <div class=\"error-message\">{{ translations.invalidCPF }}</div>\n }\n </ng-container>\n</kl-input-text>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAGM,SAAU,YAAY,CAAC,OAAwB,EAAA;AACnD,IAAA,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,QAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;;AAG7B,IAAA,OAAO,IAAI;AACb;;ACEM,MAAO,QAAS,SAAQ,cAAc,CAAA;IACjC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI;AAE1D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,YAAA,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC;AACrC,SAAC,CAAC;;uGAVO,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXrB,6RAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFY,SAAS,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAER,QAAQ,EAAA,UAAA,EAAA,CAAA;kBALpB,SAAS;+BACE,cAAc,EAAA,OAAA,EAEf,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,6RAAA,EAAA;;;AETtB;;AAEG;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, input, booleanAttribute, Component } from '@angular/core';
|
|
2
|
+
import { inject, signal, input, booleanAttribute, Component } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { Validators, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { AppConfig } from '@koalarx/ui/core/config';
|
|
5
6
|
import { FieldErrors } from '@koalarx/ui/shared/components/field-errors';
|
|
6
7
|
import { InputFieldBase } from '@koalarx/ui/shared/components/input-field';
|
|
7
|
-
import { AppConfig } from '@koalarx/ui/core/config';
|
|
8
8
|
|
|
9
9
|
function HasLowercaseValidator(control) {
|
|
10
10
|
if (!/[a-z]/.test(control.value)) {
|
|
@@ -35,7 +35,7 @@ function HasUppercaseValidator(control) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
class InputPassword extends InputFieldBase {
|
|
38
|
-
translations = AppConfig.translation.form;
|
|
38
|
+
translations = inject(AppConfig).translation.form;
|
|
39
39
|
type = signal('password');
|
|
40
40
|
enableStrongPasswordCheck = input(false, { transform: booleanAttribute });
|
|
41
41
|
togglePasswordVisibility() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-password.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-password/has-lowercase-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/has-number-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/has-special-characters-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/has-uppercase-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/input-password.ts","../../projects/koala-ui/shared/components/input-field/input-password/input-password.html","../../projects/koala-ui/shared/components/input-field/input-password/koalarx-ui-shared-components-input-field-input-password.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\n\nexport function HasLowercaseValidator(control: AbstractControl) {\n if (!/[a-z]/.test(control.value)) {\n return { hasLowercase: true };\n }\n\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function HasNumberValidator(control: AbstractControl) {\n if (!/\\d/.test(control.value)) {\n return { hasNumber: true };\n }\n\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function HasSpecialCharactersValidator(control: AbstractControl) {\n if (!/[ `!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/.test(control.value)) {\n return { hasSpecialCharacters: true };\n }\n\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function HasUppercaseValidator(control: AbstractControl) {\n if (!/[A-Z]/.test(control.value)) {\n return { hasUppercase: true };\n }\n\n return null;\n}\n","import {\n booleanAttribute,\n Component,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FieldErrors } from '@koalarx/ui/shared/components/field-errors';\nimport { InputFieldBase } from '@koalarx/ui/shared/components/input-field';\nimport { HasLowercaseValidator } from './has-lowercase-validator';\nimport { HasNumberValidator } from './has-number-validator';\nimport { HasSpecialCharactersValidator } from './has-special-characters-validator';\nimport { HasUppercaseValidator } from './has-uppercase-validator';\
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-password.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-password/has-lowercase-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/has-number-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/has-special-characters-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/has-uppercase-validator.ts","../../projects/koala-ui/shared/components/input-field/input-password/input-password.ts","../../projects/koala-ui/shared/components/input-field/input-password/input-password.html","../../projects/koala-ui/shared/components/input-field/input-password/koalarx-ui-shared-components-input-field-input-password.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\n\nexport function HasLowercaseValidator(control: AbstractControl) {\n if (!/[a-z]/.test(control.value)) {\n return { hasLowercase: true };\n }\n\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function HasNumberValidator(control: AbstractControl) {\n if (!/\\d/.test(control.value)) {\n return { hasNumber: true };\n }\n\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function HasSpecialCharactersValidator(control: AbstractControl) {\n if (!/[ `!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/.test(control.value)) {\n return { hasSpecialCharacters: true };\n }\n\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n\nexport function HasUppercaseValidator(control: AbstractControl) {\n if (!/[A-Z]/.test(control.value)) {\n return { hasUppercase: true };\n }\n\n return null;\n}\n","import {\n booleanAttribute,\n Component,\n inject,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { FieldErrors } from '@koalarx/ui/shared/components/field-errors';\nimport { InputFieldBase } from '@koalarx/ui/shared/components/input-field';\nimport { HasLowercaseValidator } from './has-lowercase-validator';\nimport { HasNumberValidator } from './has-number-validator';\nimport { HasSpecialCharactersValidator } from './has-special-characters-validator';\nimport { HasUppercaseValidator } from './has-uppercase-validator';\n\ntype InputPasswordType = 'password' | 'text';\n\n@Component({\n selector: 'kl-input-password',\n templateUrl: './input-password.html',\n imports: [ReactiveFormsModule, FieldErrors],\n})\nexport class InputPassword extends InputFieldBase implements OnInit {\n readonly translations = inject(AppConfig).translation.form;\n\n type = signal<InputPasswordType>('password');\n enableStrongPasswordCheck = input(false, { transform: booleanAttribute });\n\n togglePasswordVisibility() {\n this.type.set(this.type() === 'password' ? 'text' : 'password');\n }\n\n ngOnInit(): void {\n if (this.enableStrongPasswordCheck()) {\n this.control().addValidators([\n HasSpecialCharactersValidator,\n HasLowercaseValidator,\n HasUppercaseValidator,\n HasNumberValidator,\n Validators.minLength(8),\n ]);\n }\n }\n}\n","<label [attr.for]=\"fieldId\" class=\"floating-label input validator w-full\">\n @if (label(); as label) {\n <span class=\"label\">\n <ng-content select=\"[icon]\" />\n {{ label }} {{ isRequired() ? '*' : '' }}\n </span>\n }\n\n <input\n [id]=\"fieldId\"\n [formControl]=\"control()\"\n [placeholder]=\"label() + (isRequired() ? ' *' : '')\"\n [required]=\"isRequired()\"\n [type]=\"type()\"\n />\n\n <button class=\"cursor-pointer\" type=\"button\" (click)=\"togglePasswordVisibility()\">\n @if (type() === 'password') {\n <i class=\"fa-regular fa-eye-slash\"></i>\n } @else {\n <i class=\"fa-regular fa-eye\"></i>\n }\n </button>\n</label>\n\n<kl-field-errors [field]=\"control()\">\n <ng-container errors>\n @if (control().errors?.['hasSpecialCharacters']) {\n {{translations.invalidPasswordHasSpecialCharacters}}<br/>\n }\n\n @if (control().errors?.['hasUppercase']) {\n {{translations.invalidPasswordHasUppercase}}<br/>\n }\n\n @if (control().errors?.['hasLowercase']) {\n {{translations.invalidPasswordHasLowercase}}<br/>\n }\n\n @if (control().errors?.['hasNumber']) {\n {{translations.invalidPasswordHasNumber}}<br/>\n }\n\n @if (control().errors?.['minlength']) {\n {{translations.invalidMinLength(control().errors?.['minlength'].requiredLength)}}<br/>\n }\n\n @if (control().errors?.['confirmPassword']) {\n {{translations.invalidConfirmPassword}}<br/>\n }\n\n <ng-content select=\"[errors]\" />\n </ng-container>\n</kl-field-errors>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAEM,SAAU,qBAAqB,CAAC,OAAwB,EAAA;IAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,QAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE;;AAG/B,IAAA,OAAO,IAAI;AACb;;ACNM,SAAU,kBAAkB,CAAC,OAAwB,EAAA;IACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,QAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;;AAG5B,IAAA,OAAO,IAAI;AACb;;ACNM,SAAU,6BAA6B,CAAC,OAAwB,EAAA;IACpE,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjE,QAAA,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE;;AAGvC,IAAA,OAAO,IAAI;AACb;;ACNM,SAAU,qBAAqB,CAAC,OAAwB,EAAA;IAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,QAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE;;AAG/B,IAAA,OAAO,IAAI;AACb;;ACgBM,MAAO,aAAc,SAAQ,cAAc,CAAA;IACtC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI;AAE1D,IAAA,IAAI,GAAG,MAAM,CAAoB,UAAU,CAAC;IAC5C,yBAAyB,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAEzE,wBAAwB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;;IAGjE,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC;gBAC3B,6BAA6B;gBAC7B,qBAAqB;gBACrB,qBAAqB;gBACrB,kBAAkB;AAClB,gBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACxB,aAAA,CAAC;;;uGAlBK,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,ECxB1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,siDAsDA,EDhCY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,uyBAAE,WAAW,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAE/B,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAEpB,OAAA,EAAA,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,siDAAA,EAAA;;;AEtB7C;;AAEG;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { effect, Component } from '@angular/core';
|
|
2
|
+
import { inject, effect, Component } from '@angular/core';
|
|
3
3
|
import { Validators } from '@angular/forms';
|
|
4
4
|
import { AppConfig } from '@koalarx/ui/core/config';
|
|
5
5
|
import { InputFieldBase, InputField } from '@koalarx/ui/shared/components/input-field';
|
|
6
6
|
|
|
7
7
|
class InputUrl extends InputFieldBase {
|
|
8
|
-
translations = AppConfig.translation.form;
|
|
8
|
+
translations = inject(AppConfig).translation.form;
|
|
9
9
|
constructor() {
|
|
10
10
|
super();
|
|
11
11
|
effect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-url.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-url/input-url.ts","../../projects/koala-ui/shared/components/input-field/input-url/input-url.html","../../projects/koala-ui/shared/components/input-field/input-url/koalarx-ui-shared-components-input-field-input-url.ts"],"sourcesContent":["import { Component, effect } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport {\n InputField,\n InputFieldBase,\n} from '@koalarx/ui/shared/components/input-field';\n\n@Component({\n selector: 'kl-input-url',\n templateUrl: './input-url.html',\n imports: [InputField],\n})\nexport class InputUrl extends InputFieldBase {\n readonly translations = AppConfig.translation.form;\n\n constructor() {\n super();\n\n effect(() => {\n const control = this.control();\n\n control.addValidators(\n Validators.pattern(/^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/)\n );\n });\n }\n}\n","<kl-input-field\n [control]=\"control()\"\n [label]=\"label()\"\n type=\"url\">\n\n <ng-container errors>\n @if (control().errors?.['pattern']) {\n <div class=\"error-message\">{{ translations.invalidURL }}</div>\n }\n </ng-container>\n</kl-input-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAaM,MAAO,QAAS,SAAQ,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-input-field-input-url.mjs","sources":["../../projects/koala-ui/shared/components/input-field/input-url/input-url.ts","../../projects/koala-ui/shared/components/input-field/input-url/input-url.html","../../projects/koala-ui/shared/components/input-field/input-url/koalarx-ui-shared-components-input-field-input-url.ts"],"sourcesContent":["import { Component, effect, inject } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport {\n InputField,\n InputFieldBase,\n} from '@koalarx/ui/shared/components/input-field';\n\n@Component({\n selector: 'kl-input-url',\n templateUrl: './input-url.html',\n imports: [InputField],\n})\nexport class InputUrl extends InputFieldBase {\n readonly translations = inject(AppConfig).translation.form;\n\n constructor() {\n super();\n\n effect(() => {\n const control = this.control();\n\n control.addValidators(\n Validators.pattern(/^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/)\n );\n });\n }\n}\n","<kl-input-field\n [control]=\"control()\"\n [label]=\"label()\"\n type=\"url\">\n\n <ng-container errors>\n @if (control().errors?.['pattern']) {\n <div class=\"error-message\">{{ translations.invalidURL }}</div>\n }\n </ng-container>\n</kl-input-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAaM,MAAO,QAAS,SAAQ,cAAc,CAAA;IACjC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI;AAE1D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAE9B,OAAO,CAAC,aAAa,CACnB,UAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAC3D;AACH,SAAC,CAAC;;uGAZO,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbrB,iRAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,UAAU,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAET,QAAQ,EAAA,UAAA,EAAA,CAAA;kBALpB,SAAS;+BACE,cAAc,EAAA,OAAA,EAEf,CAAC,UAAU,CAAC,EAAA,QAAA,EAAA,iRAAA,EAAA;;;AEXvB;;AAEG;;;;"}
|
|
@@ -6,7 +6,7 @@ import { AppConfig } from '@koalarx/ui/core/config';
|
|
|
6
6
|
|
|
7
7
|
class OnThisPage {
|
|
8
8
|
activatedRoute = inject(ActivatedRoute);
|
|
9
|
-
translations = AppConfig.translation.onThisPage;
|
|
9
|
+
translations = inject(AppConfig).translation.onThisPage;
|
|
10
10
|
links = input.required();
|
|
11
11
|
activeSection = signal(null);
|
|
12
12
|
linkSections = linkedSignal(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-components-on-this-page.mjs","sources":["../../projects/koala-ui/shared/components/on-this-page/on-this-page.ts","../../projects/koala-ui/shared/components/on-this-page/on-this-page.html","../../projects/koala-ui/shared/components/on-this-page/koalarx-ui-shared-components-on-this-page.ts"],"sourcesContent":["import {\n Component,\n inject,\n input,\n linkedSignal,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\nexport interface OnThisPageLink {\n label: string;\n elementId: string;\n}\n\n@Component({\n selector: 'kl-on-this-page',\n templateUrl: './on-this-page.html',\n})\nexport class OnThisPage implements OnInit, OnDestroy {\n private readonly activatedRoute = inject(ActivatedRoute);\n\n readonly translations = AppConfig.translation.onThisPage;\n\n links = input.required<OnThisPageLink[]>();\n activeSection = signal<string | null>(null);\n\n linkSections = linkedSignal(() => {\n const links = this.links();\n const currentSection = this.activeSection();\n\n return links.map((link) => ({\n label: link.label,\n elementId: link.elementId,\n isActive: link.elementId === currentSection,\n }));\n });\n\n private onScroll = () => {\n const links = this.links();\n let current: string | null = null;\n for (const link of links) {\n const el = document.getElementById(link.elementId);\n if (el) {\n const rect = el.getBoundingClientRect();\n if (rect.top <= 250) {\n current = link.elementId;\n }\n }\n }\n if (current) {\n this.activeSection.set(current);\n }\n };\n\n constructor() {\n this.activatedRoute.url.pipe(takeUntilDestroyed()).subscribe(() => {\n document.body.scrollTo({ top: 0 });\n });\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('scroll', this.onScroll);\n }\n\n ngOnInit(): void {\n this.activeSection.set(\n location.hash.match(/#[a-zA-Z]+/)?.[0]?.replace(/#/g, '') || null\n );\n window.addEventListener('scroll', this.onScroll, { passive: true });\n }\n\n scrollTo(elementId: string) {\n const element = document.getElementById(elementId);\n if (element) {\n this.activeSection.set(elementId);\n const link = location.hash.match(/#[a-zA-Z]+/)\n ? location.hash.replace(/#([^#]*)$/, `#${elementId}`)\n : `${location.hash}#${elementId}`;\n\n history.pushState({}, '', link);\n\n const scrollPosition =\n element.getBoundingClientRect().top + window.scrollY - 100;\n\n window.scrollTo({\n top: scrollPosition,\n behavior: 'smooth',\n });\n }\n }\n}\n","<div class=\"fixed\">\n <small class=\"opacity-70\">\n <ng-content select=\"[title]\">\n {{translations.title}}\n </ng-content>\n </small>\n\n <div class=\"flex flex-col gap-2 mt-2\">\n @for (item of linkSections(); track $index) {\n <a class=\"hover:cursor-pointer hover:opacity-90 transition duration-100 opacity-60\" [class]=\"{'opacity-100': item.isActive}\" (click)=\"scrollTo(item.elementId)\">\n {{ item.label }}\n </a>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAsBa,UAAU,CAAA;AACJ,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-components-on-this-page.mjs","sources":["../../projects/koala-ui/shared/components/on-this-page/on-this-page.ts","../../projects/koala-ui/shared/components/on-this-page/on-this-page.html","../../projects/koala-ui/shared/components/on-this-page/koalarx-ui-shared-components-on-this-page.ts"],"sourcesContent":["import {\n Component,\n inject,\n input,\n linkedSignal,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\nexport interface OnThisPageLink {\n label: string;\n elementId: string;\n}\n\n@Component({\n selector: 'kl-on-this-page',\n templateUrl: './on-this-page.html',\n})\nexport class OnThisPage implements OnInit, OnDestroy {\n private readonly activatedRoute = inject(ActivatedRoute);\n\n readonly translations = inject(AppConfig).translation.onThisPage;\n\n links = input.required<OnThisPageLink[]>();\n activeSection = signal<string | null>(null);\n\n linkSections = linkedSignal(() => {\n const links = this.links();\n const currentSection = this.activeSection();\n\n return links.map((link) => ({\n label: link.label,\n elementId: link.elementId,\n isActive: link.elementId === currentSection,\n }));\n });\n\n private onScroll = () => {\n const links = this.links();\n let current: string | null = null;\n for (const link of links) {\n const el = document.getElementById(link.elementId);\n if (el) {\n const rect = el.getBoundingClientRect();\n if (rect.top <= 250) {\n current = link.elementId;\n }\n }\n }\n if (current) {\n this.activeSection.set(current);\n }\n };\n\n constructor() {\n this.activatedRoute.url.pipe(takeUntilDestroyed()).subscribe(() => {\n document.body.scrollTo({ top: 0 });\n });\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('scroll', this.onScroll);\n }\n\n ngOnInit(): void {\n this.activeSection.set(\n location.hash.match(/#[a-zA-Z]+/)?.[0]?.replace(/#/g, '') || null\n );\n window.addEventListener('scroll', this.onScroll, { passive: true });\n }\n\n scrollTo(elementId: string) {\n const element = document.getElementById(elementId);\n if (element) {\n this.activeSection.set(elementId);\n const link = location.hash.match(/#[a-zA-Z]+/)\n ? location.hash.replace(/#([^#]*)$/, `#${elementId}`)\n : `${location.hash}#${elementId}`;\n\n history.pushState({}, '', link);\n\n const scrollPosition =\n element.getBoundingClientRect().top + window.scrollY - 100;\n\n window.scrollTo({\n top: scrollPosition,\n behavior: 'smooth',\n });\n }\n }\n}\n","<div class=\"fixed\">\n <small class=\"opacity-70\">\n <ng-content select=\"[title]\">\n {{translations.title}}\n </ng-content>\n </small>\n\n <div class=\"flex flex-col gap-2 mt-2\">\n @for (item of linkSections(); track $index) {\n <a class=\"hover:cursor-pointer hover:opacity-90 transition duration-100 opacity-60\" [class]=\"{'opacity-100': item.isActive}\" (click)=\"scrollTo(item.elementId)\">\n {{ item.label }}\n </a>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
63
63
|
|
|
64
64
|
class InputCurrencyMask {
|
|
65
65
|
elementRef = inject((ElementRef));
|
|
66
|
+
appConfig = inject(AppConfig);
|
|
66
67
|
writedValue = 0.0;
|
|
67
68
|
decimalCount = input(2);
|
|
68
69
|
currencyValue = output();
|
|
@@ -70,7 +71,7 @@ class InputCurrencyMask {
|
|
|
70
71
|
let prefix = '$';
|
|
71
72
|
const thousandSeparator = ',';
|
|
72
73
|
const decimalSeparator = '.';
|
|
73
|
-
switch (
|
|
74
|
+
switch (this.appConfig.language) {
|
|
74
75
|
case 'en':
|
|
75
76
|
prefix = '$';
|
|
76
77
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-directives.mjs","sources":["../../projects/koala-ui/shared/directives/hook-change.ts","../../projects/koala-ui/shared/directives/input-mask.ts","../../projects/koala-ui/shared/directives/input-currency-mask.ts","../../projects/koala-ui/shared/directives/tooltip.ts","../../projects/koala-ui/shared/directives/button.ts","../../projects/koala-ui/shared/directives/koalarx-ui-shared-directives.ts"],"sourcesContent":["import {\n Directive,\n effect,\n inject,\n input,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({ selector: '[hookChange]' })\nexport class HookChange {\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n hookChange = input.required<any>();\n\n constructor() {\n effect(() => {\n this.hookChange();\n const onChange = this.viewContainerRef.element.nativeElement.onchange;\n\n if (onChange) {\n onChange();\n }\n });\n }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { NgxMaskPipe } from 'ngx-mask';\n\n@Directive({ selector: 'input[mask]', providers: [NgxMaskPipe] })\nexport class InputMask {\n private readonly ngxMask = inject(NgxMaskPipe);\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef<HTMLInputElement>\n );\n\n private get currentValue() {\n return this.input.value;\n }\n\n private get input() {\n return this.elementRef.nativeElement;\n }\n\n mask = input.required<string>();\n\n constructor() {\n effect(() => {\n const mask = this.mask();\n\n if (mask) {\n this.elementRef.nativeElement.addEventListener('keyup', () =>\n this.applyMask(mask)\n );\n this.elementRef.nativeElement.addEventListener('keypress', () =>\n this.applyMask(mask)\n );\n this.elementRef.nativeElement.addEventListener('keydown', () =>\n this.applyMask(mask)\n );\n\n setTimeout(() => this.applyMask(mask), 1);\n }\n });\n }\n\n private applyMask(mask: string) {\n this.setValue(this.ngxMask.transform(this.currentValue, mask));\n }\n\n private setValue(value: string) {\n this.input.value = value;\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n output,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { KlNumber } from '@koalarx/utils/KlNumber';\nimport { unmaskCoin } from '@koalarx/utils/KlString';\nimport { NgxMaskPipe } from 'ngx-mask';\n\n@Directive({\n selector: 'input[currencyMask]',\n providers: [NgxMaskPipe],\n})\nexport class InputCurrencyMask implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef<HTMLInputElement>\n );\n private writedValue = 0.0;\n\n decimalCount = input<number>(2);\n currencyValue = output<number>();\n\n private maskCoin(value: number) {\n let prefix = '$';\n const thousandSeparator = ',';\n const decimalSeparator = '.';\n\n switch (AppConfig.language) {\n case 'en':\n prefix = '$';\n break;\n case 'ptBr':\n prefix = 'R$';\n break;\n }\n\n return new KlNumber(value).maskCoin(\n prefix,\n thousandSeparator,\n decimalSeparator,\n this.decimalCount()\n );\n }\n\n private unmaskCoin(value: string): number {\n return unmaskCoin(value, this.decimalCount());\n }\n\n private applyMask() {\n this.setValue(this.maskCoin(this.writedValue));\n }\n\n private get currentValue() {\n return this.input.value;\n }\n\n private setValue(value: string) {\n this.input.value = value;\n }\n\n private get input() {\n return this.elementRef.nativeElement;\n }\n\n private onFocus() {\n this.elementRef.nativeElement.addEventListener('focus', () => {\n this.putInputCaretOnTheEnd();\n });\n }\n\n private onKeyUp() {\n this.elementRef.nativeElement.addEventListener('keyup', (event) => {\n if (/\\d/.test(event.key) || event.key === 'Backspace') {\n this.updateWritedValue(event.key, event.key === 'Backspace');\n\n if (isNaN(this.writedValue)) {\n this.writedValue = 0;\n }\n\n this.applyMask();\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n this.putInputCaretOnTheEnd();\n }\n });\n }\n\n private onKeyPress() {\n this.elementRef.nativeElement.addEventListener('keypress', (event) => {\n event.preventDefault();\n });\n }\n\n private onKeyDown() {\n this.elementRef.nativeElement.addEventListener('keydown', (event) => {\n if (event.key === 'Backspace') {\n event.preventDefault();\n }\n });\n }\n\n private onPaste() {\n this.elementRef.nativeElement.addEventListener('paste', (event) => {\n event.preventDefault();\n\n if (!event.clipboardData) {\n return;\n }\n\n const pastedValue = event.clipboardData.getData('Text');\n\n let unmaskedValue = parseFloat(pastedValue);\n\n if (pastedValue.includes(',')) {\n unmaskedValue = this.unmaskCoin(event.clipboardData.getData('Text'));\n }\n\n this.setValue(this.maskCoin(unmaskedValue));\n });\n }\n\n private onReset() {\n this.elementRef.nativeElement.addEventListener('reset', () => {\n this.writedValue = 0.0;\n this.applyMask();\n });\n }\n\n private putInputCaretOnTheEnd() {\n setTimeout(() =>\n this.input.setSelectionRange(\n this.currentValue.length,\n this.currentValue.length\n )\n );\n }\n\n private updateWritedValue(key: string, backspace = false) {\n let decimal = '';\n\n for (let i = 0; i < this.decimalCount(); i++) {\n decimal += '0';\n }\n\n if (backspace) {\n const match = (this.writedValue / 10)\n .toString()\n .match(new RegExp(`^-?\\\\d+(?:\\\\.\\\\d{0,${this.decimalCount()}})?`));\n\n if (match) {\n this.writedValue = parseFloat(match[0]);\n }\n }\n\n const currentValue = Math.round(this.writedValue * +`1${decimal}`);\n\n this.writedValue = parseFloat(`${currentValue}${key}`) / +`1${decimal}`;\n this.currencyValue.emit(this.writedValue);\n }\n\n ngOnInit(): void {\n this.writedValue = this.unmaskCoin(this.currentValue);\n\n this.input.style.textAlign = 'right';\n\n this.onFocus();\n this.onKeyUp();\n this.onKeyPress();\n this.onKeyDown();\n this.onPaste();\n this.onReset();\n\n setTimeout(() => this.applyMask());\n }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({ selector: '[tooltip]' })\nexport class Tooltip {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(\n ElementRef<HTMLElement>\n );\n\n tooltip = input.required<string>();\n tooltipPosition = input<TooltipPosition>('top');\n\n constructor() {\n effect(() => {\n const element = this.elementRef.nativeElement;\n const tooltipText = this.tooltip();\n\n element.classList.add('tooltip');\n element.dataset['tip'] = tooltipText;\n\n switch (this.tooltipPosition()) {\n case 'top':\n element.classList.add('tooltip-top');\n break;\n case 'bottom':\n element.classList.add('tooltip-bottom');\n break;\n case 'left':\n element.classList.add('tooltip-left');\n break;\n case 'right':\n element.classList.add('tooltip-right');\n break;\n }\n });\n }\n}\n","import {\n ApplicationRef,\n booleanAttribute,\n ComponentRef,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input,\n inputBinding,\n OnInit,\n} from '@angular/core';\nimport { Loader } from '@koalarx/ui/core/components/loader';\n\nexport type ButtonColor =\n | 'neutral'\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'ghost';\n\nexport type ButtonSize =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge';\n\n@Directive({ selector: 'button[klButton], a[klButton]' })\nexport class Button implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(\n ElementRef<HTMLButtonElement>\n );\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(EnvironmentInjector);\n private loaderComponent: ComponentRef<Loader> | null = null;\n\n color = input<ButtonColor>('neutral');\n type = input<'button' | 'submit'>('button');\n circle = input(false, { transform: booleanAttribute });\n outline = input(false, { transform: booleanAttribute });\n soft = input(false, { transform: booleanAttribute });\n showLoader = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n size = input<ButtonSize>('medium');\n\n constructor() {\n effect(() => this.toggleLoader(this.showLoader()));\n effect(() => {\n const disabled = this.disabled();\n this.elementRef.nativeElement.disabled = disabled;\n });\n }\n\n private createLoaderComponent() {\n const spanContainer = this.elementRef.nativeElement.insertBefore(\n document.createElement('span'),\n this.elementRef.nativeElement.firstChild\n );\n spanContainer.classList.add(\n 'flex',\n 'items-center',\n 'justify-center',\n 'h-full'\n );\n this.loaderComponent = createComponent(Loader, {\n environmentInjector: this.injector,\n hostElement: spanContainer,\n bindings: [inputBinding('size', () => this.size())],\n });\n\n return this.loaderComponent;\n }\n\n private toggleLoader(show: boolean) {\n if (show) {\n const loaderComponent = this.createLoaderComponent();\n\n this.elementRef.nativeElement.disabled = true;\n this.appRef.attachView(loaderComponent.hostView);\n } else {\n if (!this.disabled()) {\n this.elementRef.nativeElement.disabled = false;\n }\n\n if (this.loaderComponent) {\n this.appRef.detachView(this.loaderComponent.hostView);\n this.loaderComponent.destroy();\n this.loaderComponent = null;\n }\n }\n }\n\n private getColorClass(color: ButtonColor): string {\n switch (color) {\n case 'neutral':\n return 'btn-neutral';\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-secondary';\n case 'accent':\n return 'btn-accent';\n case 'info':\n return 'btn-info';\n case 'success':\n return 'btn-success';\n case 'warning':\n return 'btn-warning';\n case 'error':\n return 'btn-error';\n case 'ghost':\n return 'btn-ghost';\n default:\n throw new Error(`Unknown button color: ${color}`);\n }\n }\n\n private getSizeClass(size: ButtonSize): string {\n switch (size) {\n case 'extraSmall':\n return 'btn-xs';\n case 'small':\n return 'btn-sm';\n case 'medium':\n return 'btn-md';\n case 'large':\n return 'btn-lg';\n case 'extraLarge':\n return 'btn-xl';\n default:\n throw new Error(`Unknown button size: ${size}`);\n }\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.type = this.type();\n this.elementRef.nativeElement.classList.add('btn');\n this.elementRef.nativeElement.classList.add(\n this.getColorClass(this.color())\n );\n this.elementRef.nativeElement.classList.add(this.getSizeClass(this.size()));\n\n if (this.outline()) {\n this.elementRef.nativeElement.classList.add('btn-outline');\n }\n\n if (this.circle()) {\n this.elementRef.nativeElement.classList.add('btn-circle');\n }\n\n if (this.soft()) {\n this.elementRef.nativeElement.classList.add('btn-soft');\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-directives.mjs","sources":["../../projects/koala-ui/shared/directives/hook-change.ts","../../projects/koala-ui/shared/directives/input-mask.ts","../../projects/koala-ui/shared/directives/input-currency-mask.ts","../../projects/koala-ui/shared/directives/tooltip.ts","../../projects/koala-ui/shared/directives/button.ts","../../projects/koala-ui/shared/directives/koalarx-ui-shared-directives.ts"],"sourcesContent":["import {\n Directive,\n effect,\n inject,\n input,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({ selector: '[hookChange]' })\nexport class HookChange {\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n hookChange = input.required<any>();\n\n constructor() {\n effect(() => {\n this.hookChange();\n const onChange = this.viewContainerRef.element.nativeElement.onchange;\n\n if (onChange) {\n onChange();\n }\n });\n }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { NgxMaskPipe } from 'ngx-mask';\n\n@Directive({ selector: 'input[mask]', providers: [NgxMaskPipe] })\nexport class InputMask {\n private readonly ngxMask = inject(NgxMaskPipe);\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef<HTMLInputElement>\n );\n\n private get currentValue() {\n return this.input.value;\n }\n\n private get input() {\n return this.elementRef.nativeElement;\n }\n\n mask = input.required<string>();\n\n constructor() {\n effect(() => {\n const mask = this.mask();\n\n if (mask) {\n this.elementRef.nativeElement.addEventListener('keyup', () =>\n this.applyMask(mask)\n );\n this.elementRef.nativeElement.addEventListener('keypress', () =>\n this.applyMask(mask)\n );\n this.elementRef.nativeElement.addEventListener('keydown', () =>\n this.applyMask(mask)\n );\n\n setTimeout(() => this.applyMask(mask), 1);\n }\n });\n }\n\n private applyMask(mask: string) {\n this.setValue(this.ngxMask.transform(this.currentValue, mask));\n }\n\n private setValue(value: string) {\n this.input.value = value;\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n output,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { KlNumber } from '@koalarx/utils/KlNumber';\nimport { unmaskCoin } from '@koalarx/utils/KlString';\nimport { NgxMaskPipe } from 'ngx-mask';\n\n@Directive({\n selector: 'input[currencyMask]',\n providers: [NgxMaskPipe],\n})\nexport class InputCurrencyMask implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef<HTMLInputElement>\n );\n private readonly appConfig = inject(AppConfig);\n private writedValue = 0.0;\n\n decimalCount = input<number>(2);\n currencyValue = output<number>();\n\n private maskCoin(value: number) {\n let prefix = '$';\n const thousandSeparator = ',';\n const decimalSeparator = '.';\n\n switch (this.appConfig.language) {\n case 'en':\n prefix = '$';\n break;\n case 'ptBr':\n prefix = 'R$';\n break;\n }\n\n return new KlNumber(value).maskCoin(\n prefix,\n thousandSeparator,\n decimalSeparator,\n this.decimalCount()\n );\n }\n\n private unmaskCoin(value: string): number {\n return unmaskCoin(value, this.decimalCount());\n }\n\n private applyMask() {\n this.setValue(this.maskCoin(this.writedValue));\n }\n\n private get currentValue() {\n return this.input.value;\n }\n\n private setValue(value: string) {\n this.input.value = value;\n }\n\n private get input() {\n return this.elementRef.nativeElement;\n }\n\n private onFocus() {\n this.elementRef.nativeElement.addEventListener('focus', () => {\n this.putInputCaretOnTheEnd();\n });\n }\n\n private onKeyUp() {\n this.elementRef.nativeElement.addEventListener('keyup', (event) => {\n if (/\\d/.test(event.key) || event.key === 'Backspace') {\n this.updateWritedValue(event.key, event.key === 'Backspace');\n\n if (isNaN(this.writedValue)) {\n this.writedValue = 0;\n }\n\n this.applyMask();\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n this.putInputCaretOnTheEnd();\n }\n });\n }\n\n private onKeyPress() {\n this.elementRef.nativeElement.addEventListener('keypress', (event) => {\n event.preventDefault();\n });\n }\n\n private onKeyDown() {\n this.elementRef.nativeElement.addEventListener('keydown', (event) => {\n if (event.key === 'Backspace') {\n event.preventDefault();\n }\n });\n }\n\n private onPaste() {\n this.elementRef.nativeElement.addEventListener('paste', (event) => {\n event.preventDefault();\n\n if (!event.clipboardData) {\n return;\n }\n\n const pastedValue = event.clipboardData.getData('Text');\n\n let unmaskedValue = parseFloat(pastedValue);\n\n if (pastedValue.includes(',')) {\n unmaskedValue = this.unmaskCoin(event.clipboardData.getData('Text'));\n }\n\n this.setValue(this.maskCoin(unmaskedValue));\n });\n }\n\n private onReset() {\n this.elementRef.nativeElement.addEventListener('reset', () => {\n this.writedValue = 0.0;\n this.applyMask();\n });\n }\n\n private putInputCaretOnTheEnd() {\n setTimeout(() =>\n this.input.setSelectionRange(\n this.currentValue.length,\n this.currentValue.length\n )\n );\n }\n\n private updateWritedValue(key: string, backspace = false) {\n let decimal = '';\n\n for (let i = 0; i < this.decimalCount(); i++) {\n decimal += '0';\n }\n\n if (backspace) {\n const match = (this.writedValue / 10)\n .toString()\n .match(new RegExp(`^-?\\\\d+(?:\\\\.\\\\d{0,${this.decimalCount()}})?`));\n\n if (match) {\n this.writedValue = parseFloat(match[0]);\n }\n }\n\n const currentValue = Math.round(this.writedValue * +`1${decimal}`);\n\n this.writedValue = parseFloat(`${currentValue}${key}`) / +`1${decimal}`;\n this.currencyValue.emit(this.writedValue);\n }\n\n ngOnInit(): void {\n this.writedValue = this.unmaskCoin(this.currentValue);\n\n this.input.style.textAlign = 'right';\n\n this.onFocus();\n this.onKeyUp();\n this.onKeyPress();\n this.onKeyDown();\n this.onPaste();\n this.onReset();\n\n setTimeout(() => this.applyMask());\n }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({ selector: '[tooltip]' })\nexport class Tooltip {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(\n ElementRef<HTMLElement>\n );\n\n tooltip = input.required<string>();\n tooltipPosition = input<TooltipPosition>('top');\n\n constructor() {\n effect(() => {\n const element = this.elementRef.nativeElement;\n const tooltipText = this.tooltip();\n\n element.classList.add('tooltip');\n element.dataset['tip'] = tooltipText;\n\n switch (this.tooltipPosition()) {\n case 'top':\n element.classList.add('tooltip-top');\n break;\n case 'bottom':\n element.classList.add('tooltip-bottom');\n break;\n case 'left':\n element.classList.add('tooltip-left');\n break;\n case 'right':\n element.classList.add('tooltip-right');\n break;\n }\n });\n }\n}\n","import {\n ApplicationRef,\n booleanAttribute,\n ComponentRef,\n createComponent,\n Directive,\n effect,\n ElementRef,\n EnvironmentInjector,\n inject,\n input,\n inputBinding,\n OnInit,\n} from '@angular/core';\nimport { Loader } from '@koalarx/ui/core/components/loader';\n\nexport type ButtonColor =\n | 'neutral'\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'ghost';\n\nexport type ButtonSize =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge';\n\n@Directive({ selector: 'button[klButton], a[klButton]' })\nexport class Button implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(\n ElementRef<HTMLButtonElement>\n );\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(EnvironmentInjector);\n private loaderComponent: ComponentRef<Loader> | null = null;\n\n color = input<ButtonColor>('neutral');\n type = input<'button' | 'submit'>('button');\n circle = input(false, { transform: booleanAttribute });\n outline = input(false, { transform: booleanAttribute });\n soft = input(false, { transform: booleanAttribute });\n showLoader = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n size = input<ButtonSize>('medium');\n\n constructor() {\n effect(() => this.toggleLoader(this.showLoader()));\n effect(() => {\n const disabled = this.disabled();\n this.elementRef.nativeElement.disabled = disabled;\n });\n }\n\n private createLoaderComponent() {\n const spanContainer = this.elementRef.nativeElement.insertBefore(\n document.createElement('span'),\n this.elementRef.nativeElement.firstChild\n );\n spanContainer.classList.add(\n 'flex',\n 'items-center',\n 'justify-center',\n 'h-full'\n );\n this.loaderComponent = createComponent(Loader, {\n environmentInjector: this.injector,\n hostElement: spanContainer,\n bindings: [inputBinding('size', () => this.size())],\n });\n\n return this.loaderComponent;\n }\n\n private toggleLoader(show: boolean) {\n if (show) {\n const loaderComponent = this.createLoaderComponent();\n\n this.elementRef.nativeElement.disabled = true;\n this.appRef.attachView(loaderComponent.hostView);\n } else {\n if (!this.disabled()) {\n this.elementRef.nativeElement.disabled = false;\n }\n\n if (this.loaderComponent) {\n this.appRef.detachView(this.loaderComponent.hostView);\n this.loaderComponent.destroy();\n this.loaderComponent = null;\n }\n }\n }\n\n private getColorClass(color: ButtonColor): string {\n switch (color) {\n case 'neutral':\n return 'btn-neutral';\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-secondary';\n case 'accent':\n return 'btn-accent';\n case 'info':\n return 'btn-info';\n case 'success':\n return 'btn-success';\n case 'warning':\n return 'btn-warning';\n case 'error':\n return 'btn-error';\n case 'ghost':\n return 'btn-ghost';\n default:\n throw new Error(`Unknown button color: ${color}`);\n }\n }\n\n private getSizeClass(size: ButtonSize): string {\n switch (size) {\n case 'extraSmall':\n return 'btn-xs';\n case 'small':\n return 'btn-sm';\n case 'medium':\n return 'btn-md';\n case 'large':\n return 'btn-lg';\n case 'extraLarge':\n return 'btn-xl';\n default:\n throw new Error(`Unknown button size: ${size}`);\n }\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.type = this.type();\n this.elementRef.nativeElement.classList.add('btn');\n this.elementRef.nativeElement.classList.add(\n this.getColorClass(this.color())\n );\n this.elementRef.nativeElement.classList.add(this.getSizeClass(this.size()));\n\n if (this.outline()) {\n this.elementRef.nativeElement.classList.add('btn-outline');\n }\n\n if (this.circle()) {\n this.elementRef.nativeElement.classList.add('btn-circle');\n }\n\n if (this.soft()) {\n this.elementRef.nativeElement.classList.add('btn-soft');\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -58,26 +58,27 @@ function generateQuerySelector(elem) {
|
|
|
58
58
|
|
|
59
59
|
class HttpErrorFeedbackAlert {
|
|
60
60
|
snackbar = inject(Snackbar);
|
|
61
|
-
|
|
62
|
-
translations = AppConfig.translation.feedbackRequestInterceptor;
|
|
61
|
+
appConfig = inject(AppConfig);
|
|
63
62
|
tapError(error) {
|
|
63
|
+
const httpClientErrorsMiddleware = this.appConfig.httpClientErrorsMiddleware;
|
|
64
|
+
const translations = this.appConfig.translation.feedbackRequestInterceptor;
|
|
64
65
|
const statusCode = error.status.toString();
|
|
65
66
|
if (statusCode.charAt(0) === '4') {
|
|
66
67
|
console.warn(error);
|
|
67
|
-
this.snackbar.warning(
|
|
68
|
-
|
|
68
|
+
this.snackbar.warning(httpClientErrorsMiddleware?.handleError(error) ??
|
|
69
|
+
translations[statusCode]);
|
|
69
70
|
return;
|
|
70
71
|
}
|
|
71
72
|
else if (statusCode.charAt(0) === '5') {
|
|
72
73
|
console.error(error);
|
|
73
|
-
this.snackbar.error(
|
|
74
|
-
|
|
74
|
+
this.snackbar.error(httpClientErrorsMiddleware?.handleError(error) ??
|
|
75
|
+
translations[statusCode]);
|
|
75
76
|
return;
|
|
76
77
|
}
|
|
77
78
|
else {
|
|
78
79
|
console.info(error);
|
|
79
|
-
this.snackbar.info(
|
|
80
|
-
|
|
80
|
+
this.snackbar.info(httpClientErrorsMiddleware?.handleError(error) ??
|
|
81
|
+
translations.unknowError);
|
|
81
82
|
return;
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui-shared-utils.mjs","sources":["../../projects/koala-ui/shared/utils/is-empty.ts","../../projects/koala-ui/shared/utils/generate-query-selector.ts","../../projects/koala-ui/shared/utils/http-error-feedback-alert.ts","../../projects/koala-ui/shared/utils/koalarx-ui-shared-utils.ts"],"sourcesContent":["export function isEmpty(value: any) {\n return value === null || value === undefined || value === ''\n}\n","export function generateQuerySelector(elem: HTMLElement): string {\n const { tagName, id, className, parentElement } = elem;\n\n let str = '';\n\n if (id !== '' && id.match(/^[a-z].*/)) {\n str += `#${id}`;\n return str;\n }\n\n str = tagName.toLowerCase();\n\n if (className) {\n str +=\n '.' +\n className\n .replace(/(^\\s)/gm, '')\n .replace(/(\\s{2,})/gm, ' ')\n .split(/\\s/)\n .filter((c) => !/[[,\\]]/.test(c))\n .join('.');\n }\n\n const needNthPart = (el: HTMLElement): boolean => {\n let sib = el.previousElementSibling;\n\n if (!el.className) {\n return true;\n }\n\n while (sib) {\n if (el.className !== sib.className) {\n return false;\n }\n\n sib = sib.previousElementSibling;\n }\n\n return false;\n };\n\n const getNthPart = (el: HTMLElement): string => {\n let childIndex = 1;\n\n let sib = el.previousElementSibling;\n while (sib) {\n childIndex++;\n sib = sib.previousElementSibling;\n }\n\n return `:nth-child(${childIndex})`;\n };\n\n if (needNthPart(elem)) {\n str += getNthPart(elem);\n }\n\n if (!parentElement) {\n return str;\n }\n\n return `${generateQuerySelector(parentElement)} > ${str}`;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { AppConfig } from '@koalarx/ui/core/config';\r\nimport { Snackbar } from '@koalarx/ui/shared/components/snackbar';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpErrorFeedbackAlert {\r\n private readonly snackbar = inject(Snackbar);\r\n private readonly
|
|
1
|
+
{"version":3,"file":"koalarx-ui-shared-utils.mjs","sources":["../../projects/koala-ui/shared/utils/is-empty.ts","../../projects/koala-ui/shared/utils/generate-query-selector.ts","../../projects/koala-ui/shared/utils/http-error-feedback-alert.ts","../../projects/koala-ui/shared/utils/koalarx-ui-shared-utils.ts"],"sourcesContent":["export function isEmpty(value: any) {\n return value === null || value === undefined || value === ''\n}\n","export function generateQuerySelector(elem: HTMLElement): string {\n const { tagName, id, className, parentElement } = elem;\n\n let str = '';\n\n if (id !== '' && id.match(/^[a-z].*/)) {\n str += `#${id}`;\n return str;\n }\n\n str = tagName.toLowerCase();\n\n if (className) {\n str +=\n '.' +\n className\n .replace(/(^\\s)/gm, '')\n .replace(/(\\s{2,})/gm, ' ')\n .split(/\\s/)\n .filter((c) => !/[[,\\]]/.test(c))\n .join('.');\n }\n\n const needNthPart = (el: HTMLElement): boolean => {\n let sib = el.previousElementSibling;\n\n if (!el.className) {\n return true;\n }\n\n while (sib) {\n if (el.className !== sib.className) {\n return false;\n }\n\n sib = sib.previousElementSibling;\n }\n\n return false;\n };\n\n const getNthPart = (el: HTMLElement): string => {\n let childIndex = 1;\n\n let sib = el.previousElementSibling;\n while (sib) {\n childIndex++;\n sib = sib.previousElementSibling;\n }\n\n return `:nth-child(${childIndex})`;\n };\n\n if (needNthPart(elem)) {\n str += getNthPart(elem);\n }\n\n if (!parentElement) {\n return str;\n }\n\n return `${generateQuerySelector(parentElement)} > ${str}`;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { AppConfig } from '@koalarx/ui/core/config';\r\nimport { Snackbar } from '@koalarx/ui/shared/components/snackbar';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpErrorFeedbackAlert {\r\n private readonly snackbar = inject(Snackbar);\r\n private readonly appConfig = inject(AppConfig);\r\n\r\n tapError(error: HttpErrorResponse) {\r\n const httpClientErrorsMiddleware =\r\n this.appConfig.httpClientErrorsMiddleware;\r\n const translations = this.appConfig.translation.feedbackRequestInterceptor;\r\n const statusCode = error.status.toString();\r\n\r\n if (statusCode.charAt(0) === '4') {\r\n console.warn(error);\r\n\r\n this.snackbar.warning(\r\n httpClientErrorsMiddleware?.handleError(error) ??\r\n (translations as any)[statusCode]\r\n );\r\n return;\r\n } else if (statusCode.charAt(0) === '5') {\r\n console.error(error);\r\n\r\n this.snackbar.error(\r\n httpClientErrorsMiddleware?.handleError(error) ??\r\n (translations as any)[statusCode]\r\n );\r\n return;\r\n } else {\r\n console.info(error);\r\n\r\n this.snackbar.info(\r\n httpClientErrorsMiddleware?.handleError(error) ??\r\n translations.unknowError\r\n );\r\n return;\r\n }\r\n }\r\n}\r\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
|
@@ -2,17 +2,49 @@ import { provideHttpClient, HTTP_INTERCEPTORS, withInterceptorsFromDi, HttpClien
|
|
|
2
2
|
import { provideMarkdown, MARKED_OPTIONS } from 'ngx-markdown';
|
|
3
3
|
import { provideEnvironmentNgxMask } from 'ngx-mask';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import {
|
|
5
|
+
import { Injectable, inject } from '@angular/core';
|
|
6
|
+
import { en as en$1 } from '@koalarx/ui/core/translations';
|
|
6
7
|
import { HttpErrorFeedbackAlert } from '@koalarx/ui/shared/utils';
|
|
7
8
|
import { tap } from 'rxjs/internal/operators/tap';
|
|
8
9
|
|
|
9
10
|
const GENERIC_COMPONENT_CONTAINER_NAME = '.kl-generic-component-container';
|
|
11
|
+
|
|
10
12
|
class AppConfig {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
_hostApi;
|
|
14
|
+
_language;
|
|
15
|
+
_translation;
|
|
16
|
+
_httpClientErrorsMiddleware;
|
|
17
|
+
set hostApi(hostApi) {
|
|
18
|
+
this._hostApi = hostApi;
|
|
19
|
+
}
|
|
20
|
+
get hostApi() {
|
|
21
|
+
return this._hostApi;
|
|
22
|
+
}
|
|
23
|
+
set language(language) {
|
|
24
|
+
this._language = language;
|
|
25
|
+
}
|
|
26
|
+
get language() {
|
|
27
|
+
return this._language;
|
|
28
|
+
}
|
|
29
|
+
set translation(translation) {
|
|
30
|
+
this._translation = translation;
|
|
31
|
+
}
|
|
32
|
+
get translation() {
|
|
33
|
+
return this._translation ?? en$1;
|
|
34
|
+
}
|
|
35
|
+
set httpClientErrorsMiddleware(httpClientErrorsMiddleware) {
|
|
36
|
+
this._httpClientErrorsMiddleware = httpClientErrorsMiddleware;
|
|
37
|
+
}
|
|
38
|
+
get httpClientErrorsMiddleware() {
|
|
39
|
+
return this._httpClientErrorsMiddleware;
|
|
40
|
+
}
|
|
41
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
42
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppConfig, providedIn: 'root' });
|
|
15
43
|
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AppConfig, decorators: [{
|
|
45
|
+
type: Injectable,
|
|
46
|
+
args: [{ providedIn: 'root' }]
|
|
47
|
+
}] });
|
|
16
48
|
|
|
17
49
|
class FeedbackRequestInterceptor {
|
|
18
50
|
httpError = inject(HttpErrorFeedbackAlert);
|
|
@@ -132,10 +164,11 @@ const maskOptions = {
|
|
|
132
164
|
thousandSeparator: '.',
|
|
133
165
|
};
|
|
134
166
|
function provideKoala(config) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
167
|
+
const appConfig = new AppConfig();
|
|
168
|
+
appConfig.language = config?.language ?? 'en';
|
|
169
|
+
appConfig.translation = getTranslationByLanguage(config?.language ?? 'en');
|
|
170
|
+
appConfig.hostApi = config?.hostApi;
|
|
171
|
+
appConfig.httpClientErrorsMiddleware = config?.httpClientErrorsMiddleware;
|
|
139
172
|
return [
|
|
140
173
|
provideEnvironmentNgxMask(maskOptions),
|
|
141
174
|
provideHttpClient(withInterceptorsFromDi()),
|
|
@@ -155,6 +188,10 @@ function provideKoala(config) {
|
|
|
155
188
|
useClass: FeedbackRequestInterceptor,
|
|
156
189
|
multi: true,
|
|
157
190
|
},
|
|
191
|
+
{
|
|
192
|
+
provide: AppConfig,
|
|
193
|
+
useValue: appConfig,
|
|
194
|
+
},
|
|
158
195
|
];
|
|
159
196
|
}
|
|
160
197
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koalarx-ui.mjs","sources":["../../projects/koala-ui/core/config/constants.ts","../../projects/koala-ui/core/interceptors/feedback-request-interceptor.ts","../../projects/koala-ui/core/translations/en.ts","../../projects/koala-ui/core/translations/ptbr.ts","../../projects/koala-ui/core/translations/get-translation-by-language.ts","../../projects/koala-ui/core/koala-provider.ts","../../projects/koala-ui/koalarx-ui.ts"],"sourcesContent":["import { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { KoalaLanguage, Translation } from '@koalarx/ui/core/translations';\n\nexport const GENERIC_COMPONENT_CONTAINER_NAME =\n '.kl-generic-component-container';\n\nexport class AppConfig {\n static hostApi: string | undefined;\n static language: KoalaLanguage;\n static translation: Translation;\n static httpClientErrorsMiddleware: HttpClientErrorsMiddleware | undefined;\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 { Translation } from './translation.model';\n\nexport const en: Translation = {\n confirm: {\n btnLabelYes: 'Yes',\n btnLabelNo: 'No',\n },\n codeViewer: {\n copyToClipboard: 'Copy to clipboard',\n copiedToClipboard: 'Copied to clipboard',\n },\n form: {\n required: 'This field is required.',\n invalidEmail: 'Invalid email address',\n invalidMinLength: (minLength: number) =>\n `The field must have at least ${minLength} characters.`,\n invalidCPF: 'Invalid CPF',\n invalidCNPJ: 'Invalid CNPJ',\n invalidURL: 'Invalid URL',\n invalidPasswordHasSpecialCharacters:\n 'The password must contain special characters.',\n invalidPasswordHasLowercase: 'The password must contain lowercase letters.',\n invalidPasswordHasUppercase: 'The password must contain uppercase letters.',\n invalidPasswordHasNumber: 'The password must contain numbers.',\n invalidConfirmPassword: 'The confirmation password does not match.',\n },\n onThisPage: {\n title: 'On this page',\n },\n datatable: {\n btnFilterLabel: 'Filter',\n clearFilterTooltip: 'Clear filters',\n addFilterTooltip: 'Add filter',\n reloadListTooltip: 'Reload data',\n labelItemsPerPage: 'Items per page limit',\n },\n feedbackRequestInterceptor: {\n '400': 'An error occurred related to the submitted data',\n '401': 'Unauthorized access, please log in again.',\n '403': 'Access denied.',\n '404': 'No record found from the provided data.',\n '409': 'This record already exists',\n '422': 'Validation error in the submitted data.',\n '500': 'Please contact our support via WhatsApp.',\n '0': 'We identified an instability in communication with our server, this may occur due to rapid internet drops, slow connection, or server overload, please try again.',\n unknowError: 'An unknown error occurred, please try again.',\n },\n};\n","import { Translation } from './translation.model';\n\nexport const ptBr: Translation = {\n confirm: {\n btnLabelYes: 'Sim',\n btnLabelNo: 'Não',\n },\n codeViewer: {\n copyToClipboard: 'Copiar',\n copiedToClipboard: 'Copiado',\n },\n form: {\n required: 'O campo é obrigatório.',\n invalidEmail: 'E-mail inválido',\n invalidMinLength: (minLength: number) =>\n `O campo deve ter no mínimo ${minLength} caracteres.`,\n invalidCPF: 'CPF inválido',\n invalidCNPJ: 'CNPJ inválido',\n invalidURL: 'URL inválida',\n invalidPasswordHasSpecialCharacters:\n 'A senha deve conter caracteres especiais.',\n invalidPasswordHasLowercase: 'A senha deve conter letras minúsculas.',\n invalidPasswordHasUppercase: 'A senha deve conter letras maiúsculas.',\n invalidPasswordHasNumber: 'A senha deve conter números.',\n invalidConfirmPassword: 'A confirmação da senha não confere.',\n },\n onThisPage: {\n title: 'Nesta página',\n },\n datatable: {\n btnFilterLabel: 'Filtro',\n clearFilterTooltip: 'Limpar filtros',\n addFilterTooltip: 'Adicionar filtro',\n reloadListTooltip: 'Recarregar dados',\n labelItemsPerPage: 'Limite de itens por carregamento',\n },\n feedbackRequestInterceptor: {\n '400': 'Ocorreu um erro relacionado aos dados enviados',\n '401': 'Acesso não autorizado, por favor, faça login novamente.',\n '403': 'Acesso negado.',\n '404': 'Nenhum registro encontrado a partir dos dados informados.',\n '409': 'Este registro já existe',\n '422': 'Erro de validação nos dados enviados.',\n '500': 'Entre em contato com nosso suporte pelo canal do whatsapp.',\n '0': 'Identificamos uma instabilidade na comunicação com nosso servidor, isto pode ocorrer devido a rápidas quedas de internet, conexão lenta ou sobrecarga no servidor, por favor, tente novamente.',\n unknowError: 'Ocorreu um erro desconhecido, por favor, tente novamente.',\n },\n};\n","import { en } from './en';\nimport { ptBr } from './ptbr';\nimport { Translation } from './translation.model';\n\nexport type KoalaLanguage = 'en' | 'ptBr';\n\nexport function getTranslationByLanguage(language: KoalaLanguage): Translation {\n switch (language) {\n case 'en':\n return en;\n case 'ptBr':\n return ptBr;\n }\n}\n","import {\n HTTP_INTERCEPTORS,\n HttpClient,\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { Provider } from '@angular/core';\nimport { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { MARKED_OPTIONS, provideMarkdown } from 'ngx-markdown';\nimport { NgxMaskConfig, provideEnvironmentNgxMask } from 'ngx-mask';\nimport { AppConfig } from './config';\nimport { FeedbackRequestInterceptor } from './interceptors/feedback-request-interceptor';\nimport { getTranslationByLanguage, KoalaLanguage } from './translations';\n\nconst maskOptions: Partial<NgxMaskConfig> = {\n validation: false,\n thousandSeparator: '.',\n};\n\ninterface KoalaSettings {\n hostApi?: string;\n language?: KoalaLanguage;\n httpClientErrorsMiddleware?: HttpClientErrorsMiddleware;\n}\n\nexport function provideKoala(config?: KoalaSettings): Provider {\n AppConfig.language = config?.language ?? 'en';\n AppConfig.translation = getTranslationByLanguage(config?.language ?? 'en');\n AppConfig.hostApi = config?.hostApi;\n AppConfig.httpClientErrorsMiddleware = config?.httpClientErrorsMiddleware;\n\n return [\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}\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.mjs","sources":["../../projects/koala-ui/core/config/constants.ts","../../projects/koala-ui/core/config/app-config.ts","../../projects/koala-ui/core/interceptors/feedback-request-interceptor.ts","../../projects/koala-ui/core/translations/en.ts","../../projects/koala-ui/core/translations/ptbr.ts","../../projects/koala-ui/core/translations/get-translation-by-language.ts","../../projects/koala-ui/core/koala-provider.ts","../../projects/koala-ui/koalarx-ui.ts"],"sourcesContent":["export const GENERIC_COMPONENT_CONTAINER_NAME =\n '.kl-generic-component-container';\n","import { Injectable } from '@angular/core';\nimport { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { KoalaLanguage, Translation, en } from '@koalarx/ui/core/translations';\n\n@Injectable({ providedIn: 'root' })\nexport class AppConfig {\n private _hostApi: string | undefined;\n private _language: KoalaLanguage | undefined;\n private _translation: Translation | undefined;\n private _httpClientErrorsMiddleware: HttpClientErrorsMiddleware | undefined;\n\n set hostApi(hostApi: string | undefined) {\n this._hostApi = hostApi;\n }\n\n get hostApi(): string | undefined {\n return this._hostApi;\n }\n\n set language(language: KoalaLanguage | undefined) {\n this._language = language;\n }\n\n get language(): KoalaLanguage | undefined {\n return this._language;\n }\n\n set translation(translation: Translation | undefined) {\n this._translation = translation;\n }\n\n get translation(): Translation {\n return this._translation ?? en;\n }\n\n set httpClientErrorsMiddleware(\n httpClientErrorsMiddleware: HttpClientErrorsMiddleware | undefined\n ) {\n this._httpClientErrorsMiddleware = httpClientErrorsMiddleware;\n }\n\n get httpClientErrorsMiddleware(): HttpClientErrorsMiddleware | undefined {\n return this._httpClientErrorsMiddleware;\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 { Translation } from './translation.model';\n\nexport const en: Translation = {\n confirm: {\n btnLabelYes: 'Yes',\n btnLabelNo: 'No',\n },\n codeViewer: {\n copyToClipboard: 'Copy to clipboard',\n copiedToClipboard: 'Copied to clipboard',\n },\n form: {\n required: 'This field is required.',\n invalidEmail: 'Invalid email address',\n invalidMinLength: (minLength: number) =>\n `The field must have at least ${minLength} characters.`,\n invalidCPF: 'Invalid CPF',\n invalidCNPJ: 'Invalid CNPJ',\n invalidURL: 'Invalid URL',\n invalidPasswordHasSpecialCharacters:\n 'The password must contain special characters.',\n invalidPasswordHasLowercase: 'The password must contain lowercase letters.',\n invalidPasswordHasUppercase: 'The password must contain uppercase letters.',\n invalidPasswordHasNumber: 'The password must contain numbers.',\n invalidConfirmPassword: 'The confirmation password does not match.',\n },\n onThisPage: {\n title: 'On this page',\n },\n datatable: {\n btnFilterLabel: 'Filter',\n clearFilterTooltip: 'Clear filters',\n addFilterTooltip: 'Add filter',\n reloadListTooltip: 'Reload data',\n labelItemsPerPage: 'Items per page limit',\n },\n feedbackRequestInterceptor: {\n '400': 'An error occurred related to the submitted data',\n '401': 'Unauthorized access, please log in again.',\n '403': 'Access denied.',\n '404': 'No record found from the provided data.',\n '409': 'This record already exists',\n '422': 'Validation error in the submitted data.',\n '500': 'Please contact our support via WhatsApp.',\n '0': 'We identified an instability in communication with our server, this may occur due to rapid internet drops, slow connection, or server overload, please try again.',\n unknowError: 'An unknown error occurred, please try again.',\n },\n};\n","import { Translation } from './translation.model';\n\nexport const ptBr: Translation = {\n confirm: {\n btnLabelYes: 'Sim',\n btnLabelNo: 'Não',\n },\n codeViewer: {\n copyToClipboard: 'Copiar',\n copiedToClipboard: 'Copiado',\n },\n form: {\n required: 'O campo é obrigatório.',\n invalidEmail: 'E-mail inválido',\n invalidMinLength: (minLength: number) =>\n `O campo deve ter no mínimo ${minLength} caracteres.`,\n invalidCPF: 'CPF inválido',\n invalidCNPJ: 'CNPJ inválido',\n invalidURL: 'URL inválida',\n invalidPasswordHasSpecialCharacters:\n 'A senha deve conter caracteres especiais.',\n invalidPasswordHasLowercase: 'A senha deve conter letras minúsculas.',\n invalidPasswordHasUppercase: 'A senha deve conter letras maiúsculas.',\n invalidPasswordHasNumber: 'A senha deve conter números.',\n invalidConfirmPassword: 'A confirmação da senha não confere.',\n },\n onThisPage: {\n title: 'Nesta página',\n },\n datatable: {\n btnFilterLabel: 'Filtro',\n clearFilterTooltip: 'Limpar filtros',\n addFilterTooltip: 'Adicionar filtro',\n reloadListTooltip: 'Recarregar dados',\n labelItemsPerPage: 'Limite de itens por carregamento',\n },\n feedbackRequestInterceptor: {\n '400': 'Ocorreu um erro relacionado aos dados enviados',\n '401': 'Acesso não autorizado, por favor, faça login novamente.',\n '403': 'Acesso negado.',\n '404': 'Nenhum registro encontrado a partir dos dados informados.',\n '409': 'Este registro já existe',\n '422': 'Erro de validação nos dados enviados.',\n '500': 'Entre em contato com nosso suporte pelo canal do whatsapp.',\n '0': 'Identificamos uma instabilidade na comunicação com nosso servidor, isto pode ocorrer devido a rápidas quedas de internet, conexão lenta ou sobrecarga no servidor, por favor, tente novamente.',\n unknowError: 'Ocorreu um erro desconhecido, por favor, tente novamente.',\n },\n};\n","import { en } from './en';\nimport { ptBr } from './ptbr';\nimport { Translation } from './translation.model';\n\nexport type KoalaLanguage = 'en' | 'ptBr';\n\nexport function getTranslationByLanguage(language: KoalaLanguage): Translation {\n switch (language) {\n case 'en':\n return en;\n case 'ptBr':\n return ptBr;\n }\n}\n","import {\n HTTP_INTERCEPTORS,\n HttpClient,\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { Provider } from '@angular/core';\nimport { HttpClientErrorsMiddleware } from '@koalarx/ui/core/middlewares';\nimport { MARKED_OPTIONS, provideMarkdown } from 'ngx-markdown';\nimport { NgxMaskConfig, provideEnvironmentNgxMask } from 'ngx-mask';\nimport { AppConfig } from './config';\nimport { FeedbackRequestInterceptor } from './interceptors/feedback-request-interceptor';\nimport { getTranslationByLanguage, KoalaLanguage } from './translations';\n\nconst maskOptions: Partial<NgxMaskConfig> = {\n validation: false,\n thousandSeparator: '.',\n};\n\ninterface KoalaSettings {\n hostApi?: string;\n language?: KoalaLanguage;\n httpClientErrorsMiddleware?: HttpClientErrorsMiddleware;\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\n return [\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["en"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -24,6 +24,7 @@ declare class InputMask {
|
|
|
24
24
|
|
|
25
25
|
declare class InputCurrencyMask implements OnInit {
|
|
26
26
|
private readonly elementRef;
|
|
27
|
+
private readonly appConfig;
|
|
27
28
|
private writedValue;
|
|
28
29
|
decimalCount: _angular_core.InputSignal<number>;
|
|
29
30
|
currencyValue: _angular_core.OutputEmitterRef<number>;
|
package/shared/utils/index.d.ts
CHANGED
|
@@ -7,8 +7,7 @@ declare function generateQuerySelector(elem: HTMLElement): string;
|
|
|
7
7
|
|
|
8
8
|
declare class HttpErrorFeedbackAlert {
|
|
9
9
|
private readonly snackbar;
|
|
10
|
-
private readonly
|
|
11
|
-
private readonly translations;
|
|
10
|
+
private readonly appConfig;
|
|
12
11
|
tapError(error: HttpErrorResponse): void;
|
|
13
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<HttpErrorFeedbackAlert, never>;
|
|
14
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<HttpErrorFeedbackAlert>;
|