@ng-vagabond-lab/ng-dsv 0.1.99 → 0.1.100

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.
Files changed (52) hide show
  1. package/assets/global.scss +6 -0
  2. package/assets/style.scss +6 -6
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +10 -9
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +3 -96
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +2 -2
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +6 -9
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +2 -2
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +2 -2
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +10 -10
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +10 -10
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +2 -2
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +2 -2
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs.map +1 -1
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +2 -2
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs.map +1 -1
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +2 -2
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +4 -4
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +2 -2
  30. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
  31. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +4 -4
  32. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
  33. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +2 -2
  34. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs.map +1 -1
  35. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +92 -3
  36. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
  37. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +2 -2
  38. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
  39. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +2 -2
  40. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -1
  41. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +2 -2
  42. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
  43. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-admin.mjs +4 -4
  44. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-admin.mjs.map +1 -1
  45. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-auth.mjs +24 -16
  46. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-auth.mjs.map +1 -1
  47. package/package.json +1 -1
  48. package/types/ng-vagabond-lab-ng-dsv-api.d.ts +5 -5
  49. package/types/ng-vagabond-lab-ng-dsv-base.d.ts +6 -43
  50. package/types/ng-vagabond-lab-ng-dsv-ds-modal.d.ts +1 -1
  51. package/types/ng-vagabond-lab-ng-dsv-ds-scroll.d.ts +34 -2
  52. package/types/ng-vagabond-lab-ng-dsv-modules-auth.d.ts +24 -22
@@ -94,4 +94,10 @@ hr {
94
94
 
95
95
  .subtitle {
96
96
  color: var(--subtitle) !important;
97
+ }
98
+
99
+ @media screen and (max-width: 800px) {
100
+ i[class^="ri-"] {
101
+ font-size: 1.3rem !important;
102
+ }
97
103
  }
package/assets/style.scss CHANGED
@@ -73,27 +73,27 @@
73
73
  }
74
74
 
75
75
  &.outlined.default {
76
- border: 1px solid var(--text);
76
+ border: 1px solid var(--text) !important;
77
77
  }
78
78
 
79
79
  &.outlined.primary {
80
- border: 1px solid var(--primary);
80
+ border: 1px solid var(--primary) !important;
81
81
  }
82
82
 
83
83
  &.outlined.success {
84
- border: 1px solid var(--success);
84
+ border: 1px solid var(--success) !important;
85
85
  }
86
86
 
87
87
  &.outlined.info {
88
- border: 1px solid var(--info);
88
+ border: 1px solid var(--info) !important;
89
89
  }
90
90
 
91
91
  &.outlined.warning {
92
- border: 1px solid var(--warning);
92
+ border: 1px solid var(--warning) !important;
93
93
  }
94
94
 
95
95
  &.outlined.error {
96
- border: 1px solid var(--error);
96
+ border: 1px solid var(--error) !important;
97
97
  }
98
98
  }
99
99
 
@@ -45,17 +45,17 @@ class ApiService {
45
45
  setBaseUrl(url) {
46
46
  this.baseUrl = url;
47
47
  }
48
- get(url, callback) {
49
- this.doSubscribe(url, this.httpClient.get(this.baseUrl + url), callback);
48
+ get(url, callback, callbackError = () => { }) {
49
+ this.doSubscribe(url, this.httpClient.get(this.baseUrl + url), callback, callbackError);
50
50
  }
51
- post(url, data, callback, withCredentials = false) {
52
- this.doSubscribe(url, this.httpClient.post(this.baseUrl + url, data, { withCredentials }), callback);
51
+ post(url, data, callback = () => { }, withCredentials = false, callbackError = () => { }) {
52
+ this.doSubscribe(url, this.httpClient.post(this.baseUrl + url, data, { withCredentials }), callback, callbackError);
53
53
  }
54
- put(url, data, callback) {
55
- this.doSubscribe(url, this.httpClient.put(this.baseUrl + url, data), callback);
54
+ put(url, data, callback = () => { }, callbackError = () => { }) {
55
+ this.doSubscribe(url, this.httpClient.put(this.baseUrl + url, data), callback, callbackError);
56
56
  }
57
- delete(url, callback) {
58
- this.doSubscribe(url, this.httpClient.delete(this.baseUrl + url), callback);
57
+ delete(url, callback, callbackError = () => { }) {
58
+ this.doSubscribe(url, this.httpClient.delete(this.baseUrl + url), callback, callbackError);
59
59
  }
60
60
  findById(endPoint, id, callback) {
61
61
  this.get(endPoint + '/' + id, callback);
@@ -95,7 +95,7 @@ class ApiService {
95
95
  });
96
96
  }
97
97
  }
98
- doSubscribe(url, observable, callback) {
98
+ doSubscribe(url, observable, callback, callbackError = () => { }) {
99
99
  this.load.set(true);
100
100
  observable.subscribe({
101
101
  next: (res) => {
@@ -105,6 +105,7 @@ class ApiService {
105
105
  },
106
106
  error: (error) => {
107
107
  this.load.set(false);
108
+ callbackError();
108
109
  this.error(url, error);
109
110
  },
110
111
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-api.mjs","sources":["../../../projects/ng-dsv/api/service/api.resource.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/service/search/base.search.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import { httpResource } from '@angular/common/http';\nimport { Injectable, ResourceRef, signal } from '@angular/core';\nimport { OrderState } from '../public-api';\n\nexport interface ApiFindBy {\n endPoint?: string;\n fields?: string;\n values?: string;\n first?: number;\n max?: number;\n order?: OrderState;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiResourceService<T> {\n url = signal<string | undefined>(undefined);\n\n resource: ResourceRef<T | undefined> = httpResource(() => ({\n url: `${this.url()}`,\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n params: {},\n reportProgress: true,\n transferCache: true,\n keepalive: true,\n mode: 'same-origin',\n redirect: 'error',\n priority: 'high',\n cache: 'force-cache',\n credentials: 'include',\n referrer: 'no-referrer',\n integrity: 'sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GhEXAMPLEKEY=',\n }));\n\n constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Observable } from 'rxjs';\nimport { ApiDto, ID, JSONObject, OrderState } from '../dto/api.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n readonly httpClient = inject(HttpClient);\n readonly toastService = inject(ToastService);\n readonly platformService = inject(PlatformService);\n\n load = signal<boolean>(false);\n baseUrl: string = '';\n\n setBaseUrl(url: string) {\n this.baseUrl = url;\n }\n\n get<T>(url: string, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.get<T>(this.baseUrl + url), callback);\n }\n\n post<TBody, TResponse = TBody>(\n url: string,\n data: TBody,\n callback: (data: TResponse) => void,\n withCredentials: boolean = false,\n ) {\n this.doSubscribe(\n url,\n this.httpClient.post<TResponse>(this.baseUrl + url, data, { withCredentials }),\n callback,\n );\n }\n\n put<TBody, TResponse = TBody>(url: string, data: TBody, callback: (data: TResponse) => void) {\n this.doSubscribe(url, this.httpClient.put<TResponse>(this.baseUrl + url, data), callback);\n }\n\n delete<T>(url: string, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.delete<T>(this.baseUrl + url), callback);\n }\n\n findById<T>(endPoint: string, id: ID, callback: (data: T) => void) {\n this.get<T>(endPoint + '/' + id, callback);\n }\n\n findBy<T>(\n endPoint: string,\n fields: string,\n values: string,\n first: number,\n max: number,\n order: OrderState,\n callback: (data: T) => void,\n ) {\n const orderType: string = order.orderAsc ? '' : 'Desc';\n const orderConst: string = order.order ? '>>' + order.order + orderType : '';\n const fieldsComplete = fields + orderConst;\n this.get<T>(\n endPoint +\n '?fields=' +\n encodeURI(fieldsComplete) +\n '&values=' +\n encodeURI(values) +\n '&first=' +\n first +\n '&max=' +\n max,\n (data: T) => {\n callback(data);\n },\n );\n }\n\n countBy(endPoint: string, fields: string, values: string, callback: (data: { count: number }) => void) {\n return this.get<{ count: number }>(\n endPoint + '?fields=' + encodeURI(fields) + '&values=' + values,\n (data: { count: number }) => {\n callback(data);\n },\n );\n }\n\n createOrUpdate<T extends ApiDto>(endPoint: string, data: T, callback: (data: T) => void) {\n if (data.id !== null && data.id !== undefined && data.id !== '' && Number(data.id) > 0) {\n this.put<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'UPDATE_OK', type: 'success' });\n callback(dateReturn);\n });\n } else {\n this.post<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'CREATION_OK', type: 'success' });\n callback(dateReturn);\n });\n }\n }\n\n doSubscribe<T>(url: string, observable: Observable<T>, callback: (data: T) => void) {\n this.load.set(true);\n observable.subscribe({\n next: (res) => {\n this.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n info(url: string, data: JSONObject) {\n if (this.isPlatformBrowser()) {\n console.log(url, data);\n }\n }\n\n error(url: string, error: JSONObject) {\n if (this.isPlatformBrowser()) {\n console.error(url, error);\n }\n }\n\n isPlatformBrowser() {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Store } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { PageableDto } from '../../public-api';\nimport { ApiService } from '../api.service';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class BaseSearchService<T> {\n readonly apiService = inject(ApiService);\n readonly platformService = inject(PlatformService);\n\n datas = new Store<T>();\n\n page = signal<number>(1);\n isLoading = signal<boolean>(false);\n stopLoad = signal<boolean>(false);\n search = signal<string>('');\n\n doLoad(\n url: string,\n search: string = '',\n page: number = 1,\n nbPage: number = 20,\n field: string = 'content',\n ) {\n const params = '?page=' + page + '&nbPage=' + nbPage + '&query=' + search;\n\n this.search.set(search);\n if (page === 1) {\n this.stopLoad.set(false);\n }\n if (this.stopLoad()) {\n return;\n }\n this.isLoading.set(true);\n this.apiService.get<PageableDto<T>>(url + params, (data) => {\n this.page.set(page + nbPage);\n this.datas.updateForPage(page, data[field as keyof PageableDto<T>] as T[]);\n if ((data[field as keyof PageableDto<T>] as T[])?.length === 0) {\n this.stopLoad.set(true);\n }\n this.isLoading.set(false);\n });\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/service/api.resource.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/service/search/base.search.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import { httpResource } from '@angular/common/http';\nimport { Injectable, ResourceRef, signal } from '@angular/core';\nimport { OrderState } from '../public-api';\n\nexport interface ApiFindBy {\n endPoint?: string;\n fields?: string;\n values?: string;\n first?: number;\n max?: number;\n order?: OrderState;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiResourceService<T> {\n url = signal<string | undefined>(undefined);\n\n resource: ResourceRef<T | undefined> = httpResource(() => ({\n url: `${this.url()}`,\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n params: {},\n reportProgress: true,\n transferCache: true,\n keepalive: true,\n mode: 'same-origin',\n redirect: 'error',\n priority: 'high',\n cache: 'force-cache',\n credentials: 'include',\n referrer: 'no-referrer',\n integrity: 'sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GhEXAMPLEKEY=',\n }));\n\n constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Observable } from 'rxjs';\nimport { ApiDto, ID, JSONObject, OrderState } from '../dto/api.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n readonly httpClient = inject(HttpClient);\n readonly toastService = inject(ToastService);\n readonly platformService = inject(PlatformService);\n\n load = signal<boolean>(false);\n baseUrl: string = '';\n\n setBaseUrl(url: string) {\n this.baseUrl = url;\n }\n\n get<T>(url: string, callback: (data: T) => void, callbackError: () => void = () => {}) {\n this.doSubscribe(url, this.httpClient.get<T>(this.baseUrl + url), callback, callbackError);\n }\n\n post<TBody, TResponse = TBody>(\n url: string,\n data: TBody,\n callback: (data: TResponse) => void = () => {},\n withCredentials: boolean = false,\n callbackError: () => void = () => {},\n ) {\n this.doSubscribe(\n url,\n this.httpClient.post<TResponse>(this.baseUrl + url, data, { withCredentials }),\n callback,\n callbackError,\n );\n }\n\n put<TBody, TResponse = TBody>(\n url: string,\n data: TBody,\n callback: (data: TResponse) => void = () => {},\n callbackError: () => void = () => {},\n ) {\n this.doSubscribe(\n url,\n this.httpClient.put<TResponse>(this.baseUrl + url, data),\n callback,\n callbackError,\n );\n }\n\n delete<T>(url: string, callback: (data: T) => void, callbackError: () => void = () => {}) {\n this.doSubscribe(url, this.httpClient.delete<T>(this.baseUrl + url), callback, callbackError);\n }\n\n findById<T>(endPoint: string, id: ID, callback: (data: T) => void) {\n this.get<T>(endPoint + '/' + id, callback);\n }\n\n findBy<T>(\n endPoint: string,\n fields: string,\n values: string,\n first: number,\n max: number,\n order: OrderState,\n callback: (data: T) => void,\n ) {\n const orderType: string = order.orderAsc ? '' : 'Desc';\n const orderConst: string = order.order ? '>>' + order.order + orderType : '';\n const fieldsComplete = fields + orderConst;\n this.get<T>(\n endPoint +\n '?fields=' +\n encodeURI(fieldsComplete) +\n '&values=' +\n encodeURI(values) +\n '&first=' +\n first +\n '&max=' +\n max,\n (data: T) => {\n callback(data);\n },\n );\n }\n\n countBy(endPoint: string, fields: string, values: string, callback: (data: { count: number }) => void) {\n return this.get<{ count: number }>(\n endPoint + '?fields=' + encodeURI(fields) + '&values=' + values,\n (data: { count: number }) => {\n callback(data);\n },\n );\n }\n\n createOrUpdate<T extends ApiDto>(endPoint: string, data: T, callback: (data: T) => void) {\n if (data.id !== null && data.id !== undefined && data.id !== '' && Number(data.id) > 0) {\n this.put<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'UPDATE_OK', type: 'success' });\n callback(dateReturn);\n });\n } else {\n this.post<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'CREATION_OK', type: 'success' });\n callback(dateReturn);\n });\n }\n }\n\n doSubscribe<T>(\n url: string,\n observable: Observable<T>,\n callback: (data: T) => void,\n callbackError: () => void = () => {},\n ) {\n this.load.set(true);\n observable.subscribe({\n next: (res) => {\n this.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.load.set(false);\n callbackError();\n this.error(url, error);\n },\n });\n }\n\n info(url: string, data: JSONObject) {\n if (this.isPlatformBrowser()) {\n console.log(url, data);\n }\n }\n\n error(url: string, error: JSONObject) {\n if (this.isPlatformBrowser()) {\n console.error(url, error);\n }\n }\n\n isPlatformBrowser() {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Store } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { PageableDto } from '../../public-api';\nimport { ApiService } from '../api.service';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class BaseSearchService<T> {\n readonly apiService = inject(ApiService);\n readonly platformService = inject(PlatformService);\n\n datas = new Store<T>();\n\n page = signal<number>(1);\n isLoading = signal<boolean>(false);\n stopLoad = signal<boolean>(false);\n search = signal<string>('');\n\n doLoad(\n url: string,\n search: string = '',\n page: number = 1,\n nbPage: number = 20,\n field: string = 'content',\n ) {\n const params = '?page=' + page + '&nbPage=' + nbPage + '&query=' + search;\n\n this.search.set(search);\n if (page === 1) {\n this.stopLoad.set(false);\n }\n if (this.stopLoad()) {\n return;\n }\n this.isLoading.set(true);\n this.apiService.get<PageableDto<T>>(url + params, (data) => {\n this.page.set(page + nbPage);\n this.datas.updateForPage(page, data[field as keyof PageableDto<T>] as T[]);\n if ((data[field as keyof PageableDto<T>] as T[])?.length === 0) {\n this.stopLoad.set(true);\n }\n this.isLoading.set(false);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,54 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, signal, effect, TransferState, makeStateKey, Directive, Injectable } from '@angular/core';
2
+ import { inject, TransferState, makeStateKey, Directive } from '@angular/core';
3
3
  import { toSignal } from '@angular/core/rxjs-interop';
4
- import { Router, NavigationEnd, Scroll, ActivatedRoute } from '@angular/router';
5
- import { ApiService } from '@ng-vagabond-lab/ng-dsv/api';
6
- import { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';
7
- import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
8
- import { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';
9
- import { filter, map } from 'rxjs';
4
+ import { ActivatedRoute } from '@angular/router';
10
5
  import { Title, Meta } from '@angular/platform-browser';
11
6
 
12
- class BaseAppComponent {
13
- platformService = inject(PlatformService);
14
- storageService = inject(StorageService);
15
- environmentService = inject(EnvironmentService);
16
- apiService = inject(ApiService);
17
- scrollService = inject(ScrollService);
18
- router = inject(Router);
19
- currentUrl = toSignal(this.router.events.pipe(filter((event) => event instanceof NavigationEnd), map((event) => event.urlAfterRedirects)), { initialValue: this.router.url });
20
- scroll = signal(0, ...(ngDevMode ? [{ debugName: "scroll" }] : /* istanbul ignore next */ []));
21
- load = signal(false, ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
22
- constructor() {
23
- inject(Router)
24
- .events.pipe(filter((event) => event instanceof Scroll), map((event) => event.position))
25
- .subscribe(() => {
26
- if (this.platformService.isPlatformBrowser() && this.scrollService.getScroll()) {
27
- const divScrolls = document.getElementsByClassName('scroll');
28
- Array.from(divScrolls).forEach((scroll) => {
29
- setTimeout(() => {
30
- scroll?.scrollTo(0, this.scrollService.getScroll() ?? 0);
31
- }, 100);
32
- });
33
- }
34
- });
35
- effect(() => {
36
- if (this.environmentService.env()) {
37
- const apiUrl = this.environmentService.env()?.API_URL;
38
- this.apiService.setBaseUrl(apiUrl);
39
- this.load.set(true);
40
- }
41
- });
42
- }
43
- doScroll() {
44
- const divScroll = document.getElementsByClassName('scroll')?.[0];
45
- if (document.getElementsByClassName('scroll').length === 1) {
46
- this.scrollService.saveScroll(divScroll.scrollTop);
47
- this.scrollService.scroll.set(divScroll.scrollTop);
48
- }
49
- }
50
- }
51
-
52
7
  class BaseSeoContainer {
53
8
  title = inject(Title);
54
9
  transferState = inject(TransferState);
@@ -68,17 +23,6 @@ class BaseRouteComponent extends BaseSeoContainer {
68
23
  routeObservable = null;
69
24
  }
70
25
 
71
- class BaseScrollComponent extends BaseSeoContainer {
72
- scrollService = inject(ScrollService);
73
- loadMore() {
74
- if (!this.scrollService.getlocked()) {
75
- this.scrollService.doBlocked();
76
- this.doLoad();
77
- this.scrollService.doBlockedWithTimeout(false, 500);
78
- }
79
- }
80
- }
81
-
82
26
  class BaseService {
83
27
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BaseService, deps: [], target: i0.ɵɵFactoryTarget.Directive });
84
28
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: BaseService, isStandalone: true, ngImport: i0 });
@@ -87,43 +31,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
87
31
  type: Directive
88
32
  }] });
89
33
 
90
- class ScrollService {
91
- scrolls = signal(new Map(), ...(ngDevMode ? [{ debugName: "scrolls" }] : /* istanbul ignore next */ []));
92
- blocked = signal(new Map(), ...(ngDevMode ? [{ debugName: "blocked" }] : /* istanbul ignore next */ []));
93
- scroll = signal(0, ...(ngDevMode ? [{ debugName: "scroll" }] : /* istanbul ignore next */ []));
94
- saveScroll(scrollTop) {
95
- this.scrolls.update((value) => {
96
- if (scrollTop !== 0) {
97
- value.set(location.href, scrollTop);
98
- }
99
- return value;
100
- });
101
- }
102
- getScroll() {
103
- return this.scrolls().get(location.href);
104
- }
105
- doBlocked(blocked = true) {
106
- this.blocked.update((value) => {
107
- value.set(location.href, blocked);
108
- return value;
109
- });
110
- }
111
- doBlockedWithTimeout(blocked, timeout = 1000) {
112
- setTimeout(() => {
113
- this.doBlocked(blocked);
114
- }, timeout);
115
- }
116
- getlocked() {
117
- return this.blocked().get(location.href);
118
- }
119
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
120
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ScrollService, providedIn: 'root' });
121
- }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ScrollService, decorators: [{
123
- type: Injectable,
124
- args: [{ providedIn: 'root' }]
125
- }] });
126
-
127
34
  const isCallback = (callback) => {
128
35
  const listeners = callback['listeners'];
129
36
  return listeners?.length > 0;
@@ -133,5 +40,5 @@ const isCallback = (callback) => {
133
40
  * Generated bundle index. Do not edit.
134
41
  */
135
42
 
136
- export { BaseAppComponent, BaseRouteComponent, BaseScrollComponent, BaseSeoContainer, BaseService, ScrollService, isCallback };
43
+ export { BaseRouteComponent, BaseSeoContainer, BaseService, isCallback };
137
44
  //# sourceMappingURL=ng-vagabond-lab-ng-dsv-base.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-base.mjs","sources":["../../../projects/ng-dsv/base/component/base.app.component.ts","../../../projects/ng-dsv/base/component/base.seo.container.ts","../../../projects/ng-dsv/base/component/base.route.component.ts","../../../projects/ng-dsv/base/component/base.scroll.component.ts","../../../projects/ng-dsv/base/service/base.service.ts","../../../projects/ng-dsv/base/service/scroll.service.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { effect, inject, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, Scroll } from '@angular/router';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { filter, map } from 'rxjs';\nimport { ScrollService } from '../public-api';\n\nexport abstract class BaseAppComponent {\n readonly platformService = inject(PlatformService);\n readonly storageService: StorageService = inject(StorageService);\n readonly environmentService = inject(EnvironmentService);\n readonly apiService = inject(ApiService);\n readonly scrollService = inject(ScrollService);\n readonly router = inject(Router);\n\n currentUrl = toSignal(\n this.router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n map((event) => event.urlAfterRedirects),\n ),\n { initialValue: this.router.url },\n );\n scroll = signal<number>(0);\n\n load = signal<boolean>(false);\n\n constructor() {\n inject(Router)\n .events.pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n map((event: Scroll) => event.position),\n )\n .subscribe(() => {\n if (this.platformService.isPlatformBrowser() && this.scrollService.getScroll()) {\n const divScrolls = document.getElementsByClassName('scroll');\n Array.from(divScrolls).forEach((scroll) => {\n setTimeout(() => {\n scroll?.scrollTo(0, this.scrollService.getScroll() ?? 0);\n }, 100);\n });\n }\n });\n\n effect(() => {\n if (this.environmentService.env()) {\n const apiUrl = this.environmentService.env()?.API_URL!;\n this.apiService.setBaseUrl(apiUrl);\n this.load.set(true);\n }\n });\n }\n\n doScroll() {\n const divScroll = document.getElementsByClassName('scroll')?.[0];\n if (document.getElementsByClassName('scroll').length === 1) {\n this.scrollService.saveScroll(divScroll.scrollTop);\n this.scrollService.scroll.set(divScroll.scrollTop);\n }\n }\n}\n","import { inject, makeStateKey, TransferState } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\nexport abstract class BaseSeoContainer {\n public readonly title = inject(Title);\n public readonly transferState = inject(TransferState);\n public readonly meta = inject(Meta);\n\n setMeta(titleApp: string, title: string, description: string, image?: string) {\n const newTitle = titleApp + ' - ' + title;\n this.title.setTitle(newTitle);\n this.transferState.set(makeStateKey<string>('title'), newTitle);\n this.meta.updateTag({ name: 'description', content: description });\n image && this.meta.updateTag({ property: 'og:image', content: image });\n }\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BaseSeoContainer } from './base.seo.container';\n\nexport abstract class BaseRouteComponent extends BaseSeoContainer {\n activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n routeParams = toSignal(this.activatedRoute.params);\n\n routeObservable: Subscription | null = null;\n}\n","import { inject } from '@angular/core';\nimport { BaseSeoContainer, ScrollService } from '../public-api';\n\nexport abstract class BaseScrollComponent extends BaseSeoContainer {\n readonly scrollService = inject(ScrollService);\n\n loadMore() {\n if (!this.scrollService.getlocked()) {\n this.scrollService.doBlocked();\n this.doLoad();\n this.scrollService.doBlockedWithTimeout(false, 500);\n }\n }\n\n abstract doLoad(): void;\n}\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class BaseService {}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService {\n scrolls = signal<Map<string, number>>(new Map());\n blocked = signal<Map<string, boolean>>(new Map());\n scroll = signal<number>(0);\n\n saveScroll(scrollTop: number) {\n this.scrolls.update((value) => {\n if (scrollTop !== 0) {\n value.set(location.href, scrollTop);\n }\n return value;\n });\n }\n\n getScroll() {\n return this.scrolls().get(location.href);\n }\n\n doBlocked(blocked: boolean = true) {\n this.blocked.update((value) => {\n value.set(location.href, blocked);\n return value;\n });\n }\n\n doBlockedWithTimeout(blocked: boolean, timeout: number = 1000) {\n setTimeout(() => {\n this.doBlocked(blocked);\n }, timeout);\n }\n\n getlocked() {\n return this.blocked().get(location.href);\n }\n}\n","import { OutputEmitterRef } from '@angular/core';\n\nexport const isCallback = <T>(callback: OutputEmitterRef<T>) => {\n const listeners = callback['listeners' as keyof OutputEmitterRef<T>];\n return listeners?.length > 0;\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-base.mjs","sources":["../../../projects/ng-dsv/base/component/base.seo.container.ts","../../../projects/ng-dsv/base/component/base.route.component.ts","../../../projects/ng-dsv/base/service/base.service.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { inject, makeStateKey, TransferState } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\nexport abstract class BaseSeoContainer {\n public readonly title = inject(Title);\n public readonly transferState = inject(TransferState);\n public readonly meta = inject(Meta);\n\n setMeta(titleApp: string, title: string, description: string, image?: string) {\n const newTitle = titleApp + ' - ' + title;\n this.title.setTitle(newTitle);\n this.transferState.set(makeStateKey<string>('title'), newTitle);\n this.meta.updateTag({ name: 'description', content: description });\n image && this.meta.updateTag({ property: 'og:image', content: image });\n }\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BaseSeoContainer } from './base.seo.container';\n\nexport abstract class BaseRouteComponent extends BaseSeoContainer {\n activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n routeParams = toSignal(this.activatedRoute.params);\n\n routeObservable: Subscription | null = null;\n}\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class BaseService {}\n","import { OutputEmitterRef } from '@angular/core';\n\nexport const isCallback = <T>(callback: OutputEmitterRef<T>) => {\n const listeners = callback['listeners' as keyof OutputEmitterRef<T>];\n return listeners?.length > 0;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAGsB,gBAAgB,CAAA;AAClB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAEnC,IAAA,OAAO,CAAC,QAAgB,EAAE,KAAa,EAAE,WAAmB,EAAE,KAAc,EAAA;AACxE,QAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAS,OAAO,CAAC,EAAE,QAAQ,CAAC;AAC/D,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClE,QAAA,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC1E;AACH;;ACTK,MAAgB,kBAAmB,SAAQ,gBAAgB,CAAA;AAC7D,IAAA,cAAc,GAAG,MAAM,CAAiB,cAAc,CAAC;IAEvD,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IAElD,eAAe,GAAwB,IAAI;AAC9C;;MCTqB,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACAM,MAAM,UAAU,GAAG,CAAI,QAA6B,KAAI;AAC3D,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAwC,CAAC;AACpE,IAAA,OAAO,SAAS,EAAE,MAAM,GAAG,CAAC;AAChC;;ACLA;;AAEG;;;;"}
@@ -16,11 +16,11 @@ class DsvAccordionComponent {
16
16
  this.isOpen.update((tootle) => !tootle);
17
17
  }
18
18
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvAccordionComponent, isStandalone: true, selector: "dsv-accordion", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<a\n class=\"dsv-accordion-header\"\n (click)=\"doToogle()\"\n>\n {{ titleText() | translate }}\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\"></i>\n }\n</a>\n<div\n class=\"dsv-accordion-text\"\n [class.open]=\"isOpen() === true\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;gap:7px;width:calc(100% - 40px);margin:10px;padding:10px;background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:5px 10px}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-text{display:flex;width:calc(100% - 20px);overflow:hidden;padding:0 10px;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;opacity:1;height:auto}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvAccordionComponent, isStandalone: true, selector: "dsv-accordion", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<a\n class=\"dsv-accordion-header\"\n (click)=\"doToogle()\"\n>\n {{ titleText() | translate }}\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\"></i>\n }\n</a>\n<div\n class=\"dsv-accordion-text\"\n [class.open]=\"isOpen() === true\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{--accordion-margin: 10px;--accordion-padding: 10px;--accordion-width: calc(100% - 40px) ;--accordion-header-padding: 5px 10px;--accordion-text-display: flex;--accordion-text-padding: 0px 10px;--accordion-text-width: calc(100% - 20px) ;display:flex;flex-direction:column;gap:7px;margin:var(--accordion-margin);padding:var(--accordion-padding);width:var(--accordion-width);background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:var(--accordion-header-padding)}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-text{display:var(--accordion-text-display);width:var(--accordion-text-width);padding:var(--accordion-text-padding);overflow:hidden;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;opacity:1;height:auto}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
20
20
  }
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvAccordionComponent, decorators: [{
22
22
  type: Component,
23
- args: [{ selector: 'dsv-accordion', imports: [TranslatePipe], template: "<a\n class=\"dsv-accordion-header\"\n (click)=\"doToogle()\"\n>\n {{ titleText() | translate }}\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\"></i>\n }\n</a>\n<div\n class=\"dsv-accordion-text\"\n [class.open]=\"isOpen() === true\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:flex;flex-direction:column;gap:7px;width:calc(100% - 40px);margin:10px;padding:10px;background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:5px 10px}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-text{display:flex;width:calc(100% - 20px);overflow:hidden;padding:0 10px;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;opacity:1;height:auto}\n"] }]
23
+ args: [{ selector: 'dsv-accordion', imports: [TranslatePipe], template: "<a\n class=\"dsv-accordion-header\"\n (click)=\"doToogle()\"\n>\n {{ titleText() | translate }}\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\"></i>\n }\n</a>\n<div\n class=\"dsv-accordion-text\"\n [class.open]=\"isOpen() === true\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{--accordion-margin: 10px;--accordion-padding: 10px;--accordion-width: calc(100% - 40px) ;--accordion-header-padding: 5px 10px;--accordion-text-display: flex;--accordion-text-padding: 0px 10px;--accordion-text-width: calc(100% - 20px) ;display:flex;flex-direction:column;gap:7px;margin:var(--accordion-margin);padding:var(--accordion-padding);width:var(--accordion-width);background-color:var(--background-card);position:relative;border-radius:0}:host .dsv-accordion-header{display:flex;width:95%;font-weight:700;cursor:pointer;padding:var(--accordion-header-padding)}:host .dsv-accordion-header i{position:absolute;right:10px}:host .dsv-accordion-text{display:var(--accordion-text-display);width:var(--accordion-text-width);padding:var(--accordion-text-padding);overflow:hidden;opacity:0;height:0;transition:transform .3s ease-out,opacity .2s ease-out,height .2s ease-out}:host .dsv-accordion-text.open{padding:10px;opacity:1;height:auto}\n"] }]
24
24
  }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
25
25
 
26
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-accordion.mjs","sources":["../../../projects/ng-dsv/ds/accordion/component/accordion.component.ts","../../../projects/ng-dsv/ds/accordion/component/accordion.component.html","../../../projects/ng-dsv/ds/accordion/ng-vagabond-lab-ng-dsv-ds-accordion.ts"],"sourcesContent":["import { Component, effect, input, signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-accordion',\n imports: [TranslatePipe],\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class DsvAccordionComponent {\n open = input<boolean>(false);\n titleText = input<string>('');\n color = input<string>('');\n\n isOpen = signal<boolean>(this.open());\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n doToogle() {\n this.isOpen.update((tootle) => !tootle);\n }\n}\n","<a\n class=\"dsv-accordion-header\"\n (click)=\"doToogle()\"\n>\n {{ titleText() | translate }}\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\"></i>\n }\n</a>\n<div\n class=\"dsv-accordion-text\"\n [class.open]=\"isOpen() === true\"\n>\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,qBAAqB,CAAA;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IAEzB,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC,IAAI,EAAE,6EAAC;AAErC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IAC3C;uGAfS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTlC,+XAiBA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDZc,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAId,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACI,eAAe,EAAA,OAAA,EAChB,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,+XAAA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA;;;AEL5B;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-accordion.mjs","sources":["../../../projects/ng-dsv/ds/accordion/component/accordion.component.ts","../../../projects/ng-dsv/ds/accordion/component/accordion.component.html","../../../projects/ng-dsv/ds/accordion/ng-vagabond-lab-ng-dsv-ds-accordion.ts"],"sourcesContent":["import { Component, effect, input, signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-accordion',\n imports: [TranslatePipe],\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class DsvAccordionComponent {\n open = input<boolean>(false);\n titleText = input<string>('');\n color = input<string>('');\n\n isOpen = signal<boolean>(this.open());\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n doToogle() {\n this.isOpen.update((tootle) => !tootle);\n }\n}\n","<a\n class=\"dsv-accordion-header\"\n (click)=\"doToogle()\"\n>\n {{ titleText() | translate }}\n @if (isOpen() === true) {\n <i class=\"ri-arrow-up-s-line\"></i>\n } @else {\n <i class=\"ri-arrow-down-s-line\"></i>\n }\n</a>\n<div\n class=\"dsv-accordion-text\"\n [class.open]=\"isOpen() === true\"\n>\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MASa,qBAAqB,CAAA;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAC5B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IAEzB,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC,IAAI,EAAE,6EAAC;AAErC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IAC3C;uGAfS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTlC,+XAiBA,EAAA,MAAA,EAAA,CAAA,o7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDZc,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAId,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACI,eAAe,EAAA,OAAA,EAChB,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,+XAAA,EAAA,MAAA,EAAA,CAAA,o7BAAA,CAAA,EAAA;;;AEL5B;;AAEG;;;;"}
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { input, output, effect, Component, inject, signal } from '@angular/core';
3
3
  import { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';
4
4
  import { TranslatePipe } from '@ngx-translate/core';
5
+ import { scrollOnClassTo } from '@ng-vagabond-lab/ng-dsv/ds/scroll';
5
6
  import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
6
7
 
7
8
  class DsvButtonComponent extends BaseColorComponent {
@@ -31,11 +32,11 @@ class DsvButtonComponent extends BaseColorComponent {
31
32
  !this.disabled() && this.callback.emit();
32
33
  }
33
34
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvButtonComponent, isStandalone: true, selector: "dsv-button", inputs: { libelle: { classPropertyName: "libelle", publicName: "libelle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noHover: { classPropertyName: "noHover", publicName: "noHover", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, prevent: { classPropertyName: "prevent", publicName: "prevent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, usesInheritance: true, ngImport: i0, template: "@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <ng-content></ng-content>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n", styles: ["button.dsv-button{--border-radius: 4px;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;box-sizing:border-box;vertical-align:middle;flex-direction:row;gap:5px;align-items:center;justify-content:center;font-weight:500;letter-spacing:.02857em;text-transform:uppercase;outline:0px;margin:0;padding:6px;min-width:10px;line-height:1;text-decoration:none;border-width:0px;border-radius:var(--border-radius);transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1)}button.dsv-button.padding{padding:8px 10px}button.dsv-button:not(:disabled):not(.no-hover):hover{transform:scale(1);opacity:1.2}button.dsv-button:not(:disabled):not(.no-hover):hover:not(.text){box-shadow:#0003 0 2px 4px -1px,#00000024 0 4px 5px,#0000001f 0 1px 10px}button.dsv-button:not(:disabled):active{transform:scale(1);opacity:.8}button.dsv-button:disabled{cursor:auto;background:#c8c8c8;color:#000}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvButtonComponent, isStandalone: true, selector: "dsv-button", inputs: { libelle: { classPropertyName: "libelle", publicName: "libelle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noHover: { classPropertyName: "noHover", publicName: "noHover", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, prevent: { classPropertyName: "prevent", publicName: "prevent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, usesInheritance: true, ngImport: i0, template: "@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <ng-content></ng-content>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n", styles: [":host{--button-border-radius: 4px;--button-disabled-background: rgb(200, 200, 200);--button-disabled-color: rgba(0, 0, 0)}:host button.dsv-button{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;box-sizing:border-box;vertical-align:middle;flex-direction:row;gap:5px;align-items:center;justify-content:center;font-weight:500;letter-spacing:.02857em;text-transform:uppercase;outline:0px;margin:0;padding:6px;min-width:10px;line-height:1;text-decoration:none;border-width:0px;border-radius:var(--button-border-radius);transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1)}:host button.dsv-button.padding{padding:8px 10px}:host button.dsv-button:not(:disabled):not(.no-hover):hover{transform:scale(1);opacity:1.2}:host button.dsv-button:not(:disabled):not(.no-hover):hover:not(.text){box-shadow:#0003 0 2px 4px -1px,#00000024 0 4px 5px,#0000001f 0 1px 10px}:host button.dsv-button:not(:disabled):active{transform:scale(1);opacity:.8}:host button.dsv-button:disabled{cursor:auto;background:var(--button-disabled-background);color:var(--button-disabled-color)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
35
36
  }
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvButtonComponent, decorators: [{
37
38
  type: Component,
38
- args: [{ selector: 'dsv-button', imports: [TranslatePipe], template: "@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <ng-content></ng-content>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n", styles: ["button.dsv-button{--border-radius: 4px;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;box-sizing:border-box;vertical-align:middle;flex-direction:row;gap:5px;align-items:center;justify-content:center;font-weight:500;letter-spacing:.02857em;text-transform:uppercase;outline:0px;margin:0;padding:6px;min-width:10px;line-height:1;text-decoration:none;border-width:0px;border-radius:var(--border-radius);transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1)}button.dsv-button.padding{padding:8px 10px}button.dsv-button:not(:disabled):not(.no-hover):hover{transform:scale(1);opacity:1.2}button.dsv-button:not(:disabled):not(.no-hover):hover:not(.text){box-shadow:#0003 0 2px 4px -1px,#00000024 0 4px 5px,#0000001f 0 1px 10px}button.dsv-button:not(:disabled):active{transform:scale(1);opacity:.8}button.dsv-button:disabled{cursor:auto;background:#c8c8c8;color:#000}\n"] }]
39
+ args: [{ selector: 'dsv-button', imports: [TranslatePipe], template: "@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <ng-content></ng-content>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n", styles: [":host{--button-border-radius: 4px;--button-disabled-background: rgb(200, 200, 200);--button-disabled-color: rgba(0, 0, 0)}:host button.dsv-button{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;box-sizing:border-box;vertical-align:middle;flex-direction:row;gap:5px;align-items:center;justify-content:center;font-weight:500;letter-spacing:.02857em;text-transform:uppercase;outline:0px;margin:0;padding:6px;min-width:10px;line-height:1;text-decoration:none;border-width:0px;border-radius:var(--button-border-radius);transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1)}:host button.dsv-button.padding{padding:8px 10px}:host button.dsv-button:not(:disabled):not(.no-hover):hover{transform:scale(1);opacity:1.2}:host button.dsv-button:not(:disabled):not(.no-hover):hover:not(.text){box-shadow:#0003 0 2px 4px -1px,#00000024 0 4px 5px,#0000001f 0 1px 10px}:host button.dsv-button:not(:disabled):active{transform:scale(1);opacity:.8}:host button.dsv-button:disabled{cursor:auto;background:var(--button-disabled-background);color:var(--button-disabled-color)}\n"] }]
39
40
  }], ctorParameters: () => [], propDecorators: { libelle: [{ type: i0.Input, args: [{ isSignal: true, alias: "libelle", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconEnd", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], noHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "noHover", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], prevent: [{ type: i0.Input, args: [{ isSignal: true, alias: "prevent", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
40
41
 
41
42
  class ButtonScrollTopComponent {
@@ -49,19 +50,15 @@ class ButtonScrollTopComponent {
49
50
  }
50
51
  scrollToTop() {
51
52
  if (this.platformService.isPlatformBrowser()) {
52
- // TODO : factoriser et en fait un scrollUtils.scrollTo(x, y)
53
- const scrolls = document.getElementsByClassName('scroll');
54
- Array.from(scrolls).forEach((scroll) => {
55
- scroll?.scrollTo(0, 0);
56
- });
53
+ scrollOnClassTo('scroll', 0, 0);
57
54
  }
58
55
  }
59
56
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonScrollTopComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonScrollTopComponent, isStandalone: true, selector: "dsv-scroll-top-button", inputs: { scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"scrollToTop()\"\n ></dsv-button>\n}\n", styles: [":host{position:absolute;bottom:10px;right:10px}:host dsv-button button{--border-radius: 50px !important}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonScrollTopComponent, isStandalone: true, selector: "dsv-scroll-top-button", inputs: { scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"scrollToTop()\"\n ></dsv-button>\n}\n", styles: [":host{position:absolute;bottom:10px;right:10px}:host dsv-button{--button-border-radius: 50px !important}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
61
58
  }
62
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonScrollTopComponent, decorators: [{
63
60
  type: Component,
64
- args: [{ selector: 'dsv-scroll-top-button', imports: [DsvButtonComponent], template: "@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"scrollToTop()\"\n ></dsv-button>\n}\n", styles: [":host{position:absolute;bottom:10px;right:10px}:host dsv-button button{--border-radius: 50px !important}\n"] }]
61
+ args: [{ selector: 'dsv-scroll-top-button', imports: [DsvButtonComponent], template: "@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"scrollToTop()\"\n ></dsv-button>\n}\n", styles: [":host{position:absolute;bottom:10px;right:10px}:host dsv-button{--button-border-radius: 50px !important}\n"] }]
65
62
  }], ctorParameters: () => [], propDecorators: { scroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "scroll", required: false }] }] } });
66
63
 
67
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-button.mjs","sources":["../../../projects/ng-dsv/ds/button/component/button.component.ts","../../../projects/ng-dsv/ds/button/component/button.component.html","../../../projects/ng-dsv/ds/button/component/scroll-top/button.scroll-top.component.ts","../../../projects/ng-dsv/ds/button/component/scroll-top/button.scroll-top.component.html","../../../projects/ng-dsv/ds/button/ng-vagabond-lab-ng-dsv-ds-button.ts"],"sourcesContent":["import { Component, effect, input, output } from '@angular/core';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-button',\n imports: [TranslatePipe],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class DsvButtonComponent extends BaseColorComponent {\n libelle = input<string>('');\n icon = input<string>('');\n iconEnd = input<string>('');\n disabled = input<boolean>(false);\n noHover = input<boolean>(false);\n type = input<string>('button');\n\n prevent = input<boolean>(true);\n\n callback = output<void>();\n\n constructor() {\n super();\n effect(() => {\n const classes: string[] = [];\n this.icon() && classes.push('icon');\n this.libelle() !== '' && classes.push('padding');\n this.noHover() && classes.push('no-hover');\n\n this.setClasses('dsv-button', classes);\n });\n }\n\n doClick(event: Event) {\n if (this.prevent() && this.type() !== 'submit') {\n event.stopPropagation();\n event.preventDefault();\n }\n !this.disabled() && this.callback.emit();\n }\n}\n","@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <ng-content></ng-content>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n","import { Component, effect, inject, input, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { DsvButtonComponent } from '../button.component';\n\n@Component({\n selector: 'dsv-scroll-top-button',\n imports: [DsvButtonComponent],\n templateUrl: './button.scroll-top.component.html',\n styleUrls: ['./button.scroll-top.component.scss'],\n})\nexport class ButtonScrollTopComponent {\n readonly platformService = inject(PlatformService);\n\n scroll = input<number>(0);\n\n show = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.show.set(this.scroll() > 400);\n });\n }\n\n scrollToTop() {\n if (this.platformService.isPlatformBrowser()) {\n // TODO : factoriser et en fait un scrollUtils.scrollTo(x, y)\n const scrolls = document.getElementsByClassName('scroll');\n Array.from(scrolls).forEach((scroll) => {\n scroll?.scrollTo(0, 0);\n });\n }\n }\n}\n","@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"scrollToTop()\"\n ></dsv-button>\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":"ng-vagabond-lab-ng-dsv-ds-button.mjs","sources":["../../../projects/ng-dsv/ds/button/component/button.component.ts","../../../projects/ng-dsv/ds/button/component/button.component.html","../../../projects/ng-dsv/ds/button/component/scroll-top/button.scroll-top.component.ts","../../../projects/ng-dsv/ds/button/component/scroll-top/button.scroll-top.component.html","../../../projects/ng-dsv/ds/button/ng-vagabond-lab-ng-dsv-ds-button.ts"],"sourcesContent":["import { Component, effect, input, output } from '@angular/core';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-button',\n imports: [TranslatePipe],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n})\nexport class DsvButtonComponent extends BaseColorComponent {\n libelle = input<string>('');\n icon = input<string>('');\n iconEnd = input<string>('');\n disabled = input<boolean>(false);\n noHover = input<boolean>(false);\n type = input<string>('button');\n\n prevent = input<boolean>(true);\n\n callback = output<void>();\n\n constructor() {\n super();\n effect(() => {\n const classes: string[] = [];\n this.icon() && classes.push('icon');\n this.libelle() !== '' && classes.push('padding');\n this.noHover() && classes.push('no-hover');\n\n this.setClasses('dsv-button', classes);\n });\n }\n\n doClick(event: Event) {\n if (this.prevent() && this.type() !== 'submit') {\n event.stopPropagation();\n event.preventDefault();\n }\n !this.disabled() && this.callback.emit();\n }\n}\n","@if (show()) {\n <button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n (click)=\"doClick($event)\"\n >\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (libelle()) {\n <span>\n {{ libelle() | translate }}\n </span>\n }\n <ng-content></ng-content>\n @if (iconEnd()) {\n <i [class]=\"iconEnd()\"></i>\n }\n </button>\n}\n","import { Component, effect, inject, input, signal } from '@angular/core';\nimport { scrollOnClassTo } from '@ng-vagabond-lab/ng-dsv/ds/scroll';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { DsvButtonComponent } from '../button.component';\n\n@Component({\n selector: 'dsv-scroll-top-button',\n imports: [DsvButtonComponent],\n templateUrl: './button.scroll-top.component.html',\n styleUrls: ['./button.scroll-top.component.scss'],\n})\nexport class ButtonScrollTopComponent {\n readonly platformService = inject(PlatformService);\n\n scroll = input<number>(0);\n\n show = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.show.set(this.scroll() > 400);\n });\n }\n\n scrollToTop() {\n if (this.platformService.isPlatformBrowser()) {\n scrollOnClassTo('scroll', 0, 0);\n }\n }\n}\n","@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"scrollToTop()\"\n ></dsv-button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -14,11 +14,11 @@ class DsvCardComponent {
14
14
  return classes.join(' ');
15
15
  }
16
16
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvCardComponent, isStandalone: true, selector: "dsv-card", inputs: { avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", 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 } }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "@if (image()) {\n <img\n src=\"{{ image() }}\"\n [alt]=\"alt()\"\n />\n}\n@if (avatar() || titleText() !== '') {\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ titleText() }}</h2>\n <div class=\"subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\">\n <ng-content select=\"dsv-actions\"></ng-content>\n </div>\n </div>\n}\n<div class=\"dsv-card-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.dsv-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:4px;font-size:1rem;margin:5px;width:calc(100% - 10px);color:var(--text);background-color:var(--background-card)}:host.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}:host.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}:host.dsv-card .dsv-card-content{display:flex;flex-direction:column;padding:10px}:host.dsv-card h2{margin:0;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvAvatarComponent, selector: "dsv-avatar", inputs: ["avatar"], outputs: ["callback"] }] });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvCardComponent, isStandalone: true, selector: "dsv-card", inputs: { avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", 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 } }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "@if (image()) {\n <img\n src=\"{{ image() }}\"\n [alt]=\"alt()\"\n />\n}\n@if (avatar() || titleText() !== '') {\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ titleText() }}</h2>\n <div class=\"subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\">\n <ng-content select=\"dsv-actions\"></ng-content>\n </div>\n </div>\n}\n<div class=\"dsv-card-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{--card-content-overflow: hidden}:host.dsv-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:4px;font-size:1rem;margin:5px;width:calc(100% - 10px);color:var(--text);background-color:var(--background-card)}:host.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}:host.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}:host.dsv-card .dsv-card-content{display:flex;flex-direction:column;padding:10px;overflow:var(--card-content-overflow)}:host.dsv-card h2{margin:0;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvAvatarComponent, selector: "dsv-avatar", inputs: ["avatar"], outputs: ["callback"] }] });
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvCardComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ selector: 'dsv-card', imports: [CommonModule, DsvAvatarComponent], template: "@if (image()) {\n <img\n src=\"{{ image() }}\"\n [alt]=\"alt()\"\n />\n}\n@if (avatar() || titleText() !== '') {\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ titleText() }}</h2>\n <div class=\"subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\">\n <ng-content select=\"dsv-actions\"></ng-content>\n </div>\n </div>\n}\n<div class=\"dsv-card-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.dsv-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:4px;font-size:1rem;margin:5px;width:calc(100% - 10px);color:var(--text);background-color:var(--background-card)}:host.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}:host.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}:host.dsv-card .dsv-card-content{display:flex;flex-direction:column;padding:10px}:host.dsv-card h2{margin:0;padding:0}\n"] }]
21
+ args: [{ selector: 'dsv-card', imports: [CommonModule, DsvAvatarComponent], template: "@if (image()) {\n <img\n src=\"{{ image() }}\"\n [alt]=\"alt()\"\n />\n}\n@if (avatar() || titleText() !== '') {\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ titleText() }}</h2>\n <div class=\"subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\">\n <ng-content select=\"dsv-actions\"></ng-content>\n </div>\n </div>\n}\n<div class=\"dsv-card-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{--card-content-overflow: hidden}:host.dsv-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:4px;font-size:1rem;margin:5px;width:calc(100% - 10px);color:var(--text);background-color:var(--background-card)}:host.dsv-card img{width:100%;max-height:300px;border-top-left-radius:2px;border-top-right-radius:2px}:host.dsv-card .dsv-card-header{display:flex;flex-direction:row;gap:10px;align-items:center;padding:10px}:host.dsv-card .dsv-card-content{display:flex;flex-direction:column;padding:10px;overflow:var(--card-content-overflow)}:host.dsv-card h2{margin:0;padding:0}\n"] }]
22
22
  }], propDecorators: { avatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatar", required: false }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], image: [{ type: i0.Input, args: [{ isSignal: true, alias: "image", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], hostClasses: [{
23
23
  type: HostBinding,
24
24
  args: ['class']
@@ -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, HostBinding, input } from '@angular/core';\nimport { DsvAvatarComponent } from '@ng-vagabond-lab/ng-dsv/ds/avatar';\n\n@Component({\n selector: 'dsv-card',\n imports: [CommonModule, DsvAvatarComponent],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class DsvCardComponent {\n avatar = input<string>();\n titleText = input<string>('');\n subtitle = input<string>('');\n image = input<string>();\n alt = input<string>();\n\n @HostBinding('class')\n get hostClasses(): string {\n const classes: string[] = ['dsv-card'];\n return classes.join(' ');\n }\n}\n","@if (image()) {\n <img\n src=\"{{ image() }}\"\n [alt]=\"alt()\"\n />\n}\n@if (avatar() || titleText() !== '') {\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ titleText() }}</h2>\n <div class=\"subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\">\n <ng-content select=\"dsv-actions\"></ng-content>\n </div>\n </div>\n}\n<div class=\"dsv-card-content\">\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAUa,gBAAgB,CAAA;IACzB,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACxB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;IAC5B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACvB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAErB,IAAA,IACI,WAAW,GAAA;AACX,QAAA,MAAM,OAAO,GAAa,CAAC,UAAU,CAAC;AACtC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;uGAXS,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,EAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV7B,8lBAuBA,EAAA,MAAA,EAAA,CAAA,whBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBc,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIjC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,8lBAAA,EAAA,MAAA,EAAA,CAAA,whBAAA,CAAA,EAAA;;sBAW1C,WAAW;uBAAC,OAAO;;;AEjBxB;;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, HostBinding, input } from '@angular/core';\nimport { DsvAvatarComponent } from '@ng-vagabond-lab/ng-dsv/ds/avatar';\n\n@Component({\n selector: 'dsv-card',\n imports: [CommonModule, DsvAvatarComponent],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class DsvCardComponent {\n avatar = input<string>();\n titleText = input<string>('');\n subtitle = input<string>('');\n image = input<string>();\n alt = input<string>();\n\n @HostBinding('class')\n get hostClasses(): string {\n const classes: string[] = ['dsv-card'];\n return classes.join(' ');\n }\n}\n","@if (image()) {\n <img\n src=\"{{ image() }}\"\n [alt]=\"alt()\"\n />\n}\n@if (avatar() || titleText() !== '') {\n <div class=\"dsv-card-header\">\n @if (avatar()) {\n <dsv-avatar [avatar]=\"avatar()!\"></dsv-avatar>\n }\n <div>\n <h2>{{ titleText() }}</h2>\n <div class=\"subtitle\">{{ subtitle() }}</div>\n </div>\n <div class=\"dsv-actions\">\n <ng-content select=\"dsv-actions\"></ng-content>\n </div>\n </div>\n}\n<div class=\"dsv-card-content\">\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAUa,gBAAgB,CAAA;IACzB,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACxB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;IAC5B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IACvB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAErB,IAAA,IACI,WAAW,GAAA;AACX,QAAA,MAAM,OAAO,GAAa,CAAC,UAAU,CAAC;AACtC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;uGAXS,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,EAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV7B,8lBAuBA,EAAA,MAAA,EAAA,CAAA,omBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBc,YAAY,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIjC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,8lBAAA,EAAA,MAAA,EAAA,CAAA,omBAAA,CAAA,EAAA;;sBAW1C,WAAW;uBAAC,OAAO;;;AEjBxB;;AAEG;;;;"}
@@ -22,11 +22,11 @@ class DsvChipComponent extends BaseColorComponent {
22
22
  this.delete.emit();
23
23
  }
24
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvChipComponent, isStandalone: true, selector: "dsv-chip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n", styles: [":host{display:flex}:host .dsv-chip{display:flex;align-items:center;justify-content:center;border-radius:15px;padding:10px 20px}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DsvChipComponent, isStandalone: true, selector: "dsv-chip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, usesInheritance: true, ngImport: i0, template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n", styles: [":host{--chip-padding: 10px 20px;--chip-width: auto;--chip-border-radius: 15px;display:flex}:host .dsv-chip{display:flex;align-items:center;justify-content:center;padding:var(--chip-padding);width:var(--chip-width);border-radius:var(--chip-border-radius)}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DsvChipComponent, decorators: [{
28
28
  type: Component,
29
- args: [{ selector: 'dsv-chip', imports: [DsvButtonComponent, TranslatePipe], template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n", styles: [":host{display:flex}:host .dsv-chip{display:flex;align-items:center;justify-content:center;border-radius:15px;padding:10px 20px}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}\n"] }]
29
+ args: [{ selector: 'dsv-chip', imports: [DsvButtonComponent, TranslatePipe], template: "<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n", styles: [":host{--chip-padding: 10px 20px;--chip-width: auto;--chip-border-radius: 15px;display:flex}:host .dsv-chip{display:flex;align-items:center;justify-content:center;padding:var(--chip-padding);width:var(--chip-width);border-radius:var(--chip-border-radius)}:host .dsv-chip.with-delete{padding:5px 5px 5px 20px}\n"] }]
30
30
  }], ctorParameters: () => [], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], delete: [{ type: i0.Output, args: ["delete"] }] } });
31
31
 
32
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-chip.mjs","sources":["../../../projects/ng-dsv/ds/chip/component/chip.component.ts","../../../projects/ng-dsv/ds/chip/component/chip.component.html","../../../projects/ng-dsv/ds/chip/ng-vagabond-lab-ng-dsv-ds-chip.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-chip',\n imports: [DsvButtonComponent, TranslatePipe],\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n})\nexport class DsvChipComponent extends BaseColorComponent {\n text = input<string>('');\n\n delete = output<void>();\n\n isDelete = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n this.isDelete.set(isCallback(this.delete));\n\n this.text();\n const classes: string[] = [this.isDelete() ? 'with-delete' : ''];\n this.setClasses('dsv-chip', classes);\n });\n }\n\n doDelete() {\n this.delete.emit();\n }\n}\n","<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAYM,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AACpD,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;IAExB,MAAM,GAAG,MAAM,EAAQ;AAEvB,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AAEjC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;AACxC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;uGApBS,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,2TAaA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLc,kBAAkB,2JAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAIlC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,2TAAA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA;;;AERhD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-chip.mjs","sources":["../../../projects/ng-dsv/ds/chip/component/chip.component.ts","../../../projects/ng-dsv/ds/chip/component/chip.component.html","../../../projects/ng-dsv/ds/chip/ng-vagabond-lab-ng-dsv-ds-chip.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { BaseColorComponent } from '@ng-vagabond-lab/ng-dsv/ds/color';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-chip',\n imports: [DsvButtonComponent, TranslatePipe],\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n})\nexport class DsvChipComponent extends BaseColorComponent {\n text = input<string>('');\n\n delete = output<void>();\n\n isDelete = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n this.isDelete.set(isCallback(this.delete));\n\n this.text();\n const classes: string[] = [this.isDelete() ? 'with-delete' : ''];\n this.setClasses('dsv-chip', classes);\n });\n }\n\n doDelete() {\n this.delete.emit();\n }\n}\n","<div [class]=\"classes()\">\n <span>\n {{ text() | translate }}\n </span>\n @if (isDelete()) {\n <dsv-button\n icon=\"ri-delete-bin-line\"\n variant=\"text\"\n color=\"inherit\"\n (callback)=\"doDelete()\"\n ></dsv-button>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAYM,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AACpD,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;IAExB,MAAM,GAAG,MAAM,EAAQ;AAEvB,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AAEjC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;AACxC,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;uGApBS,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,2TAaA,EAAA,MAAA,EAAA,CAAA,uTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLc,kBAAkB,2JAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAIlC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,2TAAA,EAAA,MAAA,EAAA,CAAA,uTAAA,CAAA,EAAA;;;AERhD;;AAEG;;;;"}