@ng-vagabond-lab/ng-dsv 0.1.121 → 0.1.124

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 (29) hide show
  1. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +3 -2
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +9 -3
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +11 -11
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +8 -11
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-admin.mjs +2 -2
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-admin.mjs.map +1 -1
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-auth.mjs +3 -3
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-modules-auth.mjs.map +1 -1
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +10 -4
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
  15. package/package.json +1 -1
  16. package/types/ng-vagabond-lab-ng-dsv-base.d.ts +3 -0
  17. package/types/ng-vagabond-lab-ng-dsv-date.d.ts.map +1 -0
  18. package/types/ng-vagabond-lab-ng-dsv-ds-chip.d.ts.map +1 -0
  19. package/types/ng-vagabond-lab-ng-dsv-ds-form-reactive.d.ts.map +1 -0
  20. package/types/ng-vagabond-lab-ng-dsv-ds-form-signal.d.ts.map +1 -0
  21. package/types/ng-vagabond-lab-ng-dsv-ds-modal.d.ts +6 -6
  22. package/types/ng-vagabond-lab-ng-dsv-ds-paginate.d.ts.map +1 -0
  23. package/types/ng-vagabond-lab-ng-dsv-ds-scroll.d.ts +5 -2
  24. package/types/ng-vagabond-lab-ng-dsv-ds-tab.d.ts.map +1 -0
  25. package/types/ng-vagabond-lab-ng-dsv-ds-table.d.ts.map +1 -0
  26. package/types/ng-vagabond-lab-ng-dsv-ds-tooltip.d.ts.map +1 -0
  27. package/types/ng-vagabond-lab-ng-dsv-modules-admin.d.ts.map +1 -0
  28. package/types/ng-vagabond-lab-ng-dsv-modules-contact.d.ts.map +1 -0
  29. package/types/ng-vagabond-lab-ng-dsv-router.d.ts +1 -0
@@ -47,8 +47,9 @@ class ApiService {
47
47
  constructor() {
48
48
  effect(() => {
49
49
  if (this.environmentService.env()) {
50
- this.baseUrl.set(this.environmentService.env().API_URL?.replace(/\/$/, ''));
51
- this.refreshUrl.set(`${this.baseUrl().replace(/\/$/, '')}/auth/refresh-token`);
50
+ //this.baseUrl.set(this.environmentService.env()!.API_URL?.replace(/\/$/, ''));
51
+ //this.refreshUrl.set(`${this.baseUrl().replace(/\/$/, '')}/auth/refresh-token`);
52
+ this.baseUrl.set('/api');
52
53
  }
53
54
  });
54
55
  }
@@ -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/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 { effect, inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\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 readonly environmentService = inject(EnvironmentService);\n\n baseUrl = signal<string>('');\n refreshUrl = signal<string>('');\n nbLoaded = signal<number>(0);\n\n constructor() {\n effect(() => {\n if (this.environmentService.env()) {\n this.baseUrl.set(this.environmentService.env()!.API_URL?.replace(/\\/$/, ''));\n this.refreshUrl.set(`${this.baseUrl().replace(/\\/$/, '')}/auth/refresh-token`);\n }\n });\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.nbLoaded.update((loaded) => loaded + 1);\n observable.subscribe({\n next: (res) => {\n this.nbLoaded.update((loaded) => loaded - 1);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.nbLoaded.update((loaded) => loaded - 1);\n this.error(url, error);\n callbackError();\n },\n });\n }\n\n info(url: string, data: JSONObject | null) {\n if (this.platformService.isPlatformBrowser()) {\n console.log(url, data);\n }\n }\n\n error(url: string, error: JSONObject) {\n if (this.platformService.isPlatformBrowser()) {\n console.error(url, error);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAgBa,kBAAkB,CAAA;AAC3B,IAAA,GAAG,GAAG,MAAM,CAAqB,SAAS,0EAAC;AAE3C,IAAA,QAAQ,GAA+B,YAAY,CAAC,OAAO;AACvD,QAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,OAAO,EAAE;AACL,YAAA,cAAc,EAAE,kBAAkB;AACrC,SAAA;AACD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,SAAS,EAAE,iDAAiD;AAC/D,KAAA,CAAC,+EAAC;AAEH,IAAA,WAAA,GAAA,EAAe;wGAtBN,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFf,MAAM,EAAA,CAAA;;4FAET,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCJY,UAAU,CAAA;AACV,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAExD,IAAA,OAAO,GAAG,MAAM,CAAS,EAAE,8EAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAS,EAAE,iFAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAS,CAAC,+EAAC;AAE5B,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5E,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,mBAAA,CAAqB,CAAC;YAClF;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,GAAG,CAAI,GAAW,EAAE,QAA2B,EAAE,aAAA,GAA4B,MAAK,EAAE,CAAC,EAAA;QACjF,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC;IAChG;AAEA,IAAA,IAAI,CACA,GAAW,EACX,IAAW,EACX,QAAA,GAAsC,MAAK,EAAE,CAAC,EAC9C,kBAA2B,KAAK,EAChC,gBAA4B,QAAO,CAAC,EAAA;AAEpC,QAAA,IAAI,CAAC,WAAW,CACZ,GAAG,EACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAY,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,EAChF,QAAQ,EACR,aAAa,CAChB;IACL;AAEA,IAAA,GAAG,CACC,GAAW,EACX,IAAW,EACX,QAAA,GAAsC,MAAK,EAAE,CAAC,EAC9C,aAAA,GAA4B,QAAO,CAAC,EAAA;QAEpC,IAAI,CAAC,WAAW,CACZ,GAAG,EACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,EAC1D,QAAQ,EACR,aAAa,CAChB;IACL;IAEA,MAAM,CAAI,GAAW,EAAE,QAA2B,EAAE,aAAA,GAA4B,MAAK,EAAE,CAAC,EAAA;QACpF,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC;IACnG;AAEA,IAAA,QAAQ,CAAI,QAAgB,EAAE,EAAM,EAAE,QAA2B,EAAA;QAC7D,IAAI,CAAC,GAAG,CAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,QAAQ,CAAC;IAC9C;AAEA,IAAA,MAAM,CACF,QAAgB,EAChB,MAAc,EACd,MAAc,EACd,KAAa,EACb,GAAW,EACX,KAAiB,EACjB,QAA2B,EAAA;AAE3B,QAAA,MAAM,SAAS,GAAW,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM;AACtD,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;AAC5E,QAAA,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU;QAC1C,IAAI,CAAC,GAAG,CACJ,QAAQ;YACJ,UAAU;YACV,SAAS,CAAC,cAAc,CAAC;YACzB,UAAU;YACV,SAAS,CAAC,MAAM,CAAC;YACjB,SAAS;YACT,KAAK;YACL,OAAO;AACP,YAAA,GAAG,EACP,CAAC,IAAO,KAAI;YACR,QAAQ,CAAC,IAAI,CAAC;AAClB,QAAA,CAAC,CACJ;IACL;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,QAA2C,EAAA;QACjG,OAAO,IAAI,CAAC,GAAG,CACX,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,MAAM,EAC/D,CAAC,IAAuB,KAAI;YACxB,QAAQ,CAAC,IAAI,CAAC;AAClB,QAAA,CAAC,CACJ;IACL;AAEA,IAAA,cAAc,CAAmB,QAAgB,EAAE,IAAO,EAAE,QAA2B,EAAA;QACnF,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACpF,YAAA,IAAI,CAAC,GAAG,CAAI,GAAG,GAAG,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,UAAa,KAAI;AACtD,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACnE,QAAQ,CAAC,UAAU,CAAC;AACxB,YAAA,CAAC,CAAC;QACN;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAI,GAAG,GAAG,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,UAAa,KAAI;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACrE,QAAQ,CAAC,UAAU,CAAC;AACxB,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,WAAW,CACP,GAAW,EACX,UAAyB,EACzB,QAA2B,EAC3B,aAAA,GAA4B,MAAK,EAAE,CAAC,EAAA;AAEpC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;QAC5C,UAAU,CAAC,SAAS,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACV,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAiB,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC;YACjB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAiB,KAAI;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACtB,gBAAA,aAAa,EAAE;YACnB,CAAC;AACJ,SAAA,CAAC;IACN;IAEA,IAAI,CAAC,GAAW,EAAE,IAAuB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;AAC1C,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;QAC1B;IACJ;IAEA,KAAK,CAAC,GAAW,EAAE,KAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;AAC1C,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QAC7B;IACJ;wGA9IS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFP,MAAM,EAAA,CAAA;;4FAET,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;ACVD;;AAEG;;;;"}
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/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 { effect, inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\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 readonly environmentService = inject(EnvironmentService);\n\n baseUrl = signal<string>('');\n refreshUrl = signal<string>('');\n nbLoaded = signal<number>(0);\n\n constructor() {\n effect(() => {\n if (this.environmentService.env()) {\n //this.baseUrl.set(this.environmentService.env()!.API_URL?.replace(/\\/$/, ''));\n //this.refreshUrl.set(`${this.baseUrl().replace(/\\/$/, '')}/auth/refresh-token`);\n this.baseUrl.set('/api');\n }\n });\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.nbLoaded.update((loaded) => loaded + 1);\n observable.subscribe({\n next: (res) => {\n this.nbLoaded.update((loaded) => loaded - 1);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.nbLoaded.update((loaded) => loaded - 1);\n this.error(url, error);\n callbackError();\n },\n });\n }\n\n info(url: string, data: JSONObject | null) {\n if (this.platformService.isPlatformBrowser()) {\n console.log(url, data);\n }\n }\n\n error(url: string, error: JSONObject) {\n if (this.platformService.isPlatformBrowser()) {\n console.error(url, error);\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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, inject, TransferState, Directive, makeStateKey, Injectable, effect, computed } from '@angular/core';
2
+ import { signal, inject, TransferState, Directive, makeStateKey, Injectable, effect, computed, ElementRef } from '@angular/core';
3
3
  import { AuthService } from '@ng-vagabond-lab/ng-dsv/modules/auth';
4
4
  import { RouterService } from '@ng-vagabond-lab/ng-dsv/router';
5
5
  import { Title, Meta } from '@angular/platform-browser';
@@ -8,7 +8,7 @@ import { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';
8
8
  import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
9
9
  import { toSignal } from '@angular/core/rxjs-interop';
10
10
  import { ActivatedRoute } from '@angular/router';
11
- import { scrollOnClassTo } from '@ng-vagabond-lab/ng-dsv/ds/scroll';
11
+ import { scrollToTop, SCROLL_CLASS } from '@ng-vagabond-lab/ng-dsv/ds/scroll';
12
12
 
13
13
  // TODO : checker les inject dans les composants ???
14
14
  class BaseComponent {
@@ -95,6 +95,7 @@ class BaseRouteContainer extends BaseContainer {
95
95
  }
96
96
 
97
97
  class BaseSearchContainer extends BaseContainer {
98
+ element = inject(ElementRef);
98
99
  service = undefined;
99
100
  constructor(searchService) {
100
101
  super();
@@ -114,10 +115,15 @@ class BaseSearchContainer extends BaseContainer {
114
115
  }
115
116
  doSearch(search) {
116
117
  this.service?.page.set(1);
117
- scrollOnClassTo('scroll', 0, 0);
118
+ scrollToTop(this.element, SCROLL_CLASS);
118
119
  this.doFetch(search);
119
120
  }
121
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: BaseSearchContainer, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
122
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: BaseSearchContainer, isStandalone: true, usesInheritance: true, ngImport: i0 });
120
123
  }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: BaseSearchContainer, decorators: [{
125
+ type: Directive
126
+ }], ctorParameters: () => [{ type: undefined }] });
121
127
 
122
128
  const isCallback = (callback) => {
123
129
  const listeners = callback['listeners'];
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-base.mjs","sources":["../../../projects/ng-dsv/base/component/base.component.ts","../../../projects/ng-dsv/base/service/base/base.service.ts","../../../projects/ng-dsv/base/service/base/base.api.service.ts","../../../projects/ng-dsv/base/service/seo/seo.service.ts","../../../projects/ng-dsv/base/container/base.container.ts","../../../projects/ng-dsv/base/container/main/base.main.container.ts","../../../projects/ng-dsv/base/container/route/base.route.container.ts","../../../projects/ng-dsv/base/container/search/base.search.container.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { signal } from '@angular/core';\n\n// TODO : checker les inject dans les composants ???\nexport abstract class BaseComponent {\n loaded = signal(false);\n}\n","import { Directive, inject, signal, TransferState } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Directive()\nexport abstract class BaseService {\n readonly toastService = inject(ToastService);\n readonly transferState = inject(TransferState);\n readonly platformService = inject(PlatformService);\n\n readonly loaded = signal<boolean>(true);\n\n isPlatformBrowser() {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseService } from './base.service';\n\n@Directive()\nexport abstract class BaseApiService extends BaseService {\n readonly apiService = inject(ApiService);\n}\n","import { inject, Injectable, makeStateKey } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { BaseApiService } from '../base/base.api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SeoService extends BaseApiService {\n public readonly title = inject(Title);\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 { computed, effect, inject, signal } from '@angular/core';\nimport { AuthService } from '@ng-vagabond-lab/ng-dsv/modules/auth';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { SeoService } from '../service/seo/seo.service';\n\nexport abstract class BaseContainer {\n readonly authService = inject(AuthService);\n readonly seoService = inject(SeoService);\n readonly routerService = inject(RouterService);\n\n protected requiredRole = signal('');\n\n constructor() {\n effect(() => {\n if (!this.hasAccess()) {\n this.routerService.router.navigate(['/']);\n }\n });\n }\n\n readonly hasAccess = computed(() => {\n const role = this.requiredRole();\n return !role || this.authService.hasRole(role);\n });\n}\n","import { effect, inject, signal } from '@angular/core';\nimport { AuthService } from '@ng-vagabond-lab/ng-dsv/modules/auth';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\n\nexport abstract class BaseMainContainer {\n readonly authService = inject(AuthService);\n readonly routerService = inject(RouterService);\n\n initRefreshToken = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n if (this.authService.isPlatformBrowser() && !this.initRefreshToken()) {\n this.initRefreshToken.set(true);\n this.authService.refreshToken();\n }\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { BaseContainer } from '../base.container';\n\nexport abstract class BaseRouteContainer extends BaseContainer {\n activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n routeParams = toSignal(this.activatedRoute.params);\n}\n","import { effect } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { scrollOnClassTo } from '@ng-vagabond-lab/ng-dsv/ds/scroll';\nimport { BaseSearchService } from '../../service';\nimport { BaseContainer } from '../base.container';\n\nexport abstract class BaseSearchContainer<\n T extends BaseSearchService<U>,\n U extends ApiDto,\n> extends BaseContainer {\n readonly service: T | undefined = undefined;\n\n constructor(searchService: T) {\n super();\n this.service = searchService;\n this.service.isLoading.set(true);\n effect(() => {\n if (\n this.service?.datas().length === 0 &&\n this.service.search() === '' &&\n !this.service.stopFetch() &&\n this.authService.canFetch(this.service.ssr())\n ) {\n this.doFetch();\n }\n });\n }\n\n doFetch(search: string | undefined = this.service?.search()): void {\n this.service?.fetchByPage(search, this.service?.page());\n }\n\n doSearch(search: string) {\n this.service?.page.set(1);\n scrollOnClassTo('scroll', 0, 0);\n this.doFetch(search);\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\nexport const generateArray = (length: number = 20) => Array.from({ length }, (_, i) => i);\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.component.ts","../../../projects/ng-dsv/base/service/base/base.service.ts","../../../projects/ng-dsv/base/service/base/base.api.service.ts","../../../projects/ng-dsv/base/service/seo/seo.service.ts","../../../projects/ng-dsv/base/container/base.container.ts","../../../projects/ng-dsv/base/container/main/base.main.container.ts","../../../projects/ng-dsv/base/container/route/base.route.container.ts","../../../projects/ng-dsv/base/container/search/base.search.container.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { signal } from '@angular/core';\n\n// TODO : checker les inject dans les composants ???\nexport abstract class BaseComponent {\n loaded = signal(false);\n}\n","import { Directive, inject, signal, TransferState } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Directive()\nexport abstract class BaseService {\n readonly toastService = inject(ToastService);\n readonly transferState = inject(TransferState);\n readonly platformService = inject(PlatformService);\n\n readonly loaded = signal<boolean>(true);\n\n isPlatformBrowser() {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseService } from './base.service';\n\n@Directive()\nexport abstract class BaseApiService extends BaseService {\n readonly apiService = inject(ApiService);\n}\n","import { inject, Injectable, makeStateKey } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { BaseApiService } from '../base/base.api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SeoService extends BaseApiService {\n public readonly title = inject(Title);\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 { computed, effect, inject, signal } from '@angular/core';\nimport { AuthService } from '@ng-vagabond-lab/ng-dsv/modules/auth';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { SeoService } from '../service/seo/seo.service';\n\nexport abstract class BaseContainer {\n readonly authService = inject(AuthService);\n readonly seoService = inject(SeoService);\n readonly routerService = inject(RouterService);\n\n protected requiredRole = signal('');\n\n constructor() {\n effect(() => {\n if (!this.hasAccess()) {\n this.routerService.router.navigate(['/']);\n }\n });\n }\n\n readonly hasAccess = computed(() => {\n const role = this.requiredRole();\n return !role || this.authService.hasRole(role);\n });\n}\n","import { effect, inject, signal } from '@angular/core';\nimport { AuthService } from '@ng-vagabond-lab/ng-dsv/modules/auth';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\n\nexport abstract class BaseMainContainer {\n readonly authService = inject(AuthService);\n readonly routerService = inject(RouterService);\n\n initRefreshToken = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n if (this.authService.isPlatformBrowser() && !this.initRefreshToken()) {\n this.initRefreshToken.set(true);\n this.authService.refreshToken();\n }\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { BaseContainer } from '../base.container';\n\nexport abstract class BaseRouteContainer extends BaseContainer {\n activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n routeParams = toSignal(this.activatedRoute.params);\n}\n","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { SCROLL_CLASS, scrollToTop } from '@ng-vagabond-lab/ng-dsv/ds/scroll';\nimport { BaseSearchService } from '../../service';\nimport { BaseContainer } from '../base.container';\n\n@Directive()\nexport abstract class BaseSearchContainer<\n T extends BaseSearchService<U>,\n U extends ApiDto,\n> extends BaseContainer {\n private element = inject(ElementRef);\n\n readonly service: T | undefined = undefined;\n\n constructor(searchService: T) {\n super();\n this.service = searchService;\n this.service.isLoading.set(true);\n effect(() => {\n if (\n this.service?.datas().length === 0 &&\n this.service.search() === '' &&\n !this.service.stopFetch() &&\n this.authService.canFetch(this.service.ssr())\n ) {\n this.doFetch();\n }\n });\n }\n\n doFetch(search: string | undefined = this.service?.search()): void {\n this.service?.fetchByPage(search, this.service?.page());\n }\n\n doSearch(search: string) {\n this.service?.page.set(1);\n scrollToTop(this.element, SCROLL_CLASS);\n this.doFetch(search);\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\nexport const generateArray = (length: number = 20) => Array.from({ length }, (_, i) => i);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Injectable, input, inject, effect, HostListener, Component, output } from '@angular/core';
2
+ import { signal, Injectable, inject, input, effect, HostListener, Component, output } from '@angular/core';
3
3
  import { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';
4
4
  import { TranslatePipe } from '@ngx-translate/core';
5
5
  import { MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';
@@ -30,13 +30,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
30
30
  }] });
31
31
 
32
32
  class ModalComponent {
33
+ modalService = inject(ModalService);
34
+ menuService = inject(MenuService);
33
35
  id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
34
- titleText = input.required(...(ngDevMode ? [{ debugName: "titleText" }] : /* istanbul ignore next */ []));
35
36
  class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
37
+ titleText = input.required(...(ngDevMode ? [{ debugName: "titleText" }] : /* istanbul ignore next */ []));
36
38
  canEchap = input(true, ...(ngDevMode ? [{ debugName: "canEchap" }] : /* istanbul ignore next */ []));
37
39
  isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
38
- modalService = inject(ModalService);
39
- menuService = inject(MenuService);
40
40
  constructor() {
41
41
  effect(() => {
42
42
  this.isOpen.set(this.modalService.getSignal(this.id()) ?? false);
@@ -54,12 +54,12 @@ class ModalComponent {
54
54
  this.modalService.close(this.id());
55
55
  };
56
56
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.10", type: ModalComponent, isStandalone: true, selector: "dsv-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: true, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, canEchap: { classPropertyName: "canEchap", publicName: "canEchap", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: "<div\n class=\"modal-overlay\"\n [class.open]=\"isOpen()\"\n></div>\n<div\n [class]=\"'modal ' + class()\"\n [class.open]=\"isOpen()\"\n>\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button\n (callback)=\"close()\"\n variant=\"text\"\n color=\"inherit\"\n >\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer-wrapper\">\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n</div>\n", styles: [":host{--modal-top: 35%;--modal-left: 25%;--modal-width: 50%;--modal-height: auto;--modal-min-height: 150px;--modal-max-height: 50vh;--modal-overlay-z-index: 100;--modal-z-index: 101;--modal-content-padding: 25px 10px 20px;--modal-overflow: auto;position:absolute}:host .modal-overlay{position:fixed;z-index:-1;opacity:0;background-color:oklab(0% none none / .8);width:100%;height:100%;top:0;right:0}:host .modal-overlay.open{z-index:var(--modal-overlay-z-index);opacity:1}:host .modal{position:fixed;z-index:-1;opacity:0;top:var(--modal-top);left:var(--modal-left);width:var(--modal-width);height:var(--modal-height);min-height:var(--modal-min-height);background:var(--background);display:flex;flex-direction:column}:host .modal.open{z-index:var(--modal-z-index);opacity:1}:host .modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px;background:var(--background-header);border-bottom:1px outset var(--border)}:host .modal .modal-content{flex:1;overflow:var(--modal-overflow);scrollbar-width:thin;padding:var(--modal-content-padding);background:var(--background-card);max-height:var(--modal-max-height)}:host .modal .modal-footer-wrapper:not(:empty){padding:10px;background:var(--background-card)}@media screen and (min-width:1000px){:host{--modal-left: calc(25% + 120px) !important}}@media screen and (max-width:750px){:host{--modal-width: calc(100% - 16px) !important;--modal-left: 8px !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.1.0", version: "21.2.10", type: ModalComponent, isStandalone: true, selector: "dsv-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: true, transformFunction: null }, canEchap: { classPropertyName: "canEchap", publicName: "canEchap", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: "<div\n class=\"modal-overlay\"\n [class.open]=\"isOpen()\"\n></div>\n<div\n [class]=\"'modal ' + class()\"\n [class.open]=\"isOpen()\"\n>\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button\n (callback)=\"close()\"\n variant=\"text\"\n color=\"inherit\"\n >\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer-wrapper\">\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n</div>\n", styles: [":host{--modal-top: 35%;--modal-left: 25%;--modal-width: 50%;--modal-height: auto;--modal-min-height: 150px;--modal-max-height: 50vh;--modal-overlay-z-index: 100;--modal-z-index: 101;--modal-content-padding: 25px 10px 20px;--modal-overflow: auto;position:absolute}:host .modal-overlay{position:fixed;z-index:-1;opacity:0;background-color:oklab(0% none none / .8);width:100%;height:100%;top:0;right:0}:host .modal-overlay.open{z-index:var(--modal-overlay-z-index);opacity:1}:host .modal{position:fixed;z-index:-1;opacity:0;top:var(--modal-top);left:var(--modal-left);width:var(--modal-width);height:var(--modal-height);min-height:var(--modal-min-height);background:var(--background);display:flex;flex-direction:column}:host .modal.open{z-index:var(--modal-z-index);opacity:1}:host .modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px;background:var(--background-header);border-bottom:1px outset var(--border)}:host .modal .modal-content{flex:1;overflow:var(--modal-overflow);scrollbar-width:thin;padding:var(--modal-content-padding);background:var(--background-card);max-height:var(--modal-max-height)}:host .modal .modal-footer-wrapper:not(:empty){padding:10px;background:var(--background-card)}@media screen and (min-width:1000px){:host{--modal-left: calc(25% + 120px) !important}}@media screen and (max-width:750px){:host{--modal-width: calc(100% - 16px) !important;--modal-left: 8px !important}}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ModalComponent, decorators: [{
60
60
  type: Component,
61
61
  args: [{ selector: 'dsv-modal', imports: [DsvButtonComponent], template: "<div\n class=\"modal-overlay\"\n [class.open]=\"isOpen()\"\n></div>\n<div\n [class]=\"'modal ' + class()\"\n [class.open]=\"isOpen()\"\n>\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button\n (callback)=\"close()\"\n variant=\"text\"\n color=\"inherit\"\n >\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer-wrapper\">\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n</div>\n", styles: [":host{--modal-top: 35%;--modal-left: 25%;--modal-width: 50%;--modal-height: auto;--modal-min-height: 150px;--modal-max-height: 50vh;--modal-overlay-z-index: 100;--modal-z-index: 101;--modal-content-padding: 25px 10px 20px;--modal-overflow: auto;position:absolute}:host .modal-overlay{position:fixed;z-index:-1;opacity:0;background-color:oklab(0% none none / .8);width:100%;height:100%;top:0;right:0}:host .modal-overlay.open{z-index:var(--modal-overlay-z-index);opacity:1}:host .modal{position:fixed;z-index:-1;opacity:0;top:var(--modal-top);left:var(--modal-left);width:var(--modal-width);height:var(--modal-height);min-height:var(--modal-min-height);background:var(--background);display:flex;flex-direction:column}:host .modal.open{z-index:var(--modal-z-index);opacity:1}:host .modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px;background:var(--background-header);border-bottom:1px outset var(--border)}:host .modal .modal-content{flex:1;overflow:var(--modal-overflow);scrollbar-width:thin;padding:var(--modal-content-padding);background:var(--background-card);max-height:var(--modal-max-height)}:host .modal .modal-footer-wrapper:not(:empty){padding:10px;background:var(--background-card)}@media screen and (min-width:1000px){:host{--modal-left: calc(25% + 120px) !important}}@media screen and (max-width:750px){:host{--modal-width: calc(100% - 16px) !important;--modal-left: 8px !important}}\n"] }]
62
- }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], canEchap: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEchap", required: false }] }], onEscapeKey: [{
62
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: true }] }], canEchap: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEchap", required: false }] }], onEscapeKey: [{
63
63
  type: HostListener,
64
64
  args: ['document:keydown.escape']
65
65
  }] } });
@@ -86,7 +86,7 @@ class ModalAlertComponent {
86
86
  this.modalService.close(this.id());
87
87
  };
88
88
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ModalAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
89
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: ModalAlertComponent, isStandalone: true, selector: "dsv-modal-alert", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, buttonClose: { classPropertyName: "buttonClose", publicName: "buttonClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<dsv-modal\n [id]=\"id()\"\n [titleText]=\"titleText()\"\n>\n {{ text() }}\n <div class=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button\n (callback)=\"doClickClose()\"\n color=\"error\"\n >\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button\n (callback)=\"doClick()\"\n color=\"success\"\n >\n {{ button() | translate }}\n </dsv-button>\n </div>\n</dsv-modal>\n", styles: [":host{position:absolute}:host .modal-footer{display:flex;gap:.5rem;justify-content:flex-end}:host dsv-modal{--modal-overlay-z-index: 110 !important;--modal-z-index: 111 !important}\n"], dependencies: [{ kind: "component", type: ModalComponent, selector: "dsv-modal", inputs: ["id", "titleText", "class", "canEchap"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
89
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: ModalAlertComponent, isStandalone: true, selector: "dsv-modal-alert", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, buttonClose: { classPropertyName: "buttonClose", publicName: "buttonClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<dsv-modal\n [id]=\"id()\"\n [titleText]=\"titleText()\"\n>\n {{ text() }}\n <div class=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button\n (callback)=\"doClickClose()\"\n color=\"error\"\n >\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button\n (callback)=\"doClick()\"\n color=\"success\"\n >\n {{ button() | translate }}\n </dsv-button>\n </div>\n</dsv-modal>\n", styles: [":host{position:absolute}:host .modal-footer{display:flex;gap:.5rem;justify-content:flex-end}:host dsv-modal{--modal-overlay-z-index: 110 !important;--modal-z-index: 111 !important}\n"], dependencies: [{ kind: "component", type: ModalComponent, selector: "dsv-modal", inputs: ["id", "class", "titleText", "canEchap"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
90
90
  }
91
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ModalAlertComponent, decorators: [{
92
92
  type: Component,
@@ -95,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
95
95
 
96
96
  class ModalButtonComponent {
97
97
  modalService = inject(ModalService);
98
- id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
98
+ modalName = input.required(...(ngDevMode ? [{ debugName: "modalName" }] : /* istanbul ignore next */ []));
99
99
  icon = input('', ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
100
100
  variant = input('contained', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
101
101
  text = input('', ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
@@ -103,15 +103,15 @@ class ModalButtonComponent {
103
103
  callback = output();
104
104
  doToogle = () => {
105
105
  this.callback.emit();
106
- this.modalService.toggle(this.id());
106
+ this.modalService.toggle(this.modalName());
107
107
  };
108
108
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ModalButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
109
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.10", type: ModalButtonComponent, isStandalone: true, selector: "dsv-modal-button", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
109
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.10", type: ModalButtonComponent, isStandalone: true, selector: "dsv-modal-button", inputs: { modalName: { classPropertyName: "modalName", publicName: "modalName", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
110
110
  }
111
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ModalButtonComponent, decorators: [{
112
112
  type: Component,
113
113
  args: [{ selector: 'dsv-modal-button', imports: [DsvButtonComponent], template: "<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n" }]
114
- }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
114
+ }], propDecorators: { modalName: [{ type: i0.Input, args: [{ isSignal: true, alias: "modalName", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
115
115
 
116
116
  /**
117
117
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-modal.mjs","sources":["../../../projects/ng-dsv/ds/modal/service/modal.service.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.html","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.ts","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.html","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.ts","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.html","../../../projects/ng-dsv/ds/modal/ng-vagabond-lab-ng-dsv-ds-modal.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly states = signal<Map<string, boolean>>(new Map());\n\n getSignal(id: string): boolean {\n return this.states().get(id) ?? false;\n }\n\n open(id: string) {\n this.states.update((map) => new Map(map).set(id, true));\n }\n\n close(id: string) {\n this.states.update((map) => new Map(map).set(id, false));\n }\n\n toggle(id: string) {\n this.states.update((map) => new Map(map).set(id, !map.get(id)));\n }\n\n closeAll() {\n this.states.set(new Map());\n }\n}\n","import { Component, effect, HostListener, inject, input, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { ModalService } from '../service/modal.service';\n\n@Component({\n selector: 'dsv-modal',\n imports: [DsvButtonComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent {\n id = input.required<string>();\n titleText = input.required<string>();\n class = input<string>('');\n canEchap = input<boolean>(true);\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n menuService = inject(MenuService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id()) ?? false);\n if (this.isOpen()) {\n this.menuService.isMenuOpen.set(false);\n }\n });\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey() {\n if (this.isOpen() && this.canEchap()) {\n this.close();\n }\n }\n\n close = () => {\n this.modalService.close(this.id());\n };\n}\n","<div\n class=\"modal-overlay\"\n [class.open]=\"isOpen()\"\n></div>\n<div\n [class]=\"'modal ' + class()\"\n [class.open]=\"isOpen()\"\n>\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button\n (callback)=\"close()\"\n variant=\"text\"\n color=\"inherit\"\n >\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer-wrapper\">\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n</div>\n","import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ModalService } from '../../service/modal.service';\nimport { ModalComponent } from '../modal.component';\n\n@Component({\n selector: 'dsv-modal-alert',\n imports: [ModalComponent, DsvButtonComponent, TranslatePipe],\n templateUrl: './modal-alert.component.html',\n styleUrls: ['./modal-alert.component.scss'],\n})\nexport class ModalAlertComponent {\n id = input.required<string>();\n titleText = input<string>('title');\n text = input<string>('text');\n button = input<string>('button');\n buttonClose = input<string>();\n callback = output<void>();\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id() ?? false));\n });\n }\n\n doClick = () => {\n this.modalService.toggle(this.id());\n this.callback.emit();\n };\n\n doClickClose = () => {\n this.modalService.close(this.id());\n };\n}\n","<dsv-modal\n [id]=\"id()\"\n [titleText]=\"titleText()\"\n>\n {{ text() }}\n <div class=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button\n (callback)=\"doClickClose()\"\n color=\"error\"\n >\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button\n (callback)=\"doClick()\"\n color=\"success\"\n >\n {{ button() | translate }}\n </dsv-button>\n </div>\n</dsv-modal>\n","import { Component, inject, input, output } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ButtonVariantType, ColorType } from '@ng-vagabond-lab/ng-dsv/type';\nimport { ModalService } from '../../service/modal.service';\n\n@Component({\n selector: 'dsv-modal-button',\n imports: [DsvButtonComponent],\n templateUrl: './modal-button.component.html',\n})\nexport class ModalButtonComponent {\n modalService = inject(ModalService);\n\n id = input.required<string>();\n icon = input<string>('');\n variant = input<ButtonVariantType>('contained');\n text = input<string>('');\n color = input<ColorType>('primary');\n\n callback = output<void>();\n\n doToogle = () => {\n this.callback.emit();\n this.modalService.toggle(this.id());\n };\n}\n","<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAGa,YAAY,CAAA;AACJ,IAAA,MAAM,GAAG,MAAM,CAAuB,IAAI,GAAG,EAAE,6EAAC;AAEjE,IAAA,SAAS,CAAC,EAAU,EAAA;QAChB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK;IACzC;AAEA,IAAA,IAAI,CAAC,EAAU,EAAA;QACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D;AAEA,IAAA,KAAK,CAAC,EAAU,EAAA;QACZ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5D;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IAC9B;wGArBS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCSrB,cAAc,CAAA;AACvB,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,wEAAU;AAC7B,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAU;AACpC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,+EAAC;AAE/B,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,6EAAC;AAE/B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;AAChE,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1C;AACJ,QAAA,CAAC,CAAC;IACN;IAGA,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;IAEA,KAAK,GAAG,MAAK;QACT,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,IAAA,CAAC;wGA7BQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3B,4lBAyBA,EAAA,MAAA,EAAA,CAAA,o6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBc,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAInB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACI,WAAW,EAAA,OAAA,EACZ,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,4lBAAA,EAAA,MAAA,EAAA,CAAA,o6CAAA,CAAA,EAAA;;sBAwB5B,YAAY;uBAAC,yBAAyB;;;MEnB9B,mBAAmB,CAAA;AAC5B,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,wEAAU;AAC7B,IAAA,SAAS,GAAG,KAAK,CAAS,OAAO,gFAAC;AAClC,IAAA,IAAI,GAAG,KAAK,CAAS,MAAM,2EAAC;AAC5B,IAAA,MAAM,GAAG,KAAK,CAAS,QAAQ,6EAAC;IAChC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC7B,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,6EAAC;AAE/B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEnC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC;AACpE,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,GAAG,MAAK;QACX,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxB,IAAA,CAAC;IAED,YAAY,GAAG,MAAK;QAChB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,IAAA,CAAC;wGAzBQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,suBCZhC,siBAsBA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdc,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,2JAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,cAAc,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,siBAAA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA;;;MEEnD,oBAAoB,CAAA;AAC7B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEnC,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,wEAAU;AAC7B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AACxB,IAAA,OAAO,GAAG,KAAK,CAAoB,WAAW,8EAAC;AAC/C,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AACxB,IAAA,KAAK,GAAG,KAAK,CAAY,SAAS,4EAAC;IAEnC,QAAQ,GAAG,MAAM,EAAQ;IAEzB,QAAQ,GAAG,MAAK;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACvC,IAAA,CAAC;wGAdQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,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,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVjC,0LASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFc,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,kBAAkB,EAAA,OAAA,EACnB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,0LAAA,EAAA;;;AEPjC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-modal.mjs","sources":["../../../projects/ng-dsv/ds/modal/service/modal.service.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.html","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.ts","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.html","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.ts","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.html","../../../projects/ng-dsv/ds/modal/ng-vagabond-lab-ng-dsv-ds-modal.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly states = signal<Map<string, boolean>>(new Map());\n\n getSignal(id: string): boolean {\n return this.states().get(id) ?? false;\n }\n\n open(id: string) {\n this.states.update((map) => new Map(map).set(id, true));\n }\n\n close(id: string) {\n this.states.update((map) => new Map(map).set(id, false));\n }\n\n toggle(id: string) {\n this.states.update((map) => new Map(map).set(id, !map.get(id)));\n }\n\n closeAll() {\n this.states.set(new Map());\n }\n}\n","import { Component, effect, HostListener, inject, input, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { ModalService } from '../service/modal.service';\n\n@Component({\n selector: 'dsv-modal',\n imports: [DsvButtonComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent {\n modalService = inject(ModalService);\n menuService = inject(MenuService);\n\n id = input.required<string>();\n class = input<string>('');\n\n titleText = input.required<string>();\n\n canEchap = input<boolean>(true);\n isOpen = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id()) ?? false);\n if (this.isOpen()) {\n this.menuService.isMenuOpen.set(false);\n }\n });\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey() {\n if (this.isOpen() && this.canEchap()) {\n this.close();\n }\n }\n\n close = () => {\n this.modalService.close(this.id());\n };\n}\n","<div\n class=\"modal-overlay\"\n [class.open]=\"isOpen()\"\n></div>\n<div\n [class]=\"'modal ' + class()\"\n [class.open]=\"isOpen()\"\n>\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button\n (callback)=\"close()\"\n variant=\"text\"\n color=\"inherit\"\n >\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer-wrapper\">\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n</div>\n","import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ModalService } from '../../service/modal.service';\nimport { ModalComponent } from '../modal.component';\n\n@Component({\n selector: 'dsv-modal-alert',\n imports: [ModalComponent, DsvButtonComponent, TranslatePipe],\n templateUrl: './modal-alert.component.html',\n styleUrls: ['./modal-alert.component.scss'],\n})\nexport class ModalAlertComponent {\n id = input.required<string>();\n titleText = input<string>('title');\n text = input<string>('text');\n button = input<string>('button');\n buttonClose = input<string>();\n callback = output<void>();\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id() ?? false));\n });\n }\n\n doClick = () => {\n this.modalService.toggle(this.id());\n this.callback.emit();\n };\n\n doClickClose = () => {\n this.modalService.close(this.id());\n };\n}\n","<dsv-modal\n [id]=\"id()\"\n [titleText]=\"titleText()\"\n>\n {{ text() }}\n <div class=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button\n (callback)=\"doClickClose()\"\n color=\"error\"\n >\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button\n (callback)=\"doClick()\"\n color=\"success\"\n >\n {{ button() | translate }}\n </dsv-button>\n </div>\n</dsv-modal>\n","import { Component, inject, input, output } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ButtonVariantType, ColorType } from '@ng-vagabond-lab/ng-dsv/type';\nimport { ModalService } from '../../service/modal.service';\n\n@Component({\n selector: 'dsv-modal-button',\n imports: [DsvButtonComponent],\n templateUrl: './modal-button.component.html',\n})\nexport class ModalButtonComponent {\n modalService = inject(ModalService);\n\n modalName = input.required<string>();\n icon = input<string>('');\n variant = input<ButtonVariantType>('contained');\n text = input<string>('');\n color = input<ColorType>('primary');\n\n callback = output<void>();\n\n doToogle = () => {\n this.callback.emit();\n this.modalService.toggle(this.modalName());\n };\n}\n","<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -153,21 +153,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
153
153
  args: [{ providedIn: 'root' }]
154
154
  }] });
155
155
 
156
- const scrollOnClassTo = (scrollClass, x = 0, y = 0, index) => {
157
- const scrolls = document.getElementsByClassName(scrollClass);
158
- if (index) {
159
- scrolls[index]?.scrollTo(x, y);
160
- }
161
- else {
162
- Array.from(scrolls).forEach((scroll) => {
163
- scroll?.scrollTo(x, y);
164
- });
165
- }
156
+ const SCROLL_ID = '#main-scroll';
157
+ const SCROLL_CLASS = '.scroll';
158
+ const scrollToTop = (element, name = SCROLL_ID) => {
159
+ element.nativeElement.querySelector(name)?.scrollTo({ top: 0, behavior: 'smooth' });
160
+ };
161
+ const scrollToClosestTop = (element, name = SCROLL_CLASS) => {
162
+ element.nativeElement.querySelector(name)?.closest(name)?.scrollTo(0, 0);
166
163
  };
167
164
 
168
165
  /**
169
166
  * Generated bundle index. Do not edit.
170
167
  */
171
168
 
172
- export { ButtonScrollTopComponent, ScrollInfiniteContainer, ScrollService, scrollOnClassTo };
169
+ export { ButtonScrollTopComponent, SCROLL_CLASS, SCROLL_ID, ScrollInfiniteContainer, ScrollService, scrollToClosestTop, scrollToTop };
173
170
  //# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-scroll.mjs","sources":["../../../projects/ng-dsv/ds/scroll/component/button/button.scroll-top.component.ts","../../../projects/ng-dsv/ds/scroll/component/button/button.scroll-top.component.html","../../../projects/ng-dsv/ds/scroll/component/scroll.infinite.component.ts","../../../projects/ng-dsv/ds/scroll/component/scroll.infinite.component.html","../../../projects/ng-dsv/ds/scroll/service/scroll.service.ts","../../../projects/ng-dsv/ds/scroll/utils/scroll.utils.ts","../../../projects/ng-dsv/ds/scroll/ng-vagabond-lab-ng-dsv-ds-scroll.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\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 scroll = input<number>(0);\n\n callback = output<void>();\n\n show = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.show.set(this.scroll() > 400);\n });\n }\n}\n","@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"callback.emit()\"\n ></dsv-button>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { Scroll } from '@angular/router';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { filter, map } from 'rxjs';\nimport { ButtonScrollTopComponent, ScrollService } from '../public-api';\n\n@Component({\n selector: 'dsv-scroll-infinite',\n imports: [ButtonScrollTopComponent, NgTemplateOutlet],\n templateUrl: './scroll.infinite.component.html',\n styleUrls: ['./scroll.infinite.component.scss'],\n host: {\n '[id]': 'uuid()',\n class: 'scroll',\n '(scroll)': 'doScroll()',\n },\n})\nexport class ScrollInfiniteContainer {\n readonly scrollService = inject(ScrollService);\n readonly elementRef = inject(ElementRef);\n readonly routerService = inject(RouterService);\n\n readonly bottomOffset = input<number>(100);\n readonly loading = input<boolean | null>(null);\n readonly skeletonCount = input<number>(10);\n\n readonly callback = output<void>();\n\n readonly uuid = signal<string>('');\n readonly top = signal<number>(0);\n\n private readonly $loading = signal(false);\n\n skeletonTemplate = contentChild<TemplateRef<void>>('skeleton');\n\n readonly skeletonArray = signal<number[]>([]);\n\n constructor() {\n this.routerService.router.events\n .pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n map((event: Scroll) => event.position),\n )\n .subscribe(() => {\n const value = this.scrollService.getScroll(this.uuid(), this.routerService.currentUrl());\n if (value.top === 0 && value.left === 0) {\n return;\n }\n for (let i = 10; i < 100; i += 10) {\n setTimeout(() => {\n this.restoreScroll(value.top, value.left);\n this.$loading.set(true);\n }, i);\n }\n });\n\n effect(() => {\n if (this.scrollService.isPlatformBrowser()) {\n const all = Array.from(document.querySelectorAll('.scroll'));\n const index = all.indexOf(this.elementRef.nativeElement);\n this.uuid.set(this.scrollService.getRouteUuid(index));\n }\n });\n\n effect(() => {\n if (!this.loading()) {\n this.$loading.set(false);\n }\n });\n\n effect(() => {\n this.skeletonArray.set(Array.from({ length: this.skeletonCount() }, (_, i) => i));\n });\n }\n\n restoreScroll(top: number, left: number) {\n if (top === 0 && left === 0) {\n return;\n }\n this.top.set(top);\n this.elementRef.nativeElement.scrollTop = top;\n this.elementRef.nativeElement.scrollLeft = left;\n this.resetLoading();\n }\n\n private resetLoading() {\n setTimeout(() => {\n this.$loading.set(false);\n }, 500);\n }\n\n scrollToTop() {\n this.elementRef.nativeElement.scrollTop = 0;\n this.scrollService.saveScroll(this.uuid(), this.routerService.currentUrl(), 0, 0);\n }\n\n doScroll() {\n const value = this.scrollService.getScroll(this.uuid(), this.routerService.currentUrl());\n\n const scrollTop = this.elementRef.nativeElement.scrollTop;\n const scrollLeft = this.elementRef.nativeElement.scrollLeft;\n\n if (scrollTop < value.top - 500 && scrollLeft < value.left - 500) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n const distanceToBottom = element.scrollHeight - element.scrollTop - element.clientHeight;\n\n this.scrollService.saveScroll(\n this.uuid(),\n this.routerService.currentUrl(),\n element.scrollTop,\n element.scrollLeft,\n );\n this.top.set(element.scrollTop);\n\n if (distanceToBottom < this.bottomOffset() && !this.$loading()) {\n this.$loading.set(true);\n this.callback.emit();\n this.resetLoading();\n }\n }\n}\n","<ng-content></ng-content>\n\n@if (loading()) {\n <ng-container>\n @for (_ of skeletonArray(); track _) {\n <ng-container *ngTemplateOutlet=\"skeletonTemplate()\"></ng-container>\n }\n </ng-container>\n}\n\n<dsv-scroll-top-button [scroll]=\"top()\" (callback)=\"scrollToTop()\" />\n","import { inject, Injectable, signal } from '@angular/core';\nimport { BaseApiService } from '@ng-vagabond-lab/ng-dsv/base/service';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { ScrollPositionDto } from '../dto/scroll.position.dto';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService extends BaseApiService {\n readonly router = inject(RouterService).router;\n readonly routeIds = new Map<string, string>();\n readonly scrolls = signal<Map<string, Map<string, ScrollPositionDto>>>(new Map());\n\n getRouteUuid(index: number = 0): string {\n const key = `${this.router.url}__${index}`;\n if (!this.routeIds.has(key)) {\n this.routeIds.set(key, crypto.randomUUID());\n }\n return this.routeIds.get(key)!;\n }\n\n saveScroll(id: string, url: string, top: number, left: number) {\n this.scrolls.update((map) => {\n const newMap = new Map(map);\n const urlMap = new Map(newMap.get(id) ?? []);\n urlMap.set(url, { top, left });\n newMap.set(id, urlMap);\n return newMap;\n });\n }\n\n getScroll(id: string, url: string): ScrollPositionDto {\n return this.scrolls().get(id)?.get(url) ?? { top: 0, left: 0 };\n }\n\n clear(id: string) {\n this.scrolls.update((map) => {\n const newMap = new Map(map);\n newMap.delete(id);\n return newMap;\n });\n }\n}\n","export const scrollOnClassTo = (scrollClass: string, x: number = 0, y: number = 0, index?: number) => {\n const scrolls = document.getElementsByClassName(scrollClass);\n if (index) {\n scrolls[index]?.scrollTo(x, y);\n } else {\n Array.from(scrolls).forEach((scroll) => {\n scroll?.scrollTo(x, y);\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-ds-scroll.mjs","sources":["../../../projects/ng-dsv/ds/scroll/component/button/button.scroll-top.component.ts","../../../projects/ng-dsv/ds/scroll/component/button/button.scroll-top.component.html","../../../projects/ng-dsv/ds/scroll/component/scroll.infinite.component.ts","../../../projects/ng-dsv/ds/scroll/component/scroll.infinite.component.html","../../../projects/ng-dsv/ds/scroll/service/scroll.service.ts","../../../projects/ng-dsv/ds/scroll/utils/scroll.utils.ts","../../../projects/ng-dsv/ds/scroll/ng-vagabond-lab-ng-dsv-ds-scroll.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\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 scroll = input<number>(0);\n\n callback = output<void>();\n\n show = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.show.set(this.scroll() > 400);\n });\n }\n}\n","@if (show()) {\n <dsv-button\n icon=\"ri-arrow-up-line\"\n color=\"default\"\n (callback)=\"callback.emit()\"\n ></dsv-button>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { Scroll } from '@angular/router';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { filter, map } from 'rxjs';\nimport { ButtonScrollTopComponent, ScrollService } from '../public-api';\n\n@Component({\n selector: 'dsv-scroll-infinite',\n imports: [ButtonScrollTopComponent, NgTemplateOutlet],\n templateUrl: './scroll.infinite.component.html',\n styleUrls: ['./scroll.infinite.component.scss'],\n host: {\n '[id]': 'uuid()',\n class: 'scroll',\n '(scroll)': 'doScroll()',\n },\n})\nexport class ScrollInfiniteContainer {\n readonly scrollService = inject(ScrollService);\n readonly elementRef = inject(ElementRef);\n readonly routerService = inject(RouterService);\n\n readonly bottomOffset = input<number>(100);\n readonly loading = input<boolean | null>(null);\n readonly skeletonCount = input<number>(10);\n\n readonly callback = output<void>();\n\n readonly uuid = signal<string>('');\n readonly top = signal<number>(0);\n\n private readonly $loading = signal(false);\n\n skeletonTemplate = contentChild<TemplateRef<void>>('skeleton');\n\n readonly skeletonArray = signal<number[]>([]);\n\n constructor() {\n this.routerService.router.events\n .pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n map((event: Scroll) => event.position),\n )\n .subscribe(() => {\n const value = this.scrollService.getScroll(this.uuid(), this.routerService.currentUrl());\n if (value.top === 0 && value.left === 0) {\n return;\n }\n for (let i = 10; i < 100; i += 10) {\n setTimeout(() => {\n this.restoreScroll(value.top, value.left);\n this.$loading.set(true);\n }, i);\n }\n });\n\n effect(() => {\n if (this.scrollService.isPlatformBrowser()) {\n const all = Array.from(document.querySelectorAll('.scroll'));\n const index = all.indexOf(this.elementRef.nativeElement);\n this.uuid.set(this.scrollService.getRouteUuid(index));\n }\n });\n\n effect(() => {\n if (!this.loading()) {\n this.$loading.set(false);\n }\n });\n\n effect(() => {\n this.skeletonArray.set(Array.from({ length: this.skeletonCount() }, (_, i) => i));\n });\n }\n\n restoreScroll(top: number, left: number) {\n if (top === 0 && left === 0) {\n return;\n }\n this.top.set(top);\n this.elementRef.nativeElement.scrollTop = top;\n this.elementRef.nativeElement.scrollLeft = left;\n this.resetLoading();\n }\n\n private resetLoading() {\n setTimeout(() => {\n this.$loading.set(false);\n }, 500);\n }\n\n scrollToTop() {\n this.elementRef.nativeElement.scrollTop = 0;\n this.scrollService.saveScroll(this.uuid(), this.routerService.currentUrl(), 0, 0);\n }\n\n doScroll() {\n const value = this.scrollService.getScroll(this.uuid(), this.routerService.currentUrl());\n\n const scrollTop = this.elementRef.nativeElement.scrollTop;\n const scrollLeft = this.elementRef.nativeElement.scrollLeft;\n\n if (scrollTop < value.top - 500 && scrollLeft < value.left - 500) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n const distanceToBottom = element.scrollHeight - element.scrollTop - element.clientHeight;\n\n this.scrollService.saveScroll(\n this.uuid(),\n this.routerService.currentUrl(),\n element.scrollTop,\n element.scrollLeft,\n );\n this.top.set(element.scrollTop);\n\n if (distanceToBottom < this.bottomOffset() && !this.$loading()) {\n this.$loading.set(true);\n this.callback.emit();\n this.resetLoading();\n }\n }\n}\n","<ng-content></ng-content>\n\n@if (loading()) {\n <ng-container>\n @for (_ of skeletonArray(); track _) {\n <ng-container *ngTemplateOutlet=\"skeletonTemplate()\"></ng-container>\n }\n </ng-container>\n}\n\n<dsv-scroll-top-button [scroll]=\"top()\" (callback)=\"scrollToTop()\" />\n","import { inject, Injectable, signal } from '@angular/core';\nimport { BaseApiService } from '@ng-vagabond-lab/ng-dsv/base/service';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { ScrollPositionDto } from '../dto/scroll.position.dto';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService extends BaseApiService {\n readonly router = inject(RouterService).router;\n readonly routeIds = new Map<string, string>();\n readonly scrolls = signal<Map<string, Map<string, ScrollPositionDto>>>(new Map());\n\n getRouteUuid(index: number = 0): string {\n const key = `${this.router.url}__${index}`;\n if (!this.routeIds.has(key)) {\n this.routeIds.set(key, crypto.randomUUID());\n }\n return this.routeIds.get(key)!;\n }\n\n saveScroll(id: string, url: string, top: number, left: number) {\n this.scrolls.update((map) => {\n const newMap = new Map(map);\n const urlMap = new Map(newMap.get(id) ?? []);\n urlMap.set(url, { top, left });\n newMap.set(id, urlMap);\n return newMap;\n });\n }\n\n getScroll(id: string, url: string): ScrollPositionDto {\n return this.scrolls().get(id)?.get(url) ?? { top: 0, left: 0 };\n }\n\n clear(id: string) {\n this.scrolls.update((map) => {\n const newMap = new Map(map);\n newMap.delete(id);\n return newMap;\n });\n }\n}\n","import { ElementRef } from '@angular/core';\n\nexport const SCROLL_ID = '#main-scroll';\nexport const SCROLL_CLASS = '.scroll';\n\nexport const scrollToTop = (element: ElementRef, name: string = SCROLL_ID) => {\n element.nativeElement.querySelector(name)?.scrollTo({ top: 0, behavior: 'smooth' });\n};\nexport const scrollToClosestTop = (element: ElementRef, name: string = SCROLL_CLASS) => {\n element.nativeElement.querySelector(name)?.closest(name)?.scrollTo(0, 0);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MASa,wBAAwB,CAAA;AACjC,IAAA,MAAM,GAAG,KAAK,CAAS,CAAC,6EAAC;IAEzB,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;AAE7B,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;wGAXS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,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,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTrC,gKAOA,EAAA,MAAA,EAAA,CAAA,4GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFc,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAInB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACI,uBAAuB,EAAA,OAAA,EACxB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,gKAAA,EAAA,MAAA,EAAA,CAAA,4GAAA,CAAA,EAAA;;;MEuBpB,uBAAuB,CAAA;AACvB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAErC,IAAA,YAAY,GAAG,KAAK,CAAS,GAAG,mFAAC;AACjC,IAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,8EAAC;AACrC,IAAA,aAAa,GAAG,KAAK,CAAS,EAAE,oFAAC;IAEjC,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,IAAI,GAAG,MAAM,CAAS,EAAE,2EAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAS,CAAC,0EAAC;AAEf,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AAEzC,IAAA,gBAAgB,GAAG,YAAY,CAAoB,UAAU,uFAAC;AAErD,IAAA,aAAa,GAAG,MAAM,CAAW,EAAE,oFAAC;AAE7C,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aACrB,IAAI,CACD,MAAM,CAAC,CAAC,KAAK,KAAsB,KAAK,YAAY,MAAM,CAAC,EAC3D,GAAG,CAAC,CAAC,KAAa,KAAK,KAAK,CAAC,QAAQ,CAAC;aAEzC,SAAS,CAAC,MAAK;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AACxF,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;gBACrC;YACJ;AACA,YAAA,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;AACzC,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B,CAAC,EAAE,CAAC,CAAC;YACT;AACJ,QAAA,CAAC,CAAC;QAEN,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE;AACxC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC5D,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACxD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzD;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACrF,QAAA,CAAC,CAAC;IACN;IAEA,aAAa,CAAC,GAAW,EAAE,IAAY,EAAA;QACnC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;YACzB;QACJ;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG;QAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI;QAC/C,IAAI,CAAC,YAAY,EAAE;IACvB;IAEQ,YAAY,GAAA;QAChB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B,CAAC,EAAE,GAAG,CAAC;IACX;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACrF;IAEA,QAAQ,GAAA;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAExF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU;AAE3D,QAAA,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE;YAC9D;QACJ;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY;QAExF,IAAI,CAAC,aAAa,CAAC,UAAU,CACzB,IAAI,CAAC,IAAI,EAAE,EACX,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAC/B,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,UAAU,CACrB;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAE/B,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YACpB,IAAI,CAAC,YAAY,EAAE;QACvB;IACJ;wGAzGS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BpC,0TAWA,EAAA,MAAA,EAAA,CAAA,iFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,wBAAwB,6GAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAS3C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,WACtB,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,EAAA,IAAA,EAG/C;AACF,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,UAAU,EAAE,YAAY;AAC3B,qBAAA,EAAA,QAAA,EAAA,0TAAA,EAAA,MAAA,EAAA,CAAA,iFAAA,CAAA,EAAA;gdAkBkD,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtC3D,MAAO,aAAc,SAAQ,cAAc,CAAA;AACpC,IAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM;AACrC,IAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB;AACpC,IAAA,OAAO,GAAG,MAAM,CAA8C,IAAI,GAAG,EAAE,8EAAC;IAEjF,YAAY,CAAC,QAAgB,CAAC,EAAA;QAC1B,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/C;QACA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE;IAClC;AAEA,IAAA,UAAU,CAAC,EAAU,EAAE,GAAW,EAAE,GAAW,EAAE,IAAY,EAAA;QACzD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC9B,YAAA,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;AACtB,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,CAAC,EAAU,EAAE,GAAW,EAAA;QAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IAClE;AAEA,IAAA,KAAK,CAAC,EAAU,EAAA;QACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC3B,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACjB,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC,CAAC;IACN;wGAjCS,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACH3B,MAAM,SAAS,GAAG;AAClB,MAAM,YAAY,GAAG;AAErB,MAAM,WAAW,GAAG,CAAC,OAAmB,EAAE,IAAA,GAAe,SAAS,KAAI;IACzE,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACvF;AACO,MAAM,kBAAkB,GAAG,CAAC,OAAmB,EAAE,IAAA,GAAe,YAAY,KAAI;AACnF,IAAA,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5E;;ACVA;;AAEG;;;;"}
@@ -95,11 +95,11 @@ class AdminSearchModalContainer extends BaseContainer {
95
95
  this.modalService.close('m2m');
96
96
  };
97
97
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AdminSearchModalContainer, isStandalone: true, selector: "dsv-admin-search-modal", inputs: { m2em: { classPropertyName: "m2em", publicName: "m2em", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callback: "callback" }, usesInheritance: true, ngImport: i0, template: "<dsv-modal-button\n id=\"m2m\"\n icon=\"ri-add-line\"\n/>\n<dsv-modal\n id=\"m2m\"\n titleText=\"Ajouter un e\u0301le\u0301ment\"\n>\n <dsv-form-reactive-searchbar\n [search]=\"search()\"\n (callbackSearch)=\"doSearch($event)\"\n />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</dsv-modal>\n", styles: [":host dsv-modal{--modal-width: 70% !important;--modal-left: 15% !important;--modal-height: 65% !important;--modal-top: 20% !important}\n"], dependencies: [{ kind: "component", type: DsvItemComponent, selector: "dsv-item", inputs: ["icon", "text", "url", "small"], outputs: ["callback"] }, { kind: "component", type: ModalButtonComponent, selector: "dsv-modal-button", inputs: ["id", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: ModalComponent, selector: "dsv-modal", inputs: ["id", "titleText", "class", "canEchap"] }, { kind: "component", type: ReactiveSearchbarComponent, selector: "dsv-form-reactive-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AdminSearchModalContainer, isStandalone: true, selector: "dsv-admin-search-modal", inputs: { m2em: { classPropertyName: "m2em", publicName: "m2em", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callback: "callback" }, usesInheritance: true, ngImport: i0, template: "<dsv-modal-button modalName=\"m2m\" icon=\"ri-add-line\" />\n<dsv-modal id=\"m2m\" titleText=\"Ajouter un e\u0301le\u0301ment\">\n <dsv-form-reactive-searchbar [search]=\"search()\" (callbackSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item [text]=\"getValue(data, m2em().name)\" (callback)=\"clickItem(data)\" />\n }\n </div>\n</dsv-modal>\n", styles: [":host dsv-modal{--modal-width: 70% !important;--modal-left: 15% !important;--modal-height: 65% !important;--modal-top: 20% !important}\n"], dependencies: [{ kind: "component", type: DsvItemComponent, selector: "dsv-item", inputs: ["icon", "text", "url", "small"], outputs: ["callback"] }, { kind: "component", type: ModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: ModalComponent, selector: "dsv-modal", inputs: ["id", "class", "titleText", "canEchap"] }, { kind: "component", type: ReactiveSearchbarComponent, selector: "dsv-form-reactive-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
99
99
  }
100
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
101
101
  type: Component,
102
- args: [{ selector: 'dsv-admin-search-modal', imports: [DsvItemComponent, ModalButtonComponent, ModalComponent, ReactiveSearchbarComponent], template: "<dsv-modal-button\n id=\"m2m\"\n icon=\"ri-add-line\"\n/>\n<dsv-modal\n id=\"m2m\"\n titleText=\"Ajouter un e\u0301le\u0301ment\"\n>\n <dsv-form-reactive-searchbar\n [search]=\"search()\"\n (callbackSearch)=\"doSearch($event)\"\n />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</dsv-modal>\n", styles: [":host dsv-modal{--modal-width: 70% !important;--modal-left: 15% !important;--modal-height: 65% !important;--modal-top: 20% !important}\n"] }]
102
+ args: [{ selector: 'dsv-admin-search-modal', imports: [DsvItemComponent, ModalButtonComponent, ModalComponent, ReactiveSearchbarComponent], template: "<dsv-modal-button modalName=\"m2m\" icon=\"ri-add-line\" />\n<dsv-modal id=\"m2m\" titleText=\"Ajouter un e\u0301le\u0301ment\">\n <dsv-form-reactive-searchbar [search]=\"search()\" (callbackSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item [text]=\"getValue(data, m2em().name)\" (callback)=\"clickItem(data)\" />\n }\n </div>\n</dsv-modal>\n", styles: [":host dsv-modal{--modal-width: 70% !important;--modal-left: 15% !important;--modal-height: 65% !important;--modal-top: 20% !important}\n"] }]
103
103
  }], ctorParameters: () => [], propDecorators: { m2em: [{ type: i0.Input, args: [{ isSignal: true, alias: "m2em", required: true }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
104
104
 
105
105
  class AdminFormComponent extends BaseFormReactiveComponent {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-admin.mjs","sources":["../../../projects/ng-dsv/modules/admin/service/admin.service.ts","../../../projects/ng-dsv/modules/admin/component/modal/admin.search.modal.component.ts","../../../projects/ng-dsv/modules/admin/component/modal/admin.search.modal.component.html","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.ts","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.html","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.ts","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.html","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.ts","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.html","../../../projects/ng-dsv/modules/admin/dto/admin.default.dto.ts","../../../projects/ng-dsv/modules/admin/ng-vagabond-lab-ng-dsv-modules-admin.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ApiDto, ApiService, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { AdminTabConfDto } from '../dto/admin.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdminService {\n apiService = inject(ApiService);\n\n tabs = signal<AdminTabConfDto>({} as AdminTabConfDto);\n\n datas = signal<Record<string, PageableDto<ApiDto[]>>>({});\n data = signal<ApiDto>({} as ApiDto);\n\n page = signal<Record<string, number>>({});\n search = signal<Record<string, string>>({});\n\n get(\n endpoint: string,\n fields: string,\n search: string,\n page: number = 0,\n max: number = 10,\n callback?: (data: PageableDto<ApiDto[]>) => void,\n ) {\n const url =\n '/' +\n endpoint +\n '/findBy?fields=' +\n fields +\n '&values=' +\n search +\n '&first=' +\n page +\n '&max=' +\n max;\n\n const callbackResponse =\n callback ??\n ((data: PageableDto<ApiDto[]>) => {\n this.datas.update((s) => ({ ...s, [endpoint]: data }));\n });\n this.apiService.get<PageableDto<ApiDto[]>>(encodeURI(url), callbackResponse);\n }\n\n post(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.post<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n put(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.put<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n findById(endpoint: string, id: string) {\n const url = '/' + endpoint + '/' + id;\n this.apiService.get<ApiDto>(encodeURI(url), (data) => {\n this.data.set(data);\n });\n }\n}\n","import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { ReactiveSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { DsvItemComponent } from '@ng-vagabond-lab/ng-dsv/ds/item';\nimport { ModalButtonComponent, ModalComponent, ModalService } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { ManyToManyDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search-modal',\n imports: [DsvItemComponent, ModalButtonComponent, ModalComponent, ReactiveSearchbarComponent],\n templateUrl: './admin.search.modal.component.html',\n styleUrls: ['./admin.search.modal.component.scss'],\n})\nexport class AdminSearchModalContainer extends BaseContainer {\n modalService = inject(ModalService);\n adminService = inject(AdminService);\n\n m2em = input.required<ManyToManyDto>();\n\n search = signal<string>('');\n datas = signal<ApiDto[]>([]);\n\n callback = output<ApiDto>();\n\n constructor() {\n super();\n this.requiredRole.set('ADMIN');\n effect(() => {\n this.adminService.get(this.m2em().endPoint, this.m2em().fields, this.search(), 0, 500, (data) => {\n this.datas.set(data.content);\n });\n });\n }\n\n getValue(data: ApiDto, name: string) {\n return data[name as keyof ApiDto] as string;\n }\n\n doSearch(search: string) {\n this.search.set(search);\n }\n\n clickItem = (data: ApiDto) => {\n this.callback.emit(data);\n this.modalService.close('m2m');\n };\n}\n","<dsv-modal-button\n id=\"m2m\"\n icon=\"ri-add-line\"\n/>\n<dsv-modal\n id=\"m2m\"\n titleText=\"Ajouter un élément\"\n>\n <dsv-form-reactive-searchbar\n [search]=\"search()\"\n (callbackSearch)=\"doSearch($event)\"\n />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</dsv-modal>\n","import { Component, effect, input, output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ApiDto, ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport {\n BaseFormReactiveComponent,\n FormReactiveCheckboxComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { FormDto } from '../../dto/admin.dto';\nimport { AdminSearchModalContainer } from '../modal/admin.search.modal.component';\n\n@Component({\n selector: 'dsv-admin-form',\n imports: [\n ReactiveFormsModule,\n DsvChipComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n FormReactiveCheckboxComponent,\n AdminSearchModalContainer,\n ],\n templateUrl: './admin.form.component.html',\n styleUrls: ['./admin.form.component.scss'],\n})\nexport class AdminFormComponent extends BaseFormReactiveComponent {\n urlBack = input<string>();\n data = input.required<ApiDto>();\n formConf = input.required<FormDto[]>();\n\n callback = output<ApiDto>();\n\n constructor() {\n super();\n effect(() => {\n this.formBuilder.control('a');\n\n let formControl = {} as { [key: string]: FormControl };\n this.formConf()?.forEach((conf) => {\n let value = this.data()[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value) {\n value = (value as string).substring(0, 16);\n }\n const required = conf.required || false;\n formControl[conf.name] = new FormControl(\n { value, disabled: conf.disabled ?? false },\n required ? Validators.required : null,\n );\n });\n this.form = this.formBuilder.group(formControl);\n });\n }\n\n sendForm(data: ApiDto) {\n this.callback.emit(data);\n }\n\n removeValue = (name: string, id: ID) => () => {\n this.form.value[name] = this.form.value[name].filter((value: ApiDto) => value.id !== id);\n };\n\n addValue = (name: string) => (data: ApiDto) => {\n const find = this.form.value[name].find((value: ApiDto) => value.id === data.id);\n if (!find) {\n this.form.value[name].push(data);\n }\n };\n}\n","<dsv-form-reactive\n [form]=\"form\"\n [urlBack]=\"urlBack()!\"\n (callback)=\"sendForm($event)\"\n>\n @for (field of formConf(); track field.name) {\n <div [class]=\"'item ' + (field.className ?? '')\">\n @if (\n field.type === 'text' ||\n field.type === 'number' ||\n field.type === 'textarea' ||\n field.type === 'datetime-local'\n ) {\n <dsv-form-reactive-input\n [form]=\"form\"\n [field]=\"field.name\"\n [type]=\"field.type\"\n [required]=\"field.required ?? false\"\n />\n }\n @if (field.type === 'switch') {\n <dsv-form-reactive-checkbox\n [form]=\"form\"\n [field]=\"field.name\"\n />\n }\n @if (field.type === 'm2m') {\n <div class=\"m2m\">\n <div class=\"m2m-content\">\n @for (value of form.value[field.name]; track value.id) {\n <dsv-chip\n color=\"default\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <dsv-admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n</dsv-form-reactive>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminFormComponent } from '../../component/form/admin.form.component';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-form-container',\n imports: [DsvCardComponent, AdminFormComponent],\n templateUrl: './admin.form.container.html',\n styleUrls: ['./admin.form.container.scss'],\n})\nexport class AdminFormContainer extends BaseRouteContainer {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const id = this.routeParams()?.['id'];\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (Number.isNaN(Number(id))) {\n this.adminService.data.set({} as ApiDto);\n } else {\n this.findById(this.routeParams()?.['id']);\n }\n }\n });\n }\n\n findById(id: string) {\n this.adminService.findById(this.tabConfig()?.name!, id);\n }\n\n sendForm(data: ApiDto) {\n const dataFusion = {\n ...this.adminService.data(),\n ...data,\n };\n if (dataFusion.id) {\n this.adminService.put(this.tabConfig()?.name!, dataFusion);\n } else {\n this.adminService.post(this.tabConfig()?.name!, dataFusion);\n }\n }\n}\n","<dsv-card [titleText]=\"adminService.data().id ? 'Modification' : 'Ajout'\">\n <dsv-admin-form\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { FormSignalSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/signal';\nimport { PaginateComponent } from '@ng-vagabond-lab/ng-dsv/ds/paginate';\nimport { TabDto, TabsComponent } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { TableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search',\n imports: [\n DsvCardComponent,\n DsvButtonComponent,\n TabsComponent,\n TableComponent,\n PaginateComponent,\n RouterLink,\n FormSignalSearchbarComponent,\n ],\n templateUrl: './admin.search.container.html',\n styleUrls: ['./admin.search.container.scss'],\n})\nexport class AdminSearchContainer extends BaseRouteContainer {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n load = signal<Record<string, boolean>>({});\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (!this.load()[this.routeParams()?.['type']]) {\n this.load.update((s) => ({ ...s, [this.tabConfig()?.name!]: true }));\n this.gotoPage(0);\n }\n }\n });\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const tabs = this.adminService.tabs()?.tabs;\n const tabsDtos: TabDto[] = [];\n if (tabs) {\n tabs.forEach((tab) => {\n const tabsDto = {} as TabDto;\n tabsDto.id = tab.name;\n tabsDto.title = tab.name;\n tabsDto.url = '/admin/' + tab.name;\n tabsDtos.push(tabsDto);\n });\n }\n this.tabs.set(tabsDtos);\n }\n });\n }\n\n gotoPage(page: number, search: string = '') {\n this.adminService.page.update((s) => ({ ...s, [this.tabConfig()?.name!]: page }));\n this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name!]: search }));\n this.adminService.get(\n this.tabConfig()?.name!,\n this.tabConfig()?.findByChamps!,\n search,\n page,\n this.adminService.tabs()?.max,\n );\n }\n}\n","<dsv-tabs-component\n [tabs]=\"tabs()\"\n [active]=\"tab()\"\n/>\n<dsv-card>\n <div class=\"admin-header\">\n <span>Résulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n","import { AdminTabDto } from './admin.dto';\n\nexport const ADMIN_COL = [\n { label: 'AUTH.FIELDS.CREATE_DATE', width: '145px', name: 'creationDate', date: true, order: true },\n { label: 'AUTH.FIELDS.ACTIVE', width: '70px', name: 'active', order: true },\n];\n\nexport const ADMIN_PROFILE_M2M = {\n name: 'name',\n endPoint: 'profile',\n fields: 'name%',\n order: 'name',\n orderBy: 'asc',\n};\n\nexport const ADMIN_INPUT = [\n {\n name: 'creationDate',\n label: 'AUTH.FIELDS.CREATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'updatedDate',\n label: 'AUTH.FIELDS.UPDATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'deletedDate',\n label: 'AUTH.FIELDS.DELETE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n { name: 'active', label: 'AUTH.FIELDS.ACTIVE', type: 'switch', required: false, className: 'width50' },\n];\n\nexport const ADMIN_USER: AdminTabDto[] = [\n {\n name: 'user',\n label: 'AUTH.USER:TITLE',\n findByChamps: 'username%And|Email%',\n sortBy: 'creationDate',\n sortByAsc: 'desc',\n cells: [\n { label: 'AUTH.FIELDS.LOGIN', name: 'username', order: true },\n { label: 'AUTH.FIELDS.EMAIL', width: '240px', name: 'email', order: true },\n { label: 'AUTH.FIELDS.PROFILES', name: 'profiles.name' },\n {\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n width: '150px',\n name: 'lastConnexionDate',\n date: true,\n order: true,\n },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'username', label: 'AUTH.FIELDS.LOGIN', type: 'text', required: true },\n { name: 'password', label: 'AUTH.FIELDS.PASSWORD', type: 'password', required: false },\n { name: 'email', label: 'AUTH.FIELDS.EMAIL', type: 'text', email: true, required: true },\n {\n name: 'profiles',\n label: 'AUTH.FIELDS.PFOFILES',\n type: 'm2m',\n required: false,\n m2m: ADMIN_PROFILE_M2M,\n array: true,\n },\n {\n name: 'lastConnexionDate',\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n type: 'datetime-local',\n required: false,\n },\n {\n name: 'activationToken',\n label: 'AUTH.FIELDS.ACTIVATION_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'emailActivation',\n label: 'AUTH.FIELDS.EMAIL_ACTIVIATION',\n type: 'switch',\n className: 'width50',\n },\n {\n name: 'identityToken',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'identityTokenDateEnd',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN_DATE',\n type: 'datetime-local',\n className: 'width50',\n },\n { name: 'googleId', label: 'AUTH.FIELDS.GOOGLE_ID', type: 'text', className: 'width50' },\n { name: 'facebookId', label: 'AUTH.FIELDS.FACEBOOK_ID', type: 'text', className: 'width50' },\n ...ADMIN_INPUT,\n ],\n },\n];\n\nexport const ADMIN_PROFILE: AdminTabDto[] = [\n {\n name: 'profile',\n label: 'AUTH.PROFILE:TITLE',\n findByChamps: 'name%',\n sortBy: 'name',\n cells: [\n { label: 'AUTH.FIELDS.NAME', name: 'name', order: true },\n { label: 'AUTH.FIELDS.ROLES', name: 'roles', order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'name', label: 'AUTH.FIELDS.NAME', type: 'text', required: true },\n { name: 'roles', label: 'AUTH.FIELDS.ROLES', type: 'text', required: true },\n ...ADMIN_INPUT,\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-modules-admin.mjs","sources":["../../../projects/ng-dsv/modules/admin/service/admin.service.ts","../../../projects/ng-dsv/modules/admin/component/modal/admin.search.modal.component.ts","../../../projects/ng-dsv/modules/admin/component/modal/admin.search.modal.component.html","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.ts","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.html","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.ts","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.html","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.ts","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.html","../../../projects/ng-dsv/modules/admin/dto/admin.default.dto.ts","../../../projects/ng-dsv/modules/admin/ng-vagabond-lab-ng-dsv-modules-admin.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ApiDto, ApiService, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { AdminTabConfDto } from '../dto/admin.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdminService {\n apiService = inject(ApiService);\n\n tabs = signal<AdminTabConfDto>({} as AdminTabConfDto);\n\n datas = signal<Record<string, PageableDto<ApiDto[]>>>({});\n data = signal<ApiDto>({} as ApiDto);\n\n page = signal<Record<string, number>>({});\n search = signal<Record<string, string>>({});\n\n get(\n endpoint: string,\n fields: string,\n search: string,\n page: number = 0,\n max: number = 10,\n callback?: (data: PageableDto<ApiDto[]>) => void,\n ) {\n const url =\n '/' +\n endpoint +\n '/findBy?fields=' +\n fields +\n '&values=' +\n search +\n '&first=' +\n page +\n '&max=' +\n max;\n\n const callbackResponse =\n callback ??\n ((data: PageableDto<ApiDto[]>) => {\n this.datas.update((s) => ({ ...s, [endpoint]: data }));\n });\n this.apiService.get<PageableDto<ApiDto[]>>(encodeURI(url), callbackResponse);\n }\n\n post(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.post<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n put(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.put<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n findById(endpoint: string, id: string) {\n const url = '/' + endpoint + '/' + id;\n this.apiService.get<ApiDto>(encodeURI(url), (data) => {\n this.data.set(data);\n });\n }\n}\n","import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { ReactiveSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { DsvItemComponent } from '@ng-vagabond-lab/ng-dsv/ds/item';\nimport { ModalButtonComponent, ModalComponent, ModalService } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { ManyToManyDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search-modal',\n imports: [DsvItemComponent, ModalButtonComponent, ModalComponent, ReactiveSearchbarComponent],\n templateUrl: './admin.search.modal.component.html',\n styleUrls: ['./admin.search.modal.component.scss'],\n})\nexport class AdminSearchModalContainer extends BaseContainer {\n modalService = inject(ModalService);\n adminService = inject(AdminService);\n\n m2em = input.required<ManyToManyDto>();\n\n search = signal<string>('');\n datas = signal<ApiDto[]>([]);\n\n callback = output<ApiDto>();\n\n constructor() {\n super();\n this.requiredRole.set('ADMIN');\n effect(() => {\n this.adminService.get(this.m2em().endPoint, this.m2em().fields, this.search(), 0, 500, (data) => {\n this.datas.set(data.content);\n });\n });\n }\n\n getValue(data: ApiDto, name: string) {\n return data[name as keyof ApiDto] as string;\n }\n\n doSearch(search: string) {\n this.search.set(search);\n }\n\n clickItem = (data: ApiDto) => {\n this.callback.emit(data);\n this.modalService.close('m2m');\n };\n}\n","<dsv-modal-button modalName=\"m2m\" icon=\"ri-add-line\" />\n<dsv-modal id=\"m2m\" titleText=\"Ajouter un élément\">\n <dsv-form-reactive-searchbar [search]=\"search()\" (callbackSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item [text]=\"getValue(data, m2em().name)\" (callback)=\"clickItem(data)\" />\n }\n </div>\n</dsv-modal>\n","import { Component, effect, input, output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ApiDto, ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport {\n BaseFormReactiveComponent,\n FormReactiveCheckboxComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { FormDto } from '../../dto/admin.dto';\nimport { AdminSearchModalContainer } from '../modal/admin.search.modal.component';\n\n@Component({\n selector: 'dsv-admin-form',\n imports: [\n ReactiveFormsModule,\n DsvChipComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n FormReactiveCheckboxComponent,\n AdminSearchModalContainer,\n ],\n templateUrl: './admin.form.component.html',\n styleUrls: ['./admin.form.component.scss'],\n})\nexport class AdminFormComponent extends BaseFormReactiveComponent {\n urlBack = input<string>();\n data = input.required<ApiDto>();\n formConf = input.required<FormDto[]>();\n\n callback = output<ApiDto>();\n\n constructor() {\n super();\n effect(() => {\n this.formBuilder.control('a');\n\n let formControl = {} as { [key: string]: FormControl };\n this.formConf()?.forEach((conf) => {\n let value = this.data()[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value) {\n value = (value as string).substring(0, 16);\n }\n const required = conf.required || false;\n formControl[conf.name] = new FormControl(\n { value, disabled: conf.disabled ?? false },\n required ? Validators.required : null,\n );\n });\n this.form = this.formBuilder.group(formControl);\n });\n }\n\n sendForm(data: ApiDto) {\n this.callback.emit(data);\n }\n\n removeValue = (name: string, id: ID) => () => {\n this.form.value[name] = this.form.value[name].filter((value: ApiDto) => value.id !== id);\n };\n\n addValue = (name: string) => (data: ApiDto) => {\n const find = this.form.value[name].find((value: ApiDto) => value.id === data.id);\n if (!find) {\n this.form.value[name].push(data);\n }\n };\n}\n","<dsv-form-reactive\n [form]=\"form\"\n [urlBack]=\"urlBack()!\"\n (callback)=\"sendForm($event)\"\n>\n @for (field of formConf(); track field.name) {\n <div [class]=\"'item ' + (field.className ?? '')\">\n @if (\n field.type === 'text' ||\n field.type === 'number' ||\n field.type === 'textarea' ||\n field.type === 'datetime-local'\n ) {\n <dsv-form-reactive-input\n [form]=\"form\"\n [field]=\"field.name\"\n [type]=\"field.type\"\n [required]=\"field.required ?? false\"\n />\n }\n @if (field.type === 'switch') {\n <dsv-form-reactive-checkbox\n [form]=\"form\"\n [field]=\"field.name\"\n />\n }\n @if (field.type === 'm2m') {\n <div class=\"m2m\">\n <div class=\"m2m-content\">\n @for (value of form.value[field.name]; track value.id) {\n <dsv-chip\n color=\"default\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <dsv-admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n</dsv-form-reactive>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminFormComponent } from '../../component/form/admin.form.component';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-form-container',\n imports: [DsvCardComponent, AdminFormComponent],\n templateUrl: './admin.form.container.html',\n styleUrls: ['./admin.form.container.scss'],\n})\nexport class AdminFormContainer extends BaseRouteContainer {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const id = this.routeParams()?.['id'];\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (Number.isNaN(Number(id))) {\n this.adminService.data.set({} as ApiDto);\n } else {\n this.findById(this.routeParams()?.['id']);\n }\n }\n });\n }\n\n findById(id: string) {\n this.adminService.findById(this.tabConfig()?.name!, id);\n }\n\n sendForm(data: ApiDto) {\n const dataFusion = {\n ...this.adminService.data(),\n ...data,\n };\n if (dataFusion.id) {\n this.adminService.put(this.tabConfig()?.name!, dataFusion);\n } else {\n this.adminService.post(this.tabConfig()?.name!, dataFusion);\n }\n }\n}\n","<dsv-card [titleText]=\"adminService.data().id ? 'Modification' : 'Ajout'\">\n <dsv-admin-form\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { FormSignalSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/signal';\nimport { PaginateComponent } from '@ng-vagabond-lab/ng-dsv/ds/paginate';\nimport { TabDto, TabsComponent } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { TableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search',\n imports: [\n DsvCardComponent,\n DsvButtonComponent,\n TabsComponent,\n TableComponent,\n PaginateComponent,\n RouterLink,\n FormSignalSearchbarComponent,\n ],\n templateUrl: './admin.search.container.html',\n styleUrls: ['./admin.search.container.scss'],\n})\nexport class AdminSearchContainer extends BaseRouteContainer {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n load = signal<Record<string, boolean>>({});\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (!this.load()[this.routeParams()?.['type']]) {\n this.load.update((s) => ({ ...s, [this.tabConfig()?.name!]: true }));\n this.gotoPage(0);\n }\n }\n });\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const tabs = this.adminService.tabs()?.tabs;\n const tabsDtos: TabDto[] = [];\n if (tabs) {\n tabs.forEach((tab) => {\n const tabsDto = {} as TabDto;\n tabsDto.id = tab.name;\n tabsDto.title = tab.name;\n tabsDto.url = '/admin/' + tab.name;\n tabsDtos.push(tabsDto);\n });\n }\n this.tabs.set(tabsDtos);\n }\n });\n }\n\n gotoPage(page: number, search: string = '') {\n this.adminService.page.update((s) => ({ ...s, [this.tabConfig()?.name!]: page }));\n this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name!]: search }));\n this.adminService.get(\n this.tabConfig()?.name!,\n this.tabConfig()?.findByChamps!,\n search,\n page,\n this.adminService.tabs()?.max,\n );\n }\n}\n","<dsv-tabs-component\n [tabs]=\"tabs()\"\n [active]=\"tab()\"\n/>\n<dsv-card>\n <div class=\"admin-header\">\n <span>Résulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n","import { AdminTabDto } from './admin.dto';\n\nexport const ADMIN_COL = [\n { label: 'AUTH.FIELDS.CREATE_DATE', width: '145px', name: 'creationDate', date: true, order: true },\n { label: 'AUTH.FIELDS.ACTIVE', width: '70px', name: 'active', order: true },\n];\n\nexport const ADMIN_PROFILE_M2M = {\n name: 'name',\n endPoint: 'profile',\n fields: 'name%',\n order: 'name',\n orderBy: 'asc',\n};\n\nexport const ADMIN_INPUT = [\n {\n name: 'creationDate',\n label: 'AUTH.FIELDS.CREATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'updatedDate',\n label: 'AUTH.FIELDS.UPDATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'deletedDate',\n label: 'AUTH.FIELDS.DELETE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n { name: 'active', label: 'AUTH.FIELDS.ACTIVE', type: 'switch', required: false, className: 'width50' },\n];\n\nexport const ADMIN_USER: AdminTabDto[] = [\n {\n name: 'user',\n label: 'AUTH.USER:TITLE',\n findByChamps: 'username%And|Email%',\n sortBy: 'creationDate',\n sortByAsc: 'desc',\n cells: [\n { label: 'AUTH.FIELDS.LOGIN', name: 'username', order: true },\n { label: 'AUTH.FIELDS.EMAIL', width: '240px', name: 'email', order: true },\n { label: 'AUTH.FIELDS.PROFILES', name: 'profiles.name' },\n {\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n width: '150px',\n name: 'lastConnexionDate',\n date: true,\n order: true,\n },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'username', label: 'AUTH.FIELDS.LOGIN', type: 'text', required: true },\n { name: 'password', label: 'AUTH.FIELDS.PASSWORD', type: 'password', required: false },\n { name: 'email', label: 'AUTH.FIELDS.EMAIL', type: 'text', email: true, required: true },\n {\n name: 'profiles',\n label: 'AUTH.FIELDS.PFOFILES',\n type: 'm2m',\n required: false,\n m2m: ADMIN_PROFILE_M2M,\n array: true,\n },\n {\n name: 'lastConnexionDate',\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n type: 'datetime-local',\n required: false,\n },\n {\n name: 'activationToken',\n label: 'AUTH.FIELDS.ACTIVATION_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'emailActivation',\n label: 'AUTH.FIELDS.EMAIL_ACTIVIATION',\n type: 'switch',\n className: 'width50',\n },\n {\n name: 'identityToken',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'identityTokenDateEnd',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN_DATE',\n type: 'datetime-local',\n className: 'width50',\n },\n { name: 'googleId', label: 'AUTH.FIELDS.GOOGLE_ID', type: 'text', className: 'width50' },\n { name: 'facebookId', label: 'AUTH.FIELDS.FACEBOOK_ID', type: 'text', className: 'width50' },\n ...ADMIN_INPUT,\n ],\n },\n];\n\nexport const ADMIN_PROFILE: AdminTabDto[] = [\n {\n name: 'profile',\n label: 'AUTH.PROFILE:TITLE',\n findByChamps: 'name%',\n sortBy: 'name',\n cells: [\n { label: 'AUTH.FIELDS.NAME', name: 'name', order: true },\n { label: 'AUTH.FIELDS.ROLES', name: 'roles', order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'name', label: 'AUTH.FIELDS.NAME', type: 'text', required: true },\n { name: 'roles', label: 'AUTH.FIELDS.ROLES', type: 'text', required: true },\n ...ADMIN_INPUT,\n ],\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;MAOa,YAAY,CAAA;AACrB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,IAAA,IAAI,GAAG,MAAM,CAAkB,EAAqB,2EAAC;AAErD,IAAA,KAAK,GAAG,MAAM,CAAwC,EAAE,4EAAC;AACzD,IAAA,IAAI,GAAG,MAAM,CAAS,EAAY,2EAAC;AAEnC,IAAA,IAAI,GAAG,MAAM,CAAyB,EAAE,2EAAC;AACzC,IAAA,MAAM,GAAG,MAAM,CAAyB,EAAE,6EAAC;AAE3C,IAAA,GAAG,CACC,QAAgB,EAChB,MAAc,EACd,MAAc,EACd,IAAA,GAAe,CAAC,EAChB,GAAA,GAAc,EAAE,EAChB,QAAgD,EAAA;QAEhD,MAAM,GAAG,GACL,GAAG;YACH,QAAQ;YACR,iBAAiB;YACjB,MAAM;YACN,UAAU;YACV,MAAM;YACN,SAAS;YACT,IAAI;YACJ,OAAO;AACP,YAAA,GAAG;QAEP,MAAM,gBAAgB,GAClB,QAAQ;aACP,CAAC,IAA2B,KAAI;gBAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC;AAC1D,YAAA,CAAC,CAAC;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAwB,SAAS,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC;IAChF;IAEA,IAAI,CAAC,QAAgB,EAAE,IAAY,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAS,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAI;AAC5D,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAA;AAC9B,QAAA,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAS,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAI;AAC3D,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,CAAC,QAAgB,EAAE,EAAU,EAAA;QACjC,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAS,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAI;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,CAAC,CAAC;IACN;wGA1DS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFT,MAAM,EAAA,CAAA;;4FAET,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;ACSK,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AACxD,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEnC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAiB;AAEtC,IAAA,MAAM,GAAG,MAAM,CAAS,EAAE,6EAAC;AAC3B,IAAA,KAAK,GAAG,MAAM,CAAW,EAAE,4EAAC;IAE5B,QAAQ,GAAG,MAAM,EAAU;AAE3B,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,KAAI;gBAC5F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAoB,CAAW;IAC/C;AAEA,IAAA,QAAQ,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3B;AAEA,IAAA,SAAS,GAAG,CAAC,IAAY,KAAI;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,IAAA,CAAC;wGAhCQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECftC,saASA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEc,gBAAgB,sHAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,0BAA0B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAInF,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACI,wBAAwB,EAAA,OAAA,EACzB,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,0BAA0B,CAAC,EAAA,QAAA,EAAA,saAAA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA;;;AEe3F,MAAO,kBAAmB,SAAQ,yBAAyB,CAAA;IAC7D,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AACzB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAa;IAEtC,QAAQ,GAAG,MAAM,EAAU;AAE3B,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;YAE7B,IAAI,WAAW,GAAG,EAAoC;YACtD,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAoB,CAAC;gBAClD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,EAAE;oBACzC,KAAK,GAAI,KAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC9C;AACA,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AACvC,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,WAAW,CACpC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,EAC3C,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAI,CACxC;AACL,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC;AACnD,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEA,WAAW,GAAG,CAAC,IAAY,EAAE,EAAM,KAAK,MAAK;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAa,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAC5F,IAAA,CAAC;IAED,QAAQ,GAAG,CAAC,IAAY,KAAK,CAAC,IAAY,KAAI;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAa,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAChF,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC;AACJ,IAAA,CAAC;wGAzCQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B/B,urDA8CA,EAAA,MAAA,EAAA,CAAA,qnBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9BQ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,6BAA6B,4IAC7B,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB;wBACL,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;wBACrB,0BAA0B;wBAC1B,6BAA6B;wBAC7B,yBAAyB;AAC5B,qBAAA,EAAA,QAAA,EAAA,urDAAA,EAAA,MAAA,EAAA,CAAA,qnBAAA,CAAA,EAAA;;;AENC,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;AACtD,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,IAAA,IAAI,GAAG,MAAM,CAAW,EAAE,2EAAC;AAC3B,IAAA,GAAG,GAAG,MAAM,CAAS,MAAM,0EAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAA0B,SAAS,gFAAC;AAEtD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;gBAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AACrC,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;gBAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACjF,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAY,CAAC;gBAC5C;qBAAO;AACH,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC7C;YACJ;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,EAAE,EAAE,CAAC;IAC3D;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACjB,QAAA,MAAM,UAAU,GAAG;AACf,YAAA,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC3B,YAAA,GAAG,IAAI;SACV;AACD,QAAA,IAAI,UAAU,CAAC,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,EAAE,UAAU,CAAC;QAC9D;aAAO;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,EAAE,UAAU,CAAC;QAC/D;IACJ;wGAvCS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB/B,+RAQA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIc,gBAAgB,kHAAE,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,OAAA,EAC3B,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,+RAAA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA;;;AEe7C,MAAO,oBAAqB,SAAQ,kBAAkB,CAAA;AACxD,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,IAAA,IAAI,GAAG,MAAM,CAAW,EAAE,2EAAC;AAC3B,IAAA,GAAG,GAAG,MAAM,CAAS,MAAM,0EAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAA0B,SAAS,gFAAC;AAEtD,IAAA,IAAI,GAAG,MAAM,CAA0B,EAAE,2EAAC;AAE1C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;AAC1C,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;gBAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACjF,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE;AAC5C,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,GAAG,IAAI,EAAE,CAAC,CAAC;AACpE,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpB;YACJ;AACJ,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI;gBAC3C,MAAM,QAAQ,GAAa,EAAE;gBAC7B,IAAI,IAAI,EAAE;AACN,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACjB,MAAM,OAAO,GAAG,EAAY;AAC5B,wBAAA,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI;AACrB,wBAAA,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI;wBACxB,OAAO,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,IAAI;AAClC,wBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,oBAAA,CAAC,CAAC;gBACN;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC3B;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAE,MAAA,GAAiB,EAAE,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,GAAG,IAAI,EAAE,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,GAAG,MAAM,EAAE,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACjB,IAAI,CAAC,SAAS,EAAE,EAAE,IAAK,EACvB,IAAI,CAAC,SAAS,EAAE,EAAE,YAAa,EAC/B,MAAM,EACN,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,CAChC;IACL;wGAnDS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BjC,w/BA+BA,EAAA,MAAA,EAAA,CAAA,8NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfQ,gBAAgB,kHAChB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,aAAa,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,UAAU,oOACV,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKvB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB;wBACL,gBAAgB;wBAChB,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,iBAAiB;wBACjB,UAAU;wBACV,4BAA4B;AAC/B,qBAAA,EAAA,QAAA,EAAA,w/BAAA,EAAA,MAAA,EAAA,CAAA,8NAAA,CAAA,EAAA;;;AErBE,MAAM,SAAS,GAAG;AACrB,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AACnG,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;;AAGxE,MAAM,iBAAiB,GAAG;AAC7B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,OAAO,EAAE,KAAK;;AAGX,MAAM,WAAW,GAAG;AACvB,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,yBAAyB;AAChC,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,yBAAyB;AAChC,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,yBAAyB;AAChC,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE;;AAGnG,MAAM,UAAU,GAAkB;AACrC,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,YAAY,EAAE,qBAAqB;AACnC,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,KAAK,EAAE;YACH,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7D,YAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1E,YAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE;AACxD,YAAA;AACI,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA,GAAG,SAAS;AACf,SAAA;AACD,QAAA,IAAI,EAAE;AACF,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC9E,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;AACtF,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AACxF,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,QAAQ,EAAE,KAAK;AAClB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,EAAE,8BAA8B;AACrC,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,SAAS;AACvB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,EAAE,+BAA+B;AACtC,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,SAAS;AACvB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,4BAA4B;AACnC,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,SAAS;AACvB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,SAAS,EAAE,SAAS;AACvB,aAAA;AACD,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE;AACxF,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE;AAC5F,YAAA,GAAG,WAAW;AACjB,SAAA;AACJ,KAAA;;AAGE,MAAM,aAAa,GAAkB;AACxC,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,YAAY,EAAE,OAAO;AACrB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,KAAK,EAAE;YACH,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;YACxD,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1D,YAAA,GAAG,SAAS;AACf,SAAA;AACD,QAAA,IAAI,EAAE;AACF,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AACzE,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC3E,YAAA,GAAG,WAAW;AACjB,SAAA;AACJ,KAAA;;;AC7HL;;AAEG;;;;"}
@@ -35,11 +35,11 @@ class AuthComponent {
35
35
  this.callbackLogout.emit();
36
36
  }
37
37
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AuthComponent, isStandalone: true, selector: "dsv-auth", outputs: { callbackInitMember: "callbackInitMember", callbackLogout: "callbackLogout" }, ngImport: i0, template: "<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"profile\" />\n <dsv-modal-button id=\"logout\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"De\u0301connexion\"\n text=\"Voulez-vous vraiment vous de\u0301connecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n", styles: [":host{display:flex;gap:10px;flex-flow:nowrap;align-items:center}:host button{margin:0;padding:0;background:transparent;border:0px}:host img{width:30px;height:30px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ModalButtonComponent, selector: "dsv-modal-button", inputs: ["id", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: ModalAlertComponent, selector: "dsv-modal-alert", inputs: ["id", "titleText", "text", "button", "buttonClose"], outputs: ["callback"] }] });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AuthComponent, isStandalone: true, selector: "dsv-auth", outputs: { callbackInitMember: "callbackInitMember", callbackLogout: "callbackLogout" }, ngImport: i0, template: "<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"profile\" />\n <dsv-modal-button modalName=\"logout\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"De\u0301connexion\"\n text=\"Voulez-vous vraiment vous de\u0301connecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n", styles: [":host{display:flex;gap:10px;flex-flow:nowrap;align-items:center}:host button{margin:0;padding:0;background:transparent;border:0px}:host img{width:30px;height:30px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: ModalAlertComponent, selector: "dsv-modal-alert", inputs: ["id", "titleText", "text", "button", "buttonClose"], outputs: ["callback"] }] });
39
39
  }
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AuthComponent, decorators: [{
41
41
  type: Component,
42
- args: [{ selector: 'dsv-auth', imports: [CommonModule, ModalButtonComponent, ModalAlertComponent], template: "<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"profile\" />\n <dsv-modal-button id=\"logout\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"De\u0301connexion\"\n text=\"Voulez-vous vraiment vous de\u0301connecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n", styles: [":host{display:flex;gap:10px;flex-flow:nowrap;align-items:center}:host button{margin:0;padding:0;background:transparent;border:0px}:host img{width:30px;height:30px;border-radius:50%}\n"] }]
42
+ args: [{ selector: 'dsv-auth', imports: [CommonModule, ModalButtonComponent, ModalAlertComponent], template: "<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"profile\" />\n <dsv-modal-button modalName=\"logout\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"De\u0301connexion\"\n text=\"Voulez-vous vraiment vous de\u0301connecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n", styles: [":host{display:flex;gap:10px;flex-flow:nowrap;align-items:center}:host button{margin:0;padding:0;background:transparent;border:0px}:host img{width:30px;height:30px;border-radius:50%}\n"] }]
43
43
  }], ctorParameters: () => [], propDecorators: { callbackInitMember: [{ type: i0.Output, args: ["callbackInitMember"] }], callbackLogout: [{ type: i0.Output, args: ["callbackLogout"] }] } });
44
44
 
45
45
  const authGuard = (role) => {
@@ -80,7 +80,7 @@ const authInterceptor = (req, next) => {
80
80
  authService.logout(false);
81
81
  }
82
82
  else {
83
- toastService.showToast({ type: 'error', text: errorMessage });
83
+ toastService.showToast({ type: 'error', text: errorMessage, closeAll: true });
84
84
  }
85
85
  return throwError(() => error);
86
86
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-auth.mjs","sources":["../../../projects/ng-dsv/modules/auth/component/auth.component.ts","../../../projects/ng-dsv/modules/auth/component/auth.component.html","../../../projects/ng-dsv/modules/auth/guard/auth.guard.ts","../../../projects/ng-dsv/modules/auth/interceptor/auth.interceptor.ts","../../../projects/ng-dsv/modules/auth/service/auth.service.ts","../../../projects/ng-dsv/modules/auth/service/auth.google.service.ts","../../../projects/ng-dsv/modules/auth/utils/auth.utils.ts","../../../projects/ng-dsv/modules/auth/ng-vagabond-lab-ng-dsv-modules-auth.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, output } from '@angular/core';\nimport { ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { ModalAlertComponent, ModalButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { AuthGoogleService, AuthService } from '../public-api';\n\n@Component({\n selector: 'dsv-auth',\n imports: [CommonModule, ModalButtonComponent, ModalAlertComponent],\n templateUrl: './auth.component.html',\n styleUrls: ['./auth.component.scss'],\n})\nexport class AuthComponent {\n readonly authService = inject(AuthService);\n readonly authGoogleService = inject(AuthGoogleService);\n\n callbackInitMember = output<ID>();\n callbackLogout = output<void>();\n\n constructor() {\n effect(() => {\n if (this.authService.isRefreshTokenLoaded()) {\n this.authGoogleService.initGoogleAuth('google-signin-button');\n }\n });\n effect(() => {\n if (this.authService.userConnected() === null) {\n this.authGoogleService.loginWithGoogle();\n } else {\n this.callbackInitMember.emit(this.authService.userConnected()?.id);\n }\n });\n }\n\n logout() {\n this.authService.logout();\n this.callbackLogout.emit();\n }\n}\n","<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"profile\" />\n <dsv-modal-button id=\"logout\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"Déconnexion\"\n text=\"Voulez-vous vraiment vous déconnecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n","import { inject } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CanActivateFn } from '@angular/router';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { filter, map, take } from 'rxjs';\nimport { AuthService } from '../public-api';\n\nexport const authGuard = (role: string): CanActivateFn => {\n return () => {\n const authService = inject(AuthService);\n const router = inject(RouterService).router;\n\n if (!authService.isPlatformBrowser()) {\n return true;\n }\n\n const requiredRole = role.toUpperCase();\n\n return toObservable(authService.isRefreshTokenLoaded).pipe(\n filter((loaded) => loaded),\n take(1),\n map(() => {\n if (authService.hasRole(requiredRole)) {\n return true;\n }\n return router.createUrlTree(['/access-denied']);\n }),\n );\n };\n};\n","import { HttpClient, HttpErrorResponse, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { BehaviorSubject, catchError, filter, switchMap, take, throwError } from 'rxjs';\nimport { AuthService } from '../public-api';\n\nlet isRefreshing = false;\nconst refreshSubject$ = new BehaviorSubject<string | null>(null);\n\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n const httpClient = inject(HttpClient);\n const authService = inject(AuthService);\n const toastService = inject(ToastService);\n\n return next(getToken(req, authService)).pipe(\n catchError((error) => {\n if (\n error instanceof HttpErrorResponse &&\n !req.url.includes('auth/') &&\n req.url.includes(authService.apiService.baseUrl()) &&\n error.status === 401\n ) {\n return handle401Error(httpClient, authService, req, next);\n }\n\n let errorMessage = error.error?.debugMessage ?? error.error?.message ?? error.message;\n\n if (errorMessage === 'fetch failed' || errorMessage === 'Failed to fetch') {\n errorMessage = 'Api indisponible';\n }\n if (errorMessage === 'NO_REFRESH_TOKEN') {\n authService.logout(false);\n } else {\n toastService.showToast({ type: 'error', text: errorMessage });\n }\n\n return throwError(() => error);\n }),\n );\n};\n\nconst getToken = <T>(req: HttpRequest<T>, authService: AuthService) => {\n const jwt = authService.userToken();\n if (!req.url.includes('/auth/') && req.url.includes(authService.apiService.baseUrl()) && jwt) {\n return req.clone({ headers: req.headers.set('Authorization', `Bearer ${jwt}`) });\n }\n return req;\n};\n\nconst handle401Error = <T>(\n httpClient: HttpClient,\n authService: AuthService,\n request: HttpRequest<T>,\n next: HttpHandlerFn,\n) => {\n if (isRefreshing) {\n return refreshSubject$.pipe(\n filter((token) => token !== null),\n take(1),\n switchMap(() => next(getToken(request, authService))),\n );\n }\n\n isRefreshing = true;\n refreshSubject$.next(null);\n\n return httpClient.post(authService.apiService.refreshUrl(), {}, { withCredentials: true }).pipe(\n switchMap((response) => {\n authService.initUser(response);\n isRefreshing = false;\n refreshSubject$.next(authService.userToken());\n return next(getToken(request, authService));\n }),\n catchError((error) => {\n isRefreshing = false;\n refreshSubject$.next(null);\n authService.logout(false);\n return throwError(() => error);\n }),\n );\n};\n","import { Injectable, signal } from '@angular/core';\nimport { JSONValue } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseApiService } from '@ng-vagabond-lab/ng-dsv/base/service';\nimport { UserDto, UserSigninDto } from '../dto/user.dto';\nimport { hasRole } from '../public-api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService extends BaseApiService {\n userConnected = signal<UserDto | null>(null);\n userToken = signal<string>('');\n isRefreshTokenLoaded = signal<boolean>(false);\n\n initUser(user: UserSigninDto | null = null) {\n this.userConnected.set(user?.user ?? null);\n this.userToken.set(user?.jwt ?? '');\n this.isRefreshTokenLoaded.set(true);\n }\n\n googleLogin(credential: string) {\n this.apiService.post<JSONValue, UserSigninDto>(\n '/auth/google-identity-connect',\n {\n googleToken: credential,\n },\n (data) => {\n this.initUser(data);\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Connexion réussie',\n });\n },\n true,\n );\n }\n\n refreshToken() {\n this.apiService.post<UserSigninDto>(\n '/auth/refresh-token',\n {},\n (data) => this.initUser(data),\n true,\n () => this.initUser(),\n );\n }\n\n logout(showToast: boolean = true) {\n this.apiService.post<UserSigninDto>(\n '/auth/logout',\n {},\n () => {\n this.initUser();\n if (showToast) {\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Déconnexion réussie',\n });\n }\n },\n true,\n );\n }\n\n hasRole(role: string): boolean {\n const user = this.userConnected() ?? null;\n return !!user && hasRole(role, user.profiles);\n }\n\n canFetch(ssr: boolean = true) {\n return (\n (ssr && !this.isPlatformBrowser()) || (this.isPlatformBrowser() && this.isRefreshTokenLoaded())\n );\n }\n}\n","import { effect, inject, Injectable, signal } from '@angular/core';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { AuthService } from './auth.service';\n\ndeclare const google: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGoogleService {\n readonly authService = inject(AuthService);\n readonly environmentService = inject(EnvironmentService);\n\n readonly googleIds = signal<Map<string, boolean>>(new Map());\n\n readonly init = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n if (!this.init() && this.authService.isPlatformBrowser()) {\n this.init.set(true);\n google.accounts.id.initialize({\n client_id: this.environmentService.env()?.GOOGLE_CLIENT_ID,\n callback: this.handleCredentialResponse.bind(this),\n });\n }\n });\n }\n\n initGoogleAuth(googleButtonid: string = crypto.randomUUID()) {\n if (this.googleIds().get(googleButtonid) || !this.authService.isPlatformBrowser()) {\n return;\n }\n const element = document.getElementById(googleButtonid);\n if (element) {\n this.googleIds.update((ids) => {\n ids.set(googleButtonid, true);\n return ids;\n });\n google.accounts.id.renderButton(document.getElementById(googleButtonid)!, {\n theme: 'outline',\n size: 'medium',\n type: 'icon',\n });\n }\n }\n\n handleCredentialResponse(response: { credential: string }) {\n this.authService.googleLogin(response.credential);\n }\n\n loginWithGoogle() {\n if (this.authService.isRefreshTokenLoaded() && this.authService.userConnected() === null) {\n google.accounts.id.prompt();\n }\n }\n}\n","import { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\n\nexport const hasRole = (roles: string, userRoles?: ApiDto[]) => {\n const roleSplit = roles.split(',');\n let find = false;\n roleSplit.forEach((role) => {\n if (\n userRoles?.find(\n (userRole) =>\n userRole['roles' as keyof ApiDto]?.toString().includes(role) ||\n userRole['name' as keyof ApiDto] === role,\n )\n ) {\n find = true;\n }\n });\n return find;\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-modules-auth.mjs","sources":["../../../projects/ng-dsv/modules/auth/component/auth.component.ts","../../../projects/ng-dsv/modules/auth/component/auth.component.html","../../../projects/ng-dsv/modules/auth/guard/auth.guard.ts","../../../projects/ng-dsv/modules/auth/interceptor/auth.interceptor.ts","../../../projects/ng-dsv/modules/auth/service/auth.service.ts","../../../projects/ng-dsv/modules/auth/service/auth.google.service.ts","../../../projects/ng-dsv/modules/auth/utils/auth.utils.ts","../../../projects/ng-dsv/modules/auth/ng-vagabond-lab-ng-dsv-modules-auth.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, output } from '@angular/core';\nimport { ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { ModalAlertComponent, ModalButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { AuthGoogleService, AuthService } from '../public-api';\n\n@Component({\n selector: 'dsv-auth',\n imports: [CommonModule, ModalButtonComponent, ModalAlertComponent],\n templateUrl: './auth.component.html',\n styleUrls: ['./auth.component.scss'],\n})\nexport class AuthComponent {\n readonly authService = inject(AuthService);\n readonly authGoogleService = inject(AuthGoogleService);\n\n callbackInitMember = output<ID>();\n callbackLogout = output<void>();\n\n constructor() {\n effect(() => {\n if (this.authService.isRefreshTokenLoaded()) {\n this.authGoogleService.initGoogleAuth('google-signin-button');\n }\n });\n effect(() => {\n if (this.authService.userConnected() === null) {\n this.authGoogleService.loginWithGoogle();\n } else {\n this.callbackInitMember.emit(this.authService.userConnected()?.id);\n }\n });\n }\n\n logout() {\n this.authService.logout();\n this.callbackLogout.emit();\n }\n}\n","<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"profile\" />\n <dsv-modal-button modalName=\"logout\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"Déconnexion\"\n text=\"Voulez-vous vraiment vous déconnecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n","import { inject } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CanActivateFn } from '@angular/router';\nimport { RouterService } from '@ng-vagabond-lab/ng-dsv/router';\nimport { filter, map, take } from 'rxjs';\nimport { AuthService } from '../public-api';\n\nexport const authGuard = (role: string): CanActivateFn => {\n return () => {\n const authService = inject(AuthService);\n const router = inject(RouterService).router;\n\n if (!authService.isPlatformBrowser()) {\n return true;\n }\n\n const requiredRole = role.toUpperCase();\n\n return toObservable(authService.isRefreshTokenLoaded).pipe(\n filter((loaded) => loaded),\n take(1),\n map(() => {\n if (authService.hasRole(requiredRole)) {\n return true;\n }\n return router.createUrlTree(['/access-denied']);\n }),\n );\n };\n};\n","import { HttpClient, HttpErrorResponse, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { BehaviorSubject, catchError, filter, switchMap, take, throwError } from 'rxjs';\nimport { AuthService } from '../public-api';\n\nlet isRefreshing = false;\nconst refreshSubject$ = new BehaviorSubject<string | null>(null);\n\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n const httpClient = inject(HttpClient);\n const authService = inject(AuthService);\n const toastService = inject(ToastService);\n\n return next(getToken(req, authService)).pipe(\n catchError((error) => {\n if (\n error instanceof HttpErrorResponse &&\n !req.url.includes('auth/') &&\n req.url.includes(authService.apiService.baseUrl()) &&\n error.status === 401\n ) {\n return handle401Error(httpClient, authService, req, next);\n }\n\n let errorMessage = error.error?.debugMessage ?? error.error?.message ?? error.message;\n\n if (errorMessage === 'fetch failed' || errorMessage === 'Failed to fetch') {\n errorMessage = 'Api indisponible';\n }\n if (errorMessage === 'NO_REFRESH_TOKEN') {\n authService.logout(false);\n } else {\n toastService.showToast({ type: 'error', text: errorMessage, closeAll: true });\n }\n\n return throwError(() => error);\n }),\n );\n};\n\nconst getToken = <T>(req: HttpRequest<T>, authService: AuthService) => {\n const jwt = authService.userToken();\n if (!req.url.includes('/auth/') && req.url.includes(authService.apiService.baseUrl()) && jwt) {\n return req.clone({ headers: req.headers.set('Authorization', `Bearer ${jwt}`) });\n }\n return req;\n};\n\nconst handle401Error = <T>(\n httpClient: HttpClient,\n authService: AuthService,\n request: HttpRequest<T>,\n next: HttpHandlerFn,\n) => {\n if (isRefreshing) {\n return refreshSubject$.pipe(\n filter((token) => token !== null),\n take(1),\n switchMap(() => next(getToken(request, authService))),\n );\n }\n\n isRefreshing = true;\n refreshSubject$.next(null);\n\n return httpClient.post(authService.apiService.refreshUrl(), {}, { withCredentials: true }).pipe(\n switchMap((response) => {\n authService.initUser(response);\n isRefreshing = false;\n refreshSubject$.next(authService.userToken());\n return next(getToken(request, authService));\n }),\n catchError((error) => {\n isRefreshing = false;\n refreshSubject$.next(null);\n authService.logout(false);\n return throwError(() => error);\n }),\n );\n};\n","import { Injectable, signal } from '@angular/core';\nimport { JSONValue } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseApiService } from '@ng-vagabond-lab/ng-dsv/base/service';\nimport { UserDto, UserSigninDto } from '../dto/user.dto';\nimport { hasRole } from '../public-api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService extends BaseApiService {\n userConnected = signal<UserDto | null>(null);\n userToken = signal<string>('');\n isRefreshTokenLoaded = signal<boolean>(false);\n\n initUser(user: UserSigninDto | null = null) {\n this.userConnected.set(user?.user ?? null);\n this.userToken.set(user?.jwt ?? '');\n this.isRefreshTokenLoaded.set(true);\n }\n\n googleLogin(credential: string) {\n this.apiService.post<JSONValue, UserSigninDto>(\n '/auth/google-identity-connect',\n {\n googleToken: credential,\n },\n (data) => {\n this.initUser(data);\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Connexion réussie',\n });\n },\n true,\n );\n }\n\n refreshToken() {\n this.apiService.post<UserSigninDto>(\n '/auth/refresh-token',\n {},\n (data) => this.initUser(data),\n true,\n () => this.initUser(),\n );\n }\n\n logout(showToast: boolean = true) {\n this.apiService.post<UserSigninDto>(\n '/auth/logout',\n {},\n () => {\n this.initUser();\n if (showToast) {\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Déconnexion réussie',\n });\n }\n },\n true,\n );\n }\n\n hasRole(role: string): boolean {\n const user = this.userConnected() ?? null;\n return !!user && hasRole(role, user.profiles);\n }\n\n canFetch(ssr: boolean = true) {\n return (\n (ssr && !this.isPlatformBrowser()) || (this.isPlatformBrowser() && this.isRefreshTokenLoaded())\n );\n }\n}\n","import { effect, inject, Injectable, signal } from '@angular/core';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { AuthService } from './auth.service';\n\ndeclare const google: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGoogleService {\n readonly authService = inject(AuthService);\n readonly environmentService = inject(EnvironmentService);\n\n readonly googleIds = signal<Map<string, boolean>>(new Map());\n\n readonly init = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n if (!this.init() && this.authService.isPlatformBrowser()) {\n this.init.set(true);\n google.accounts.id.initialize({\n client_id: this.environmentService.env()?.GOOGLE_CLIENT_ID,\n callback: this.handleCredentialResponse.bind(this),\n });\n }\n });\n }\n\n initGoogleAuth(googleButtonid: string = crypto.randomUUID()) {\n if (this.googleIds().get(googleButtonid) || !this.authService.isPlatformBrowser()) {\n return;\n }\n const element = document.getElementById(googleButtonid);\n if (element) {\n this.googleIds.update((ids) => {\n ids.set(googleButtonid, true);\n return ids;\n });\n google.accounts.id.renderButton(document.getElementById(googleButtonid)!, {\n theme: 'outline',\n size: 'medium',\n type: 'icon',\n });\n }\n }\n\n handleCredentialResponse(response: { credential: string }) {\n this.authService.googleLogin(response.credential);\n }\n\n loginWithGoogle() {\n if (this.authService.isRefreshTokenLoaded() && this.authService.userConnected() === null) {\n google.accounts.id.prompt();\n }\n }\n}\n","import { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\n\nexport const hasRole = (roles: string, userRoles?: ApiDto[]) => {\n const roleSplit = roles.split(',');\n let find = false;\n roleSplit.forEach((role) => {\n if (\n userRoles?.find(\n (userRole) =>\n userRole['roles' as keyof ApiDto]?.toString().includes(role) ||\n userRole['name' as keyof ApiDto] === role,\n )\n ) {\n find = true;\n }\n });\n return find;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -36,10 +36,7 @@ class RouterInternalPipe {
36
36
  event.preventDefault();
37
37
  const url = this.element.nativeElement.getAttribute('href');
38
38
  if (url && url !== '#') {
39
- const scrolls = document.getElementsByClassName('scroll');
40
- Array.from(scrolls).forEach((scroll) => {
41
- scroll?.scrollTo(0, 0);
42
- });
39
+ this.element.nativeElement.closest('.scroll')?.scrollTo(0, 0);
43
40
  this.router.navigate([url]);
44
41
  }
45
42
  else {
@@ -83,6 +80,15 @@ class RouterService {
83
80
  this.modalService.closeAll();
84
81
  });
85
82
  }
83
+ initAnalytics(key) {
84
+ this.router.events
85
+ .pipe(filter((event) => event instanceof NavigationEnd))
86
+ .subscribe((event) => {
87
+ gtag('config', key, {
88
+ page_path: event.urlAfterRedirects,
89
+ });
90
+ });
91
+ }
86
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: RouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
87
93
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: RouterService, providedIn: 'root' });
88
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-router.mjs","sources":["../../../projects/ng-dsv/router/pipe/router.external.pipe.ts","../../../projects/ng-dsv/router/pipe/router.internal.pipe.ts","../../../projects/ng-dsv/router/service/router.service.ts","../../../projects/ng-dsv/router/ng-vagabond-lab-ng-dsv-router.ts"],"sourcesContent":["import { Directive, output } from '@angular/core';\n\n@Directive({\n selector: 'a[dsvLinkExternal]',\n host: {\n class: 'primary text bold',\n target: '_blank',\n rel: 'noopener noreferrer',\n '(click)': 'onClick($event)',\n },\n})\nexport class RouterExternalPipe {\n readonly dsvLinkExternal = output<void>();\n\n onClick(event: Event) {\n event.stopPropagation();\n this.dsvLinkExternal.emit();\n }\n}\n","import { Directive, ElementRef, inject, output } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Directive({\n selector: 'a[dsvLink]',\n host: {\n class: 'text',\n '(click)': 'onClick($event)',\n },\n})\nexport class RouterInternalPipe {\n readonly router = inject(Router);\n readonly element = inject(ElementRef);\n\n readonly dsvLink = output<void>();\n\n onClick(event: Event) {\n event.stopPropagation();\n event.preventDefault();\n const url = this.element.nativeElement.getAttribute('href');\n if (url && url !== '#') {\n const scrolls = document.getElementsByClassName('scroll');\n Array.from(scrolls).forEach((scroll) => {\n scroll?.scrollTo(0, 0);\n });\n this.router.navigate([url]);\n } else {\n this.dsvLink.emit();\n }\n }\n}\n","import { effect, inject, Injectable, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\nimport { ModalService } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { filter, map } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterService {\n readonly router = inject(Router);\n readonly modalService = inject(ModalService);\n\n readonly isLoading = signal<boolean>(true);\n\n interval: ReturnType<typeof setTimeout> | undefined = undefined;\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\n constructor() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.isLoading.set(true);\n } else if (\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel ||\n event instanceof NavigationError\n ) {\n this.isLoading.set(false);\n clearInterval(this.interval);\n }\n });\n\n effect(() => {\n this.currentUrl();\n this.modalService.closeAll();\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-router.mjs","sources":["../../../projects/ng-dsv/router/pipe/router.external.pipe.ts","../../../projects/ng-dsv/router/pipe/router.internal.pipe.ts","../../../projects/ng-dsv/router/service/router.service.ts","../../../projects/ng-dsv/router/ng-vagabond-lab-ng-dsv-router.ts"],"sourcesContent":["import { Directive, output } from '@angular/core';\n\n@Directive({\n selector: 'a[dsvLinkExternal]',\n host: {\n class: 'primary text bold',\n target: '_blank',\n rel: 'noopener noreferrer',\n '(click)': 'onClick($event)',\n },\n})\nexport class RouterExternalPipe {\n readonly dsvLinkExternal = output<void>();\n\n onClick(event: Event) {\n event.stopPropagation();\n this.dsvLinkExternal.emit();\n }\n}\n","import { Directive, ElementRef, inject, output } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Directive({\n selector: 'a[dsvLink]',\n host: {\n class: 'text',\n '(click)': 'onClick($event)',\n },\n})\nexport class RouterInternalPipe {\n readonly router = inject(Router);\n readonly element = inject(ElementRef);\n\n readonly dsvLink = output<void>();\n\n onClick(event: Event) {\n event.stopPropagation();\n event.preventDefault();\n const url = this.element.nativeElement.getAttribute('href');\n if (url && url !== '#') {\n this.element.nativeElement.closest('.scroll')?.scrollTo(0, 0);\n this.router.navigate([url]);\n } else {\n this.dsvLink.emit();\n }\n }\n}\n","import { effect, inject, Injectable, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\nimport { ModalService } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { filter, map } from 'rxjs';\n\ndeclare const gtag: Function;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterService {\n readonly router = inject(Router);\n readonly modalService = inject(ModalService);\n\n readonly isLoading = signal<boolean>(true);\n\n interval: ReturnType<typeof setTimeout> | undefined = undefined;\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\n constructor() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart) {\n this.isLoading.set(true);\n } else if (\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel ||\n event instanceof NavigationError\n ) {\n this.isLoading.set(false);\n clearInterval(this.interval);\n }\n });\n\n effect(() => {\n this.currentUrl();\n this.modalService.closeAll();\n });\n }\n\n initAnalytics(key: string): void {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n gtag('config', key, {\n page_path: event.urlAfterRedirects,\n });\n });\n }\n}\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.1.121",
3
+ "version": "0.1.124",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0"
@@ -85,10 +85,13 @@ declare abstract class BaseSearchService<T extends ApiDto> extends BaseFetchServ
85
85
  }
86
86
 
87
87
  declare abstract class BaseSearchContainer<T extends BaseSearchService<U>, U extends ApiDto> extends BaseContainer {
88
+ private element;
88
89
  readonly service: T | undefined;
89
90
  constructor(searchService: T);
90
91
  doFetch(search?: string | undefined): void;
91
92
  doSearch(search: string): void;
93
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseSearchContainer<any, any>, never>;
94
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseSearchContainer<any, any>, never, never, {}, {}, never, never, true, never>;
92
95
  }
93
96
 
94
97
  declare const isCallback: <T>(callback: OutputEmitterRef<T>) => boolean;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-date.d.ts","sources":["../../../projects/ng-dsv/date/pipe/date.format.pipe.ts","../../../projects/ng-dsv/date/utils/date.utils.ts"],"mappings":";;;AAGA,cAIa,cAAe,YAAW,aAAa;AAChD;yCADS,cAAc;uCAAd,cAAc;AAI1B;;ACCD,cAAa,UAAU;AAQvB,iBAAgB,gBAAgB;AAKhC,iBAAgB,aAAa;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-chip.d.ts","sources":["../../../projects/ng-dsv/ds/chip/component/chip.component.ts"],"mappings":";;;AAMA,cAMa,gBAAiB,SAAQ,kBAAkB;AACpD,UAAI,aAAA,CAAA,WAAA;AAEJ,YAAM,aAAA,CAAA,gBAAA;AAEN,cAAQ,aAAA,CAAA,cAAA;;;oDALC,gBAAgB;sDAAhB,gBAAgB;AAqB5B;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-reactive.d.ts","sources":["../../../projects/ng-dsv/ds/form/reactive/checkbox/component/form.reactive.checkbox.component.ts","../../../projects/ng-dsv/ds/form/reactive/form/base/base.form.component.ts","../../../projects/ng-dsv/ds/form/reactive/form/component/form.reactive.component.ts","../../../projects/ng-dsv/ds/form/reactive/input/component/form.reactive.input.component.ts","../../../projects/ng-dsv/ds/form/reactive/searchbar/component/reactive.searchbar.component.ts","../../../projects/ng-dsv/ds/form/reactive/select/component/form.reactive.select.component.ts"],"mappings":";;;;;;AAIA,cASa,6BAA6B;AACtC,UAAI,aAAA,CAAA,WAAA,CAAA,SAAA;AACJ,WAAK,aAAA,CAAA,WAAA;AACL,eAAS,aAAA,CAAA,WAAA;AAET,oBAAc,aAAA,CAAA,gBAAA;;oDALL,6BAA6B;sDAA7B,6BAA6B;AAUzC;;ACpBD,uBACsB,yBAAyB;AAC3C,oCAA8B,WAAA;AAC9B,oBAAiB,SAAS;oDAFR,yBAAyB;sDAAzB,yBAAyB;AAG9C;;ACCD,cAMa,qBAAqB;AAC9B,kBAAY,YAAA;AAEZ,UAAI,aAAA,CAAA,WAAA,CAAA,SAAA;AAEJ,aAAO,aAAA,CAAA,WAAA;AACP,eAAS,aAAA,CAAA,WAAA;AACT,eAAS,aAAA,CAAA,WAAA;AAET,cAAQ,aAAA,CAAA,gBAAA,CAAA,MAAA;;oDATC,qBAAqB;sDAArB,qBAAqB;AA2BjC;;ACnCD,cAMa,0BAA0B;AACnC,UAAI,aAAA,CAAA,WAAA,CAAA,SAAA;AACJ,WAAK,aAAA,CAAA,WAAA;AACL,UAAI,aAAA,CAAA,WAAA,CAAA,UAAA;AACJ,eAAS,aAAA,CAAA,WAAA;AACT,cAAQ,aAAA,CAAA,WAAA;AACR,UAAI,aAAA,CAAA,WAAA;AAEJ,kBAAY,aAAA,CAAA,gBAAA;;oDARH,0BAA0B;sDAA1B,0BAA0B;AAatC;;AClBD,cAMa,0BAA2B,SAAQ,yBAAyB;AACrE,YAAM,aAAA,CAAA,WAAA;AACN,oBAAc,aAAA,CAAA,gBAAA;;;oDAFL,0BAA0B;sDAA1B,0BAA0B;AAgBtC;;ACvBD,cASa,2BAA2B;AACpC,UAAI,aAAA,CAAA,WAAA,CAAA,SAAA;AACJ,WAAK,aAAA,CAAA,WAAA;AACL,eAAS,aAAA,CAAA,WAAA;UAEL,aAAA,CAAA,WAAA,EAAA,MAAA;;AAA4C;AAEhD,oBAAc,aAAA,CAAA,gBAAA;;oDAPL,2BAA2B;sDAA3B,2BAA2B;AAYvC;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-signal.d.ts","sources":["../../../projects/ng-dsv/ds/form/signal/base/form.signal.input.base.ts","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form.signal.checkbox.component.ts","../../../projects/ng-dsv/ds/form/signal/error/component/form.signal.error.component.ts","../../../projects/ng-dsv/ds/form/signal/form/component/form.signal.component.ts","../../../projects/ng-dsv/ds/form/signal/input/component/form.signal.input.component.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form.signal.label.component.ts","../../../projects/ng-dsv/ds/form/signal/form/base/base.form.signal.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form.signal.searchbar.component.ts","../../../projects/ng-dsv/ds/form/signal/select/component/form.signal.select.component.ts","../../../projects/ng-dsv/ds/form/signal/utils/form.signal.utils.ts"],"mappings":";;;;;;;AAGA,uBACsB,mBAAmB;AACrC,UAAI,aAAA,CAAA,WAAA,CAAA,SAAA;AACJ,eAAS,aAAA,CAAA,WAAA;AACT,WAAK,aAAA,CAAA,WAAA;AACL,eAAS,aAAA,CAAA,WAAA;AACT,iBAAW,aAAA,CAAA,WAAA;AACX,cAAQ,aAAA,CAAA,WAAA;AACR,WAAK,aAAA,CAAA,WAAA;AAEL,aAAO,aAAA,CAAA,cAAA;AAEP,kBAAY,aAAA,CAAA,gBAAA;AACZ,oBAAc,aAAA,CAAA,gBAAA;;;iBAauE,SAAS;;;AAc9F;oDAvCkB,mBAAmB;sDAAnB,mBAAmB;AAgDxC;;AC/CD,cASa,2BAA2B,YAAY,mBAAmB;wBAEkB,SAAS;oDAFrF,2BAA2B;sDAA3B,2BAA2B;AAOvC;;ACjBD,cAMa,wBAAwB;AACjC,YAAM,aAAA,CAAA,WAAA,CAAA,eAAA;AACN,eAAS,aAAA,CAAA,WAAA;AAET,WAAK,aAAA,CAAA,cAAA;;;oDAJI,wBAAwB;sDAAxB,wBAAwB;AA+CpC;;AChDD,cAMa,mBAAmB;AAC5B,kBAAY,YAAA;AAEZ,UAAI,aAAA,CAAA,WAAA,CAAA,SAAA;AAEJ,aAAO,aAAA,CAAA,WAAA;AACP,eAAS,aAAA,CAAA,WAAA;AACT,eAAS,aAAA,CAAA,WAAA;AAET,kBAAY,aAAA,CAAA,gBAAA;AACZ,cAAQ,aAAA,CAAA,gBAAA,CAAA,MAAA;AAER,oBAAc,aAAA,CAAA,MAAA;;oBAME,KAAK;oDAlBZ,mBAAmB;sDAAnB,mBAAmB;AAoC/B;;AC5CD,cAMa,wBAAwB,YAAY,mBAAmB;AAChE,UAAI,aAAA,CAAA,WAAA,CAAA,UAAA;AACJ,UAAI,aAAA,CAAA,WAAA;oDAFK,wBAAwB;sDAAxB,wBAAwB;AAGpC;;ACbD,cAKa,wBAAwB;AACjC,WAAK,aAAA,CAAA,WAAA;AACL,UAAI,aAAA,CAAA,WAAA;AACJ,YAAM,aAAA,CAAA,WAAA,CAAA,UAAA;AACN,UAAI,aAAA,CAAA,WAAA;AAEJ,gBAAU,aAAA,CAAA,cAAA;;oDAND,wBAAwB;sDAAxB,wBAAwB;AAapC;;ACnBD,uBACsB,uBAAuB;oDAAvB,uBAAuB;sDAAvB,uBAAuB;AAAG;;ACEhD,cAMa,4BAA6B,SAAQ,uBAAuB;AACrE,YAAM,aAAA,CAAA,WAAA;AACN,oBAAc,aAAA,CAAA,gBAAA;UAEV,sBAAA,CAAA,SAAA;;AAA2C;;;oDAJtC,4BAA4B;sDAA5B,4BAA4B;AAgBxC;;ACpBD,cASa,yBAAyB,YAAY,mBAAmB;AACjE,cAAQ,aAAA,CAAA,WAAA;UAEJ,aAAA,CAAA,WAAA,EAAA,MAAA;;AAA4C;oDAHvC,yBAAyB;sDAAzB,yBAAyB;AAIrC;;AClBD,cAAa,YAAY,UAAW,iBAAiB;;;;;;","names":[]}
@@ -31,7 +31,7 @@ declare class ModalAlertComponent {
31
31
 
32
32
  declare class ModalButtonComponent {
33
33
  modalService: ModalService;
34
- id: _angular_core.InputSignal<string>;
34
+ modalName: _angular_core.InputSignal<string>;
35
35
  icon: _angular_core.InputSignal<string>;
36
36
  variant: _angular_core.InputSignal<ButtonVariantType>;
37
37
  text: _angular_core.InputSignal<string>;
@@ -39,22 +39,22 @@ declare class ModalButtonComponent {
39
39
  callback: _angular_core.OutputEmitterRef<void>;
40
40
  doToogle: () => void;
41
41
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalButtonComponent, never>;
42
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalButtonComponent, "dsv-modal-button", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, { "callback": "callback"; }, never, ["*"], true, never>;
42
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalButtonComponent, "dsv-modal-button", never, { "modalName": { "alias": "modalName"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, { "callback": "callback"; }, never, ["*"], true, never>;
43
43
  }
44
44
 
45
45
  declare class ModalComponent {
46
+ modalService: ModalService;
47
+ menuService: MenuService;
46
48
  id: _angular_core.InputSignal<string>;
47
- titleText: _angular_core.InputSignal<string>;
48
49
  class: _angular_core.InputSignal<string>;
50
+ titleText: _angular_core.InputSignal<string>;
49
51
  canEchap: _angular_core.InputSignal<boolean>;
50
52
  isOpen: _angular_core.WritableSignal<boolean>;
51
- modalService: ModalService;
52
- menuService: MenuService;
53
53
  constructor();
54
54
  onEscapeKey(): void;
55
55
  close: () => void;
56
56
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
57
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "dsv-modal", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "titleText": { "alias": "titleText"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "canEchap": { "alias": "canEchap"; "required": false; "isSignal": true; }; }, {}, never, ["*", ".modal-footer"], true, never>;
57
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "dsv-modal", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "titleText": { "alias": "titleText"; "required": true; "isSignal": true; }; "canEchap": { "alias": "canEchap"; "required": false; "isSignal": true; }; }, {}, never, ["*", ".modal-footer"], true, never>;
58
58
  }
59
59
 
60
60
  export { ModalAlertComponent, ModalButtonComponent, ModalComponent, ModalService };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-paginate.d.ts","sources":["../../../projects/ng-dsv/ds/paginate/component/paginate.component.ts"],"mappings":";;AAGA,cAMa,iBAAiB;AAC1B,UAAI,aAAA,CAAA,WAAA;AACJ,SAAG,aAAA,CAAA,WAAA;AAEH,cAAQ,aAAA,CAAA,gBAAA;;oDAJC,iBAAiB;sDAAjB,iBAAiB;AAS7B;;;;","names":[]}
@@ -52,6 +52,9 @@ declare class ScrollService extends BaseApiService {
52
52
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ScrollService>;
53
53
  }
54
54
 
55
- declare const scrollOnClassTo: (scrollClass: string, x?: number, y?: number, index?: number) => void;
55
+ declare const SCROLL_ID = "#main-scroll";
56
+ declare const SCROLL_CLASS = ".scroll";
57
+ declare const scrollToTop: (element: ElementRef, name?: string) => void;
58
+ declare const scrollToClosestTop: (element: ElementRef, name?: string) => void;
56
59
 
57
- export { ButtonScrollTopComponent, ScrollInfiniteContainer, ScrollService, scrollOnClassTo };
60
+ export { ButtonScrollTopComponent, SCROLL_CLASS, SCROLL_ID, ScrollInfiniteContainer, ScrollService, scrollToClosestTop, scrollToTop };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-tab.d.ts","sources":["../../../projects/ng-dsv/ds/tab/tab/dto/tab.dto.ts","../../../projects/ng-dsv/ds/tab/tab/component/tab.component.ts","../../../projects/ng-dsv/ds/tab/tabs/component/tabs.component.ts"],"mappings":";;UAAiB,MAAM;;;;AAItB;;ACCD,cAMa,YAAY;AACrB,SAAG,aAAA,CAAA,WAAA,CAAA,MAAA;AACH,gBAAU,aAAA,CAAA,WAAA;AAEV,cAAQ,aAAA,CAAA,gBAAA,CAAA,MAAA;AAER,mBAAe,KAAK,OAAO,MAAM;oDANxB,YAAY;sDAAZ,YAAY;AAYxB;;ACnBD,cAMa,aAAa;AACtB,UAAI,aAAA,CAAA,WAAA,CAAA,MAAA;AACJ,YAAM,aAAA,CAAA,WAAA;AAEN,cAAQ,aAAA,CAAA,gBAAA,CAAA,MAAA;iBAEK,MAAM;oDANV,aAAa;sDAAb,aAAa;AASzB;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-table.d.ts","sources":["../../../projects/ng-dsv/ds/table/dto/table.dto.ts","../../../projects/ng-dsv/ds/table/component/table.component.ts","../../../projects/ng-dsv/ds/table/utils/table.utils.ts"],"mappings":";;;;UAAiB,QAAQ;;;;;;AAMxB;;ACED,cAMa,cAAc;AACvB,SAAG,aAAA,CAAA,WAAA;AAEH,WAAK,aAAA,CAAA,WAAA,CAAA,QAAA;AACL,WAAK,aAAA,CAAA,WAAA,CAAA,UAAA;AAEL,SAAG,aAAA,CAAA,WAAA;AAEH,eAAS,aAAA,CAAA,cAAA;AACT,WAAK,aAAA,CAAA,cAAA;;oDATI,cAAc;sDAAd,cAAc;AA6B1B;;ACxCD,cAAa,SAAS,UAAW,UAAU;;;;;;AAoB3C,cAAa,QAAQ,QAAS,UAAU;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-tooltip.d.ts","sources":["../../../projects/ng-dsv/ds/tooltip/dto/tooltip.dto.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.ts","../../../projects/ng-dsv/ds/tooltip/utils/tooltip.utils.ts"],"mappings":";;;AAAM,KAAM,eAAe;AAE3B,aAAY,mBAAmB;AAC3B;AACA;AACA;AACA;AACH;;ACHD,cAMa,mBAAmB;AAC5B,UAAI,aAAA,CAAA,WAAA;AACJ,cAAQ,aAAA,CAAA,WAAA,CAAA,eAAA;AAER,aAAO,aAAA,CAAA,cAAA;AACP,aAAO,aAAA,CAAA,cAAA;AAEP,mBAAa,aAAA,CAAA,cAAA,CAAA,eAAA;AAGb,gBAAa,UAAU,CAAC,WAAW;;;;;oDAV1B,mBAAmB;sDAAnB,mBAAmB;AAuC/B;;AC/CD,cAAa,gBAAgB;AAC7B,cAAa,mBAAmB;AAChC,cAAa,iBAAiB;AAC9B,cAAa,kBAAkB;AAE/B,cAAa,kBAAkB,aAAc,eAAe,QAAQ,OAAO,KAAA,eAAA,GAAA,mBAiB1E;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-admin.d.ts","sources":["../../../projects/ng-dsv/modules/admin/dto/admin.dto.ts","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.ts","../../../projects/ng-dsv/modules/admin/service/admin.service.ts","../../../projects/ng-dsv/modules/admin/component/modal/admin.search.modal.component.ts","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.ts","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.ts","../../../projects/ng-dsv/modules/admin/dto/admin.default.dto.ts"],"mappings":";;;;;;;;;UAEiB,aAAa;;;;;;AAM7B;UAEgB,YAAY;;;;;;;;;;;;;;AAc5B;AAEK,UAAW,OAAQ,SAAQ,YAAY;;;;;;UAMnC,aAAa;;AAEtB;UAEgB,WAAW;;;;;AAKxB;WACO,QAAQ;UACT,OAAO;AAChB;UACgB,eAAe;;UAEtB,WAAW;AACpB;;ACnCD,cAaa,kBAAmB,SAAQ,yBAAyB;AAC7D,aAAO,aAAA,CAAA,WAAA;AACP,UAAI,aAAA,CAAA,WAAA,CAAA,MAAA;AACJ,cAAQ,aAAA,CAAA,WAAA,CAAA,OAAA;AAER,cAAQ,aAAA,CAAA,gBAAA,CAAA,MAAA;;mBAuBO,MAAM;AAIrB,oCAAiC,EAAE;AAInC,uCAAoC,MAAM;oDApCjC,kBAAkB;sDAAlB,kBAAkB;AA0C9B;;AChED,cAGa,YAAY;AACrB,gBAAU,UAAA;AAEV,UAAI,aAAA,CAAA,cAAA,CAAA,eAAA;AAEJ,WAAK,aAAA,CAAA,cAAA,CAAA,MAAA,SAAA,WAAA,CAAA,MAAA;AACL,UAAI,aAAA,CAAA,cAAA,CAAA,MAAA;AAEJ,UAAI,aAAA,CAAA,cAAA,CAAA,MAAA;AACJ,YAAM,aAAA,CAAA,cAAA,CAAA,MAAA;AAEN,yGAMsB,WAAW,CAAC,MAAM;AAsBxC,iCAA6B,MAAM;AAOnC,gCAA4B,MAAM;AAOlC;oDArDS,YAAY;wDAAZ,YAAY;AA2DxB;;ACzDD,cAMa,yBAA0B,SAAQ,aAAa;AACxD,kBAAY,YAAA;AACZ,kBAAY,YAAA;AAEZ,UAAI,aAAA,CAAA,WAAA,CAAA,aAAA;AAEJ,YAAM,aAAA,CAAA,cAAA;AACN,WAAK,aAAA,CAAA,cAAA,CAAA,MAAA;AAEL,cAAQ,aAAA,CAAA,gBAAA,CAAA,MAAA;;mBAYO,MAAM;;sBAQF,MAAM;oDA7BhB,yBAAyB;sDAAzB,yBAAyB;AAiCrC;;ACtCD,cAMa,kBAAmB,SAAQ,kBAAkB;AACtD,kBAAY,YAAA;AACZ,qBAAe,eAAA;AAEf,UAAI,aAAA,CAAA,cAAA,CAAA,MAAA;AACJ,SAAG,aAAA,CAAA,cAAA;AACH,eAAS,aAAA,CAAA,cAAA,CAAA,WAAA;;;mBAuBM,MAAM;oDA7BZ,kBAAkB;sDAAlB,kBAAkB;AAwC9B;;AC3CD,cAca,oBAAqB,SAAQ,kBAAkB;AACxD,kBAAY,YAAA;AACZ,qBAAe,eAAA;AAEf,UAAI,aAAA,CAAA,cAAA,CAAA,MAAA;AACJ,SAAG,aAAA,CAAA,cAAA;AACH,eAAS,aAAA,CAAA,cAAA,CAAA,WAAA;AAET,UAAI,aAAA,CAAA,cAAA,CAAA,MAAA;;AAiCJ;oDAzCS,oBAAoB;sDAApB,oBAAoB;AAoDhC;;AC7ED,cAAa,SAAS;;;;;;;;;;;;;AAKtB,cAAa,iBAAiB;;;;;;;AAQ9B,cAAa,WAAW;;;;;;;;;;;;;;;AAyBxB,cAAa,UAAU,EAAE,WAAW;AAqEpC,cAAa,aAAa,EAAE,WAAW;;;;","names":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-contact.d.ts","sources":["../../../projects/ng-dsv/modules/contact/component/contact.component.ts"],"mappings":";;AAMA,cAMa,gBAAgB;yCAAhB,gBAAgB;2CAAhB,gBAAgB;AAAG;;;;","names":[]}
@@ -26,6 +26,7 @@ declare class RouterService {
26
26
  interval: ReturnType<typeof setTimeout> | undefined;
27
27
  currentUrl: i0.Signal<string>;
28
28
  constructor();
29
+ initAnalytics(key: string): void;
29
30
  static ɵfac: i0.ɵɵFactoryDeclaration<RouterService, never>;
30
31
  static ɵprov: i0.ɵɵInjectableDeclaration<RouterService>;
31
32
  }