@ng-vagabond-lab/ng-dsv 0.0.67 → 0.0.69

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.
@@ -0,0 +1,41 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef, EventEmitter } from '@angular/core';
3
+ import { ApiService } from '@ng-vagabond-lab/ng-dsv/api';
4
+
5
+ declare class FileShowContainer {
6
+ apiService: ApiService;
7
+ src: _angular_core.InputSignal<string>;
8
+ alt: _angular_core.InputSignal<string>;
9
+ fileUrl: _angular_core.WritableSignal<string>;
10
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileShowContainer, never>;
11
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileShowContainer, "dsv-file-show", never, { "src": { "alias": "src"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ }
13
+
14
+ declare class FileUploadComponent {
15
+ multiple: _angular_core.InputSignal<boolean>;
16
+ fileType: _angular_core.InputSignal<string>;
17
+ dragDropEnabled: _angular_core.InputSignal<boolean>;
18
+ filesChanged: _angular_core.OutputEmitterRef<FileList>;
19
+ inputRef: ElementRef<HTMLInputElement>;
20
+ addFiles(files: FileList): void;
21
+ handleFileDrop(event: DragEvent): void;
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
23
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "dsv-file-upload", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "fileType": { "alias": "fileType"; "required": false; "isSignal": true; }; "dragDropEnabled": { "alias": "dragDropEnabled"; "required": false; "isSignal": true; }; }, { "filesChanged": "filesChanged"; }, never, ["*"], true, never>;
24
+ }
25
+
26
+ declare class FileUploadDirective {
27
+ private _enabled;
28
+ private _dragInProgress;
29
+ set appDragDrop(value: any);
30
+ get dragInProgress(): boolean;
31
+ dropped: EventEmitter<any>;
32
+ constructor();
33
+ private handleDragOver;
34
+ private handleDragEnd;
35
+ private handleDrop;
36
+ stopAndPreventDefault(e: UIEvent): void;
37
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadDirective, never>;
38
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FileUploadDirective, "[appDragDrop]", never, { "appDragDrop": { "alias": "appDragDrop"; "required": false; }; }, { "dropped": "dropped"; }, never, never, true, never>;
39
+ }
40
+
41
+ export { FileShowContainer, FileUploadComponent, FileUploadDirective };
@@ -17,9 +17,10 @@ const authInterceptor = (req, next) => {
17
17
  error.status === 401) {
18
18
  return handle401Error(httpClient, apiService, storageService, req, next);
19
19
  }
20
+ console.log(error);
20
21
  toastService.showToast({
21
22
  type: 'error',
22
- text: error.debugMessage,
23
+ text: error.error.debugMessage,
23
24
  });
24
25
  return throwError(() => error);
25
26
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-api.mjs","sources":["../../../projects/ng-dsv/api/interceptor/api.interceptor.ts","../../../projects/ng-dsv/api/service/api.load.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import {\n HttpClient,\n HttpErrorResponse,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { catchError, switchMap, throwError } from 'rxjs';\nimport { ApiService } from '../public-api';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const httpClient = inject(HttpClient);\n const apiService = inject(ApiService);\n const storageService = inject(StorageService);\n const toastService = inject(ToastService);\n\n return next(getToken(req, apiService, storageService)).pipe(\n catchError((error) => {\n if (\n error instanceof HttpErrorResponse &&\n !req.url.includes('auth/') &&\n req.url.includes(apiService.baseUrl) &&\n error.status === 401\n ) {\n return handle401Error(\n httpClient,\n apiService,\n storageService,\n req,\n next\n );\n }\n\n toastService.showToast({\n type: 'error',\n text: error.debugMessage,\n })\n\n return throwError(() => error);\n })\n );\n};\n\nconst getToken = <T>(\n req: HttpRequest<T>,\n apiService: ApiService,\n storageService: StorageService\n) => {\n const jwt =\n storageService.getItem('user-connected')?.['jwt' as keyof {}] ?? '';\n if (!req.url.includes('/auth/') && req.url.includes(apiService.baseUrl)) {\n const headers = req.headers.set('Authorization', `Bearer ${jwt}`);\n\n return req.clone({\n headers,\n });\n }\n return req;\n};\n\nconst handle401Error = <T>(\n httpClient: HttpClient,\n apiService: ApiService,\n storageService: StorageService,\n request: HttpRequest<T>,\n next: HttpHandlerFn\n) => {\n const jwtRefresh =\n storageService.getItem('user-connected')?.['jwtRefresh' as keyof {}] ?? '';\n return httpClient\n .post(apiService.baseUrl + '/auth/refresh-token', {\n refreshToken: jwtRefresh,\n })\n .pipe(\n switchMap((response) => {\n storageService.setItem('user-connected', JSON.stringify(response));\n return next(getToken(request, apiService, storageService));\n })\n );\n};\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiLoadService {\n load = signal<boolean>(false);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { JSONObject } from '../dto/api.dto';\nimport { ApiLoadService } from './api.load.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n baseUrl: string = '';\n httpClient = inject(HttpClient);\n apiLoadService = inject(ApiLoadService);\n\n setBaseUrl(url: string) {\n this.baseUrl = url;\n }\n\n get<T>(url: string, callback: (data: T) => void) {\n this.apiLoadService.load.set(true);\n this.httpClient.get<T>(this.baseUrl + url).subscribe({\n next: (res) => {\n this.apiLoadService.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.apiLoadService.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n post<T>(url: string, data: T, callback: (data: T) => void) {\n this.apiLoadService.load.set(true);\n this.httpClient.post<T>(this.baseUrl + url, data).subscribe({\n next: (res) => {\n this.apiLoadService.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.apiLoadService.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n info(url: string, data: JSONObject) {\n console.log(url, data);\n }\n\n error(url: string, error: JSONObject) {\n console.error(url, error);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-api.mjs","sources":["../../../projects/ng-dsv/api/interceptor/api.interceptor.ts","../../../projects/ng-dsv/api/service/api.load.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import {\n HttpClient,\n HttpErrorResponse,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { catchError, switchMap, throwError } from 'rxjs';\nimport { ApiService } from '../public-api';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const httpClient = inject(HttpClient);\n const apiService = inject(ApiService);\n const storageService = inject(StorageService);\n const toastService = inject(ToastService);\n\n return next(getToken(req, apiService, storageService)).pipe(\n catchError((error) => {\n if (\n error instanceof HttpErrorResponse &&\n !req.url.includes('auth/') &&\n req.url.includes(apiService.baseUrl) &&\n error.status === 401\n ) {\n return handle401Error(\n httpClient,\n apiService,\n storageService,\n req,\n next\n );\n }\n\n console.log(error);\n\n toastService.showToast({\n type: 'error',\n text: error.error.debugMessage,\n })\n\n return throwError(() => error);\n })\n );\n};\n\nconst getToken = <T>(\n req: HttpRequest<T>,\n apiService: ApiService,\n storageService: StorageService\n) => {\n const jwt =\n storageService.getItem('user-connected')?.['jwt' as keyof {}] ?? '';\n if (!req.url.includes('/auth/') && req.url.includes(apiService.baseUrl)) {\n const headers = req.headers.set('Authorization', `Bearer ${jwt}`);\n\n return req.clone({\n headers,\n });\n }\n return req;\n};\n\nconst handle401Error = <T>(\n httpClient: HttpClient,\n apiService: ApiService,\n storageService: StorageService,\n request: HttpRequest<T>,\n next: HttpHandlerFn\n) => {\n const jwtRefresh =\n storageService.getItem('user-connected')?.['jwtRefresh' as keyof {}] ?? '';\n return httpClient\n .post(apiService.baseUrl + '/auth/refresh-token', {\n refreshToken: jwtRefresh,\n })\n .pipe(\n switchMap((response) => {\n storageService.setItem('user-connected', JSON.stringify(response));\n return next(getToken(request, apiService, storageService));\n })\n );\n};\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiLoadService {\n load = signal<boolean>(false);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { JSONObject } from '../dto/api.dto';\nimport { ApiLoadService } from './api.load.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n baseUrl: string = '';\n httpClient = inject(HttpClient);\n apiLoadService = inject(ApiLoadService);\n\n setBaseUrl(url: string) {\n this.baseUrl = url;\n }\n\n get<T>(url: string, callback: (data: T) => void) {\n this.apiLoadService.load.set(true);\n this.httpClient.get<T>(this.baseUrl + url).subscribe({\n next: (res) => {\n this.apiLoadService.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.apiLoadService.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n post<T>(url: string, data: T, callback: (data: T) => void) {\n this.apiLoadService.load.set(true);\n this.httpClient.post<T>(this.baseUrl + url, data).subscribe({\n next: (res) => {\n this.apiLoadService.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.apiLoadService.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n info(url: string, data: JSONObject) {\n console.log(url, data);\n }\n\n error(url: string, error: JSONObject) {\n console.error(url, error);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@ class DsvCardComponent {
10
10
  image = input();
11
11
  alt = input();
12
12
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DsvCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DsvCardComponent, isStandalone: true, selector: "dsv-card", inputs: { avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dsv-card\">\n @if (image()) {\n <img src=\"{{ image() }}\" [alt]=\"alt()\" />\n }\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ title() }}</h2>\n <div class=\"dsv-card-subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\"></div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".dsv-card{width:auto;border:1px solid rgb(211,211,211);border-radius:4px;font-size:1rem;margin:5px;color:var(--text);background-color:var(--white)}.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}::ng-deep .dark .dsv-card{color:var(--text-dark);background-color:var(--background-dark)}.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}::ng-deep .dark .dsv-card .dsv-card-header .dsv-card-subtitle{color:#ffffffb3}.dsv-card .dsv-card-content{padding:10px}h2{margin:0;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvAvatarComponent, selector: "dsv-avatar", inputs: ["avatar", "color"], outputs: ["callback"] }] });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: DsvCardComponent, isStandalone: true, selector: "dsv-card", inputs: { avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dsv-card\">\n @if (image()) {\n <img src=\"{{ image() }}\" [alt]=\"alt()\" />\n }\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ title() }}</h2>\n <div class=\"dsv-card-subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\"></div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".dsv-card{width:auto;border:1px solid rgb(211,211,211);border-radius:4px;font-size:1rem;margin:5px;color:var(--text);background-color:var(--white)}.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}::ng-deep .dark .dsv-card{color:var(--text-dark);background-color:var(--background-dark)}.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}::ng-deep .dark .dsv-card .dsv-card-header .dsv-card-subtitle{color:#ffffffb3}.dsv-card .dsv-card-content{padding:10px}h2{margin:0;padding:0}::ng-deep .dark .dsv-card{border:1px solid rgb(30,30,30)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvAvatarComponent, selector: "dsv-avatar", inputs: ["avatar", "color"], outputs: ["callback"] }] });
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DsvCardComponent, decorators: [{
16
16
  type: Component,
17
- args: [{ selector: 'dsv-card', standalone: true, imports: [CommonModule, DsvAvatarComponent], template: "<div class=\"dsv-card\">\n @if (image()) {\n <img src=\"{{ image() }}\" [alt]=\"alt()\" />\n }\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ title() }}</h2>\n <div class=\"dsv-card-subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\"></div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".dsv-card{width:auto;border:1px solid rgb(211,211,211);border-radius:4px;font-size:1rem;margin:5px;color:var(--text);background-color:var(--white)}.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}::ng-deep .dark .dsv-card{color:var(--text-dark);background-color:var(--background-dark)}.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}::ng-deep .dark .dsv-card .dsv-card-header .dsv-card-subtitle{color:#ffffffb3}.dsv-card .dsv-card-content{padding:10px}h2{margin:0;padding:0}\n"] }]
17
+ args: [{ selector: 'dsv-card', standalone: true, imports: [CommonModule, DsvAvatarComponent], template: "<div class=\"dsv-card\">\n @if (image()) {\n <img src=\"{{ image() }}\" [alt]=\"alt()\" />\n }\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ title() }}</h2>\n <div class=\"dsv-card-subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\"></div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".dsv-card{width:auto;border:1px solid rgb(211,211,211);border-radius:4px;font-size:1rem;margin:5px;color:var(--text);background-color:var(--white)}.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}::ng-deep .dark .dsv-card{color:var(--text-dark);background-color:var(--background-dark)}.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}::ng-deep .dark .dsv-card .dsv-card-header .dsv-card-subtitle{color:#ffffffb3}.dsv-card .dsv-card-content{padding:10px}h2{margin:0;padding:0}::ng-deep .dark .dsv-card{border:1px solid rgb(30,30,30)}\n"] }]
18
18
  }] });
19
19
 
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-card.mjs","sources":["../../../projects/ng-dsv/ds/card/component/card.component.ts","../../../projects/ng-dsv/ds/card/component/card.component.html","../../../projects/ng-dsv/ds/card/ng-vagabond-lab-ng-dsv-ds-card.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, input } from '@angular/core';\nimport { DsvAvatarComponent } from '@ng-vagabond-lab/ng-dsv/ds/avatar';\n\n@Component({\n selector: 'dsv-card',\n standalone: true,\n imports: [CommonModule, DsvAvatarComponent],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class DsvCardComponent {\n avatar = input<string>();\n title = input<string>('');\n subtitle = input<string>('');\n image = input<string>();\n alt = input<string>();\n}\n","<div class=\"dsv-card\">\n @if (image()) {\n <img src=\"{{ image() }}\" [alt]=\"alt()\" />\n }\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ title() }}</h2>\n <div class=\"dsv-card-subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\"></div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,gBAAgB,CAAA;IAC3B,MAAM,GAAG,KAAK,EAAU;AACxB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC;IAC5B,KAAK,GAAG,KAAK,EAAU;IACvB,GAAG,GAAG,KAAK,EAAU;uGALV,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,ECX7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ydAkBA,EDXY,MAAA,EAAA,CAAA,kkBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI/B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,kkBAAA,CAAA,EAAA;;;AEP7C;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-card.mjs","sources":["../../../projects/ng-dsv/ds/card/component/card.component.ts","../../../projects/ng-dsv/ds/card/component/card.component.html","../../../projects/ng-dsv/ds/card/ng-vagabond-lab-ng-dsv-ds-card.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, input } from '@angular/core';\nimport { DsvAvatarComponent } from '@ng-vagabond-lab/ng-dsv/ds/avatar';\n\n@Component({\n selector: 'dsv-card',\n standalone: true,\n imports: [CommonModule, DsvAvatarComponent],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class DsvCardComponent {\n avatar = input<string>();\n title = input<string>('');\n subtitle = input<string>('');\n image = input<string>();\n alt = input<string>();\n}\n","<div class=\"dsv-card\">\n @if (image()) {\n <img src=\"{{ image() }}\" [alt]=\"alt()\" />\n }\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ title() }}</h2>\n <div class=\"dsv-card-subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\"></div>\n </div>\n <div class=\"dsv-card-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAWa,gBAAgB,CAAA;IAC3B,MAAM,GAAG,KAAK,EAAU;AACxB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC;IAC5B,KAAK,GAAG,KAAK,EAAU;IACvB,GAAG,GAAG,KAAK,EAAU;uGALV,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,ECX7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ydAkBA,EDXY,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI/B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA;;;AEP7C;;AAEG;;;;"}
@@ -0,0 +1,118 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, signal, Component, EventEmitter, HostListener, Output, HostBinding, Input, Directive, output, ViewChild } from '@angular/core';
3
+ import { ApiService } from '@ng-vagabond-lab/ng-dsv/api';
4
+
5
+ class FileShowContainer {
6
+ apiService = inject(ApiService);
7
+ src = input.required();
8
+ alt = input('Apperçu du Meme');
9
+ fileUrl = signal(this.apiService.baseUrl + '/file/download?fileName=');
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FileShowContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: FileShowContainer, isStandalone: true, selector: "dsv-file-show", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<img [src]=\"fileUrl() + src()\" [alt]=\"alt()\" width=\"100%\" />\n" });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FileShowContainer, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: "dsv-file-show", standalone: true, template: "<img [src]=\"fileUrl() + src()\" [alt]=\"alt()\" width=\"100%\" />\n" }]
16
+ }] });
17
+
18
+ class FileUploadDirective {
19
+ _enabled = false;
20
+ _dragInProgress = false;
21
+ set appDragDrop(value) {
22
+ this._enabled = value === '' ? true : !!value;
23
+ }
24
+ get dragInProgress() {
25
+ return this._dragInProgress;
26
+ }
27
+ dropped;
28
+ constructor() {
29
+ this.dropped = new EventEmitter();
30
+ }
31
+ handleDragOver(event) {
32
+ if (!this._enabled) {
33
+ return;
34
+ }
35
+ this.stopAndPreventDefault(event);
36
+ this._dragInProgress = true;
37
+ }
38
+ handleDragEnd(event) {
39
+ if (!this._enabled) {
40
+ return;
41
+ }
42
+ this.stopAndPreventDefault(event);
43
+ this._dragInProgress = false;
44
+ }
45
+ handleDrop(event) {
46
+ this.stopAndPreventDefault(event);
47
+ this._dragInProgress = false;
48
+ this.dropped.emit(event);
49
+ }
50
+ stopAndPreventDefault(e) {
51
+ e.stopPropagation();
52
+ e.preventDefault();
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FileUploadDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
55
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.0", type: FileUploadDirective, isStandalone: true, selector: "[appDragDrop]", inputs: { appDragDrop: "appDragDrop" }, outputs: { dropped: "dropped" }, host: { listeners: { "dragenter": "handleDragOver($event)", "dragover": "handleDragOver($event)", "dragleave": "handleDragEnd($event)", "dragend": "handleDragEnd($event)", "drop": "handleDrop($event)" }, properties: { "class.dragging": "this.dragInProgress" } }, ngImport: i0 });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FileUploadDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[appDragDrop]'
61
+ }]
62
+ }], ctorParameters: () => [], propDecorators: { appDragDrop: [{
63
+ type: Input
64
+ }], dragInProgress: [{
65
+ type: HostBinding,
66
+ args: ['class.dragging']
67
+ }], dropped: [{
68
+ type: Output
69
+ }], handleDragOver: [{
70
+ type: HostListener,
71
+ args: ['dragenter', ['$event']]
72
+ }, {
73
+ type: HostListener,
74
+ args: ['dragover', ['$event']]
75
+ }], handleDragEnd: [{
76
+ type: HostListener,
77
+ args: ['dragleave', ['$event']]
78
+ }, {
79
+ type: HostListener,
80
+ args: ['dragend', ['$event']]
81
+ }], handleDrop: [{
82
+ type: HostListener,
83
+ args: ['drop', ['$event']]
84
+ }] } });
85
+
86
+ class FileUploadComponent {
87
+ multiple = input(false);
88
+ fileType = input('');
89
+ dragDropEnabled = input(true);
90
+ filesChanged = output();
91
+ inputRef;
92
+ addFiles(files) {
93
+ this.filesChanged.emit(files);
94
+ }
95
+ handleFileDrop(event) {
96
+ if (event?.dataTransfer?.files?.length) {
97
+ const files = event.dataTransfer.files;
98
+ this.inputRef.nativeElement.files = files;
99
+ this.addFiles(files);
100
+ }
101
+ }
102
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
103
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: FileUploadComponent, isStandalone: true, selector: "dsv-file-upload", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: "fileType", publicName: "fileType", isSignal: true, isRequired: false, transformFunction: null }, dragDropEnabled: { classPropertyName: "dragDropEnabled", publicName: "dragDropEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<label\n class=\"drag-zone\"\n [appDragDrop]=\"dragDropEnabled()\"\n (dropped)=\"handleFileDrop($event)\"\n>\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n <ng-content></ng-content>\n</label>\n", styles: [":host{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .drag-zone{width:80%;min-height:200px;border:1px solid rgba(51,51,51,.5);display:flex;flex-direction:column;align-items:center;justify-content:space-around;cursor:pointer}:host .drag-zone.dragging{background-color:#cdcdff;border:3px dashed #999999}:host .drag-zone:focus-within{border:1px solid #999999}:host .visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}::ng-deep .dark :host{background:var(--text)!important}\n"], dependencies: [{ kind: "directive", type: FileUploadDirective, selector: "[appDragDrop]", inputs: ["appDragDrop"], outputs: ["dropped"] }] });
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: FileUploadComponent, decorators: [{
106
+ type: Component,
107
+ args: [{ selector: 'dsv-file-upload', standalone: true, imports: [FileUploadDirective], template: "<label\n class=\"drag-zone\"\n [appDragDrop]=\"dragDropEnabled()\"\n (dropped)=\"handleFileDrop($event)\"\n>\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n <ng-content></ng-content>\n</label>\n", styles: [":host{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .drag-zone{width:80%;min-height:200px;border:1px solid rgba(51,51,51,.5);display:flex;flex-direction:column;align-items:center;justify-content:space-around;cursor:pointer}:host .drag-zone.dragging{background-color:#cdcdff;border:3px dashed #999999}:host .drag-zone:focus-within{border:1px solid #999999}:host .visually-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}::ng-deep .dark :host{background:var(--text)!important}\n"] }]
108
+ }], propDecorators: { inputRef: [{
109
+ type: ViewChild,
110
+ args: ['fileInput']
111
+ }] } });
112
+
113
+ /**
114
+ * Generated bundle index. Do not edit.
115
+ */
116
+
117
+ export { FileShowContainer, FileUploadComponent, FileUploadDirective };
118
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-file.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-file.mjs","sources":["../../../projects/ng-dsv/ds/file/show/container/file.show.container.ts","../../../projects/ng-dsv/ds/file/show/container/file.show.container.html","../../../projects/ng-dsv/ds/file/upload/direcitve/file-upload-directives.ts","../../../projects/ng-dsv/ds/file/upload/component/file-upload.component.ts","../../../projects/ng-dsv/ds/file/upload/component/file-upload.component.html","../../../projects/ng-dsv/ds/file/ng-vagabond-lab-ng-dsv-ds-file.ts"],"sourcesContent":["import { Component, inject, input, signal } from \"@angular/core\";\nimport { ApiService } from \"@ng-vagabond-lab/ng-dsv/api\";\n\n@Component({\n selector: \"dsv-file-show\",\n standalone: true,\n templateUrl: \"./file.show.container.html\",\n})\nexport class FileShowContainer {\n apiService = inject(ApiService);\n\n src = input.required<string>();\n alt = input<string>('Apperçu du Meme');\n\n fileUrl = signal<string>(this.apiService.baseUrl + '/file/download?fileName=');\n}","<img [src]=\"fileUrl() + src()\" [alt]=\"alt()\" width=\"100%\" />\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n selector: '[appDragDrop]'\n})\nexport class FileUploadDirective {\n\n private _enabled: boolean = false;\n private _dragInProgress: boolean = false;\n\n @Input() set appDragDrop(value: any) {\n this._enabled = value === '' ? true : !!value;\n }\n\n\n @HostBinding('class.dragging') get dragInProgress() {\n return this._dragInProgress;\n }\n\n @Output() dropped: EventEmitter<any>;\n\n constructor() {\n this.dropped = new EventEmitter();\n }\n\n @HostListener('dragenter', ['$event'])\n @HostListener('dragover', ['$event'])\n private handleDragOver(event: DragEvent): void {\n if (!this._enabled) {\n return;\n }\n this.stopAndPreventDefault(event);\n this._dragInProgress = true;\n }\n\n @HostListener('dragleave', ['$event'])\n @HostListener('dragend', ['$event'])\n private handleDragEnd(event: DragEvent): void {\n if (!this._enabled) {\n return;\n }\n this.stopAndPreventDefault(event);\n this._dragInProgress = false;\n }\n\n @HostListener('drop', ['$event'])\n private handleDrop(event: UIEvent): void {\n this.stopAndPreventDefault(event);\n this._dragInProgress = false;\n this.dropped.emit(event);\n }\n\n stopAndPreventDefault(e: UIEvent): void {\n e.stopPropagation();\n e.preventDefault();\n }\n\n}\n","import { Component, ElementRef, input, output, ViewChild } from '@angular/core';\nimport { FileUploadDirective } from '../direcitve/file-upload-directives';\n\n@Component({\n selector: 'dsv-file-upload',\n standalone: true,\n imports: [FileUploadDirective],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss']\n})\nexport class FileUploadComponent {\n\n multiple = input<boolean>(false);\n fileType = input<string>('');\n dragDropEnabled = input<boolean>(true);\n\n filesChanged = output<FileList>();\n\n @ViewChild('fileInput')\n inputRef!: ElementRef<HTMLInputElement>;\n\n addFiles(files: FileList): void {\n this.filesChanged.emit(files);\n }\n\n handleFileDrop(event: DragEvent) {\n if (event?.dataTransfer?.files?.length) {\n const files = event.dataTransfer.files;\n this.inputRef.nativeElement.files = files;\n this.addFiles(files);\n }\n }\n}\n","<label\n class=\"drag-zone\"\n [appDragDrop]=\"dragDropEnabled()\"\n (dropped)=\"handleFileDrop($event)\"\n>\n <input\n type=\"file\"\n [accept]=\"fileType()\"\n [multiple]=\"multiple()\"\n (change)=\"addFiles(fileInput.files!)\"\n #fileInput\n class=\"visually-hidden\"\n />\n <ng-content></ng-content>\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -15,7 +15,8 @@ class ToastService {
15
15
  toast.duration = toast.duration ?? DURATION_DEFAULT;
16
16
  toast.durationLeft = toast.duration;
17
17
  toast.filled = toast.filled ?? false;
18
- this.toasts.update((toasts) => [...toasts, toast]);
18
+ const find = this.toastShows().find((t) => t.text === toast.text);
19
+ !find && this.toasts.update((toasts) => [...toasts, toast]);
19
20
  }
20
21
  consumeToast(toast) {
21
22
  this.toastShows.update((toasts) => [...toasts, toast]);
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-toast.mjs","sources":["../../../projects/ng-dsv/ds/toast/service/toast.service.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.html","../../../projects/ng-dsv/ds/toast/ng-vagabond-lab-ng-dsv-ds-toast.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { ToastDto } from '../dto/toast.dto';\n\nexport const MAX_TOASTS = 10;\nexport const DURATION_DEFAULT = 5000;\nexport const DURATION_TIMEOUT = 10;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n toastShows = signal<ToastDto[]>([]);\n toasts = signal<ToastDto[]>([]);\n\n showToast(toast: ToastDto) {\n toast.uuid = crypto.randomUUID();\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? DURATION_DEFAULT;\n toast.durationLeft = toast.duration;\n toast.filled = toast.filled ?? false;\n this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: ToastDto) {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n const interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n clearInterval(interval);\n this.closeToast(toast.uuid!);\n } else {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.durationLeft = toast.duration! - duration;\n }\n return oneToast;\n })\n );\n }\n }, DURATION_TIMEOUT);\n this.removeToastFromQueue(toast.uuid!);\n }\n\n closeToast(uuid: string) {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n\n removeToastFromQueue(uuid: string) {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject } from '@angular/core';\nimport { MAX_TOASTS, ToastService } from '../service/toast.service';\n\nexport type Theme = {\n primary: string;\n text: string;\n};\n\n@Component({\n selector: 'dsv-toast',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n})\nexport class DsvToastComponent {\n protected readonly toastService = inject(ToastService);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < MAX_TOASTS) {\n this.toastService.consumeToast(toast);\n }\n }\n });\n }\n}\n","<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </button>\n @if (toast.type === \"success\") {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === \"info\") {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === \"warning\") {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === \"error\") {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.durationLeft! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-toast.mjs","sources":["../../../projects/ng-dsv/ds/toast/service/toast.service.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.html","../../../projects/ng-dsv/ds/toast/ng-vagabond-lab-ng-dsv-ds-toast.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { ToastDto } from '../dto/toast.dto';\n\nexport const MAX_TOASTS = 10;\nexport const DURATION_DEFAULT = 5000;\nexport const DURATION_TIMEOUT = 10;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n toastShows = signal<ToastDto[]>([]);\n toasts = signal<ToastDto[]>([]);\n\n showToast(toast: ToastDto) {\n toast.uuid = crypto.randomUUID();\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? DURATION_DEFAULT;\n toast.durationLeft = toast.duration;\n toast.filled = toast.filled ?? false;\n const find = this.toastShows().find((t) => t.text === toast.text);\n !find && this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: ToastDto) {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n const interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n clearInterval(interval);\n this.closeToast(toast.uuid!);\n } else {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.durationLeft = toast.duration! - duration;\n }\n return oneToast;\n })\n );\n }\n }, DURATION_TIMEOUT);\n this.removeToastFromQueue(toast.uuid!);\n }\n\n closeToast(uuid: string) {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n\n removeToastFromQueue(uuid: string) {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject } from '@angular/core';\nimport { MAX_TOASTS, ToastService } from '../service/toast.service';\n\nexport type Theme = {\n primary: string;\n text: string;\n};\n\n@Component({\n selector: 'dsv-toast',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n})\nexport class DsvToastComponent {\n protected readonly toastService = inject(ToastService);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < MAX_TOASTS) {\n this.toastService.consumeToast(toast);\n }\n }\n });\n }\n}\n","<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </button>\n @if (toast.type === \"success\") {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === \"info\") {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === \"warning\") {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === \"error\") {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.durationLeft! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-vagabond-lab/ng-dsv",
3
- "version": "0.0.67",
3
+ "version": "0.0.69",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0"
@@ -23,14 +23,14 @@
23
23
  "types": "./api/index.d.ts",
24
24
  "default": "./fesm2022/ng-vagabond-lab-ng-dsv-api.mjs"
25
25
  },
26
- "./base": {
27
- "types": "./base/index.d.ts",
28
- "default": "./fesm2022/ng-vagabond-lab-ng-dsv-base.mjs"
29
- },
30
26
  "./auth": {
31
27
  "types": "./auth/index.d.ts",
32
28
  "default": "./fesm2022/ng-vagabond-lab-ng-dsv-auth.mjs"
33
29
  },
30
+ "./base": {
31
+ "types": "./base/index.d.ts",
32
+ "default": "./fesm2022/ng-vagabond-lab-ng-dsv-base.mjs"
33
+ },
34
34
  "./environment": {
35
35
  "types": "./environment/index.d.ts",
36
36
  "default": "./fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs"
@@ -59,13 +59,17 @@
59
59
  "types": "./ds/button/index.d.ts",
60
60
  "default": "./fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs"
61
61
  },
62
+ "./ds/container": {
63
+ "types": "./ds/container/index.d.ts",
64
+ "default": "./fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs"
65
+ },
62
66
  "./ds/card": {
63
67
  "types": "./ds/card/index.d.ts",
64
68
  "default": "./fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs"
65
69
  },
66
- "./ds/container": {
67
- "types": "./ds/container/index.d.ts",
68
- "default": "./fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs"
70
+ "./ds/file": {
71
+ "types": "./ds/file/index.d.ts",
72
+ "default": "./fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs"
69
73
  },
70
74
  "./ds/form": {
71
75
  "types": "./ds/form/index.d.ts",