@ng-vagabond-lab/ng-dsv 0.2.21 → 0.2.26

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 (47) hide show
  1. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +6 -6
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +12 -12
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +24 -24
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +11 -9
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +3 -3
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +6 -6
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +12 -12
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +3 -3
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +6 -6
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +3 -3
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +9 -9
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +24 -24
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +27 -27
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +4 -4
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +3 -3
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +3 -3
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +4 -4
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +12 -12
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +12 -12
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +12 -12
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +3 -3
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +9 -9
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +6 -6
  30. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +3 -3
  31. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +10 -10
  32. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
  33. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +6 -6
  34. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +3 -3
  35. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +3 -3
  36. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +3 -3
  37. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +15 -15
  38. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +9 -9
  39. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +4 -4
  40. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
  41. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +3 -3
  42. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +9 -9
  43. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +3 -3
  44. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +19 -19
  45. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
  46. package/package.json +1 -1
  47. package/types/ng-vagabond-lab-ng-dsv-ds-accordion.d.ts +1 -2
@@ -13,21 +13,21 @@ class DsvThemeSwitchComponent {
13
13
  isLightMode() {
14
14
  return this.themeService.themeMode() === 'light';
15
15
  }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvThemeSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: DsvThemeSwitchComponent, isStandalone: true, selector: "dsv-theme-switch", ngImport: i0, template: "<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvThemeSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: DsvThemeSwitchComponent, isStandalone: true, selector: "dsv-theme-switch", ngImport: i0, template: "<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvThemeSwitchComponent, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvThemeSwitchComponent, decorators: [{
20
20
  type: Component,
21
21
  args: [{ selector: 'dsv-theme-switch', imports: [CommonModule, DsvButtonComponent], template: "<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n" }]
22
22
  }] });
23
23
 
24
24
  class DsvThemeComponent {
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvThemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: DsvThemeComponent, isStandalone: true, selector: "dsv-theme", ngImport: i0, template: "<ng-content></ng-content>\n<div id=\"collapse\"></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;background-color:var(--background);color:var(--text)}:host #collapse{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:#0009}:host #collapse.show{display:inline}:host-context(body.light){--button-text: #ffffff;--background: #dcdcdc;--background-card: #ffffff;--background-header: #dcdcdc;--background-table-tr: #000000;--background-table-tr-text: var(--background-card);--scrollbar: #757575 #f5f5f5;--subtitle: #5a5959;--border: #cbcbcb;--text: #000000;--primary: #007bff;--secondary: #6c757d;--success: #189f37;--info: #1c7fc1;--warning: #a2821f;--error: #ca2535}:host-context(body.dark){--background: #000000;--background-card: #1f1f1f;--background-header: #1f1f1f;--background-table-tr: #DCDCDC;--background-table-tr-text: var(--background-card);--scrollbar: #a9a9a9 #383838;--subtitle: #ffffffb3;--border: #606060;--text: #ffffff;--primary: #007bff;--secondary: #6c757d;--success: #128c2e;--info: #106694;--warning: #ac8a24;--error: #df1126}\n"] });
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvThemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: DsvThemeComponent, isStandalone: true, selector: "dsv-theme", ngImport: i0, template: "<ng-content></ng-content>\n<div id=\"collapse\"></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;background-color:var(--background);color:var(--text)}:host #collapse{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:#0009}:host #collapse.show{display:inline}:host-context(body.light){--button-text: #ffffff;--background: #ffffff;--background-card: #ffffff;--background-card-light: #e9e9e9;--background-header: #dcdcdc;--background-table-tr: #000000;--background-table-tr-text: var(--background-card);--scrollbar: #757575 #f5f5f5;--subtitle: #5a5959;--border: #cbcbcb;--text: #000000;--primary: #007bff;--secondary: #6c757d;--success: #189f37;--info: #1c7fc1;--warning: #a2821f;--error: #ca2535}:host-context(body.dark){--background: #151515;--background-card: #151515;--background-card-light: #2e2e2e;--background-header: #1f1f1f;--background-table-tr: #DCDCDC;--background-table-tr-text: var(--background-card);--scrollbar: #a9a9a9 #383838;--subtitle: #ffffffb3;--border: #606060;--text: #ffffff;--primary: #007bff;--secondary: #6c757d;--success: #128c2e;--info: #106694;--warning: #ac8a24;--error: #df1126}\n"] });
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvThemeComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvThemeComponent, decorators: [{
29
29
  type: Component,
30
- args: [{ selector: 'dsv-theme', template: "<ng-content></ng-content>\n<div id=\"collapse\"></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;background-color:var(--background);color:var(--text)}:host #collapse{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:#0009}:host #collapse.show{display:inline}:host-context(body.light){--button-text: #ffffff;--background: #dcdcdc;--background-card: #ffffff;--background-header: #dcdcdc;--background-table-tr: #000000;--background-table-tr-text: var(--background-card);--scrollbar: #757575 #f5f5f5;--subtitle: #5a5959;--border: #cbcbcb;--text: #000000;--primary: #007bff;--secondary: #6c757d;--success: #189f37;--info: #1c7fc1;--warning: #a2821f;--error: #ca2535}:host-context(body.dark){--background: #000000;--background-card: #1f1f1f;--background-header: #1f1f1f;--background-table-tr: #DCDCDC;--background-table-tr-text: var(--background-card);--scrollbar: #a9a9a9 #383838;--subtitle: #ffffffb3;--border: #606060;--text: #ffffff;--primary: #007bff;--secondary: #6c757d;--success: #128c2e;--info: #106694;--warning: #ac8a24;--error: #df1126}\n"] }]
30
+ args: [{ selector: 'dsv-theme', template: "<ng-content></ng-content>\n<div id=\"collapse\"></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;background-color:var(--background);color:var(--text)}:host #collapse{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:#0009}:host #collapse.show{display:inline}:host-context(body.light){--button-text: #ffffff;--background: #ffffff;--background-card: #ffffff;--background-card-light: #e9e9e9;--background-header: #dcdcdc;--background-table-tr: #000000;--background-table-tr-text: var(--background-card);--scrollbar: #757575 #f5f5f5;--subtitle: #5a5959;--border: #cbcbcb;--text: #000000;--primary: #007bff;--secondary: #6c757d;--success: #189f37;--info: #1c7fc1;--warning: #a2821f;--error: #ca2535}:host-context(body.dark){--background: #151515;--background-card: #151515;--background-card-light: #2e2e2e;--background-header: #1f1f1f;--background-table-tr: #DCDCDC;--background-table-tr-text: var(--background-card);--scrollbar: #a9a9a9 #383838;--subtitle: #ffffffb3;--border: #606060;--text: #ffffff;--primary: #007bff;--secondary: #6c757d;--success: #128c2e;--info: #106694;--warning: #ac8a24;--error: #df1126}\n"] }]
31
31
  }] });
32
32
 
33
33
  class ThemeService {
@@ -51,10 +51,10 @@ class ThemeService {
51
51
  html.classList.add(newMode);
52
52
  }
53
53
  }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
55
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ThemeService, providedIn: 'root' });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
55
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ThemeService, providedIn: 'root' });
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ThemeService, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ThemeService, decorators: [{
58
58
  type: Injectable,
59
59
  args: [{
60
60
  providedIn: 'root',
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-theme.mjs","sources":["../../../projects/ng-dsv/ds/theme/component/switch/theme-switch.component.ts","../../../projects/ng-dsv/ds/theme/component/switch/theme-switch.component.html","../../../projects/ng-dsv/ds/theme/component/theme.component.ts","../../../projects/ng-dsv/ds/theme/component/theme.component.html","../../../projects/ng-dsv/ds/theme/service/theme.service.ts","../../../projects/ng-dsv/ds/theme/ng-vagabond-lab-ng-dsv-ds-theme.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ThemeService } from '../../public-api';\n\nexport type Theme = {\n primary: string;\n text: string;\n};\n\n@Component({\n selector: 'dsv-theme-switch',\n imports: [CommonModule, DsvButtonComponent],\n templateUrl: `./theme-switch.component.html`,\n})\nexport class DsvThemeSwitchComponent {\n readonly themeService = inject(ThemeService);\n\n switchTheme(): void {\n this.themeService.switchTheme();\n }\n\n isLightMode(): boolean {\n return this.themeService.themeMode() === 'light';\n }\n}\n","<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-theme',\n templateUrl: './theme.component.html',\n styleUrls: ['./theme.component.scss'],\n})\nexport class DsvThemeComponent {}\n","<ng-content></ng-content>\n<div id=\"collapse\"></div>\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\n\nexport type ThemeMode = 'dark' | 'light';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n readonly platformService = inject(PlatformService);\n readonly storageService = inject(StorageService);\n\n readonly themeMode = signal<ThemeMode>((this.storageService.getItem('theme') as ThemeMode) ?? 'light');\n\n constructor() {\n if (this.platformService.isPlatformBrowser()) {\n let html = document.getElementsByTagName('body')[0];\n html.classList.add(this.themeMode());\n }\n }\n\n switchTheme(): void {\n if (this.platformService.isPlatformBrowser()) {\n let html = document.getElementsByTagName('body')[0];\n html.classList.remove(this.themeMode());\n\n let newMode: ThemeMode = this.themeMode() === 'dark' ? 'light' : 'dark';\n this.themeMode.set(newMode);\n this.storageService.setItem('theme', newMode);\n html.classList.add(newMode);\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-theme.mjs","sources":["../../../projects/ng-dsv/ds/theme/component/switch/theme-switch.component.ts","../../../projects/ng-dsv/ds/theme/component/switch/theme-switch.component.html","../../../projects/ng-dsv/ds/theme/component/theme.component.ts","../../../projects/ng-dsv/ds/theme/component/theme.component.html","../../../projects/ng-dsv/ds/theme/service/theme.service.ts","../../../projects/ng-dsv/ds/theme/ng-vagabond-lab-ng-dsv-ds-theme.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ThemeService } from '../../public-api';\n\nexport type Theme = {\n primary: string;\n text: string;\n};\n\n@Component({\n selector: 'dsv-theme-switch',\n imports: [CommonModule, DsvButtonComponent],\n templateUrl: `./theme-switch.component.html`,\n})\nexport class DsvThemeSwitchComponent {\n readonly themeService = inject(ThemeService);\n\n switchTheme(): void {\n this.themeService.switchTheme();\n }\n\n isLightMode(): boolean {\n return this.themeService.themeMode() === 'light';\n }\n}\n","<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dsv-theme',\n templateUrl: './theme.component.html',\n styleUrls: ['./theme.component.scss'],\n})\nexport class DsvThemeComponent {}\n","<ng-content></ng-content>\n<div id=\"collapse\"></div>\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\n\nexport type ThemeMode = 'dark' | 'light';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n readonly platformService = inject(PlatformService);\n readonly storageService = inject(StorageService);\n\n readonly themeMode = signal<ThemeMode>((this.storageService.getItem('theme') as ThemeMode) ?? 'light');\n\n constructor() {\n if (this.platformService.isPlatformBrowser()) {\n let html = document.getElementsByTagName('body')[0];\n html.classList.add(this.themeMode());\n }\n }\n\n switchTheme(): void {\n if (this.platformService.isPlatformBrowser()) {\n let html = document.getElementsByTagName('body')[0];\n html.classList.remove(this.themeMode());\n\n let newMode: ThemeMode = this.themeMode() === 'dark' ? 'light' : 'dark';\n this.themeMode.set(newMode);\n this.storageService.setItem('theme', newMode);\n html.classList.add(newMode);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -63,10 +63,10 @@ class ToastService {
63
63
  removeToastFromQueue(uuid) {
64
64
  this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
65
65
  }
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastService, providedIn: 'root' });
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ToastService, providedIn: 'root' });
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastService, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ToastService, decorators: [{
70
70
  type: Injectable,
71
71
  args: [{
72
72
  providedIn: 'root',
@@ -88,10 +88,10 @@ class DsvToastComponent {
88
88
  }
89
89
  });
90
90
  }
91
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
92
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvToastComponent, isStandalone: true, selector: "dsv-toast", inputs: { duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [class.open]=\"toast.open\"\n [class.close]=\"!toast.open\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast)\">X</button>\n @if (toast.type === 'success') {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === 'info') {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === 'warning') {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === 'error') {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.remainingDuration! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:200;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:200px;max-width:200px;padding:10px 32px 10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;background-color:var(--background-card);color:var(--text);opacity:0;transform:translate(100%);transition:transform .5s ease-out,opacity .5s ease-out}.dsv-toast-container .dsv-toast.open{animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.close{animation:slideOutRight .5s ease-out forwards}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:13px;right:10px;font-size:.75rem;border:0;background:inherit;color:var(--text);cursor:pointer}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid var(--border)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
91
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
92
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvToastComponent, isStandalone: true, selector: "dsv-toast", inputs: { duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [class.open]=\"toast.open\"\n [class.close]=\"!toast.open\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast)\">X</button>\n @if (toast.type === 'success') {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === 'info') {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === 'warning') {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === 'error') {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.remainingDuration! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:200;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:200px;max-width:200px;padding:10px 32px 10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;background-color:var(--background-card);color:var(--text);opacity:0;transform:translate(100%);transition:transform .5s ease-out,opacity .5s ease-out}.dsv-toast-container .dsv-toast.open{animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.close{animation:slideOutRight .5s ease-out forwards}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:13px;right:10px;font-size:.75rem;border:0;background:inherit;color:var(--text);cursor:pointer}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid var(--border)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvToastComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvToastComponent, decorators: [{
95
95
  type: Component,
96
96
  args: [{ selector: 'dsv-toast', imports: [CommonModule], template: "<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [class.open]=\"toast.open\"\n [class.close]=\"!toast.open\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast)\">X</button>\n @if (toast.type === 'success') {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === 'info') {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === 'warning') {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === 'error') {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.remainingDuration! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:200;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:200px;max-width:200px;padding:10px 32px 10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;background-color:var(--background-card);color:var(--text);opacity:0;transform:translate(100%);transition:transform .5s ease-out,opacity .5s ease-out}.dsv-toast-container .dsv-toast.open{animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.close{animation:slideOutRight .5s ease-out forwards}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:13px;right:10px;font-size:.75rem;border:0;background:inherit;color:var(--text);cursor:pointer}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid var(--border)}\n"] }]
97
97
  }], ctorParameters: () => [], propDecorators: { duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
@@ -65,10 +65,10 @@ class DsvTooltipComponent {
65
65
  this.opacity.set(0.9);
66
66
  });
67
67
  }
68
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvTooltipComponent, isStandalone: true, selector: "dsv-tooltip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "tooltipBox", first: true, predicate: ["tooltipBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n@if (visible()) {\n <div #tooltipBox [class]=\"'dsv-tooltip ' + positionClass()\" [style.opacity]=\"opacity()\">\n {{ text() }}\n </div>\n}\n", styles: [":host{position:relative;display:flex;flex-direction:column}.dsv-tooltip{position:absolute;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:10;opacity:.9;min-width:150px;width:100%;max-width:200px;white-space:normal;text-align:center;word-wrap:break-word}.dsv-tooltip.top{bottom:100%;left:50%;transform:translate(-50%);margin-bottom:5px}.dsv-tooltip.top:after{content:\"\";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#333 transparent transparent transparent}.dsv-tooltip.bottom{top:100%;left:50%;transform:translate(-50%);margin-top:5px}.dsv-tooltip.bottom:after{content:\" \";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent black transparent}.dsv-tooltip.left{right:100%;top:50%;transform:translateY(-50%);margin-right:5px}.dsv-tooltip.left:after{content:\" \";position:absolute;top:50%;left:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent transparent transparent black}.dsv-tooltip.right{left:100%;top:50%;transform:translateY(-50%);margin-left:5px}.dsv-tooltip.right:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent black transparent transparent}\n"] });
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvTooltipComponent, isStandalone: true, selector: "dsv-tooltip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "tooltipBox", first: true, predicate: ["tooltipBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n@if (visible()) {\n <div #tooltipBox [class]=\"'dsv-tooltip ' + positionClass()\" [style.opacity]=\"opacity()\">\n {{ text() }}\n </div>\n}\n", styles: [":host{position:relative;display:flex;flex-direction:column}.dsv-tooltip{position:absolute;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:10;opacity:.9;min-width:150px;width:100%;max-width:200px;white-space:normal;text-align:center;word-wrap:break-word}.dsv-tooltip.top{bottom:100%;left:50%;transform:translate(-50%);margin-bottom:5px}.dsv-tooltip.top:after{content:\"\";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#333 transparent transparent transparent}.dsv-tooltip.bottom{top:100%;left:50%;transform:translate(-50%);margin-top:5px}.dsv-tooltip.bottom:after{content:\" \";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent black transparent}.dsv-tooltip.left{right:100%;top:50%;transform:translateY(-50%);margin-right:5px}.dsv-tooltip.left:after{content:\" \";position:absolute;top:50%;left:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent transparent transparent black}.dsv-tooltip.right{left:100%;top:50%;transform:translateY(-50%);margin-left:5px}.dsv-tooltip.right:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent black transparent transparent}\n"] });
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvTooltipComponent, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvTooltipComponent, decorators: [{
72
72
  type: Component,
73
73
  args: [{ selector: 'dsv-tooltip', imports: [], host: {
74
74
  '(window:resize)': 'onResize()',
@@ -31,10 +31,10 @@ class EnvironmentService {
31
31
  console.log = () => { };
32
32
  }
33
33
  }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: EnvironmentService, providedIn: 'root' });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EnvironmentService, providedIn: 'root' });
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: EnvironmentService, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EnvironmentService, decorators: [{
38
38
  type: Injectable,
39
39
  args: [{ providedIn: 'root' }]
40
40
  }] });
@@ -52,10 +52,10 @@ class I18nService {
52
52
  .find((l) => this.SUPPORTED_LANGUAGES.includes(l));
53
53
  return match ?? this.DEFAULT_LANGUAGE;
54
54
  }
55
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
56
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: I18nService, providedIn: 'root' });
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
56
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: I18nService, providedIn: 'root' });
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: I18nService, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: I18nService, decorators: [{
59
59
  type: Injectable,
60
60
  args: [{
61
61
  providedIn: 'root',
@@ -63,10 +63,10 @@ class AdminService {
63
63
  this.data.set(data);
64
64
  });
65
65
  }
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminService, providedIn: 'root' });
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminService, providedIn: 'root' });
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminService, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminService, decorators: [{
70
70
  type: Injectable,
71
71
  args: [{
72
72
  providedIn: 'root',
@@ -104,10 +104,10 @@ class AdminSearchModalContainer extends BaseContainer {
104
104
  this.callback.emit(data);
105
105
  this.modalService.close('m2m');
106
106
  };
107
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", 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", "nb", "url", "small"], outputs: ["callback"] }, { kind: "component", type: DsvModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: DsvModalComponent, selector: "dsv-modal", inputs: ["id", "class", "titleText", "canEchap"] }, { kind: "component", type: DsvFormReactiveSearchbarComponent, selector: "dsv-form-reactive-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", 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", "nb", "url", "small"], outputs: ["callback"] }, { kind: "component", type: DsvModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: DsvModalComponent, selector: "dsv-modal", inputs: ["id", "class", "titleText", "canEchap"] }, { kind: "component", type: DsvFormReactiveSearchbarComponent, selector: "dsv-form-reactive-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
109
109
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
111
111
  type: Component,
112
112
  args: [{ selector: 'dsv-admin-search-modal', imports: [
113
113
  DsvItemComponent,
@@ -160,10 +160,10 @@ class AdminFormComponent extends DsvBaseFormReactiveComponent {
160
160
  this.form.value[name].push(data);
161
161
  }
162
162
  };
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
164
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: AdminFormComponent, isStandalone: true, selector: "dsv-admin-form", inputs: { urlBack: { classPropertyName: "urlBack", publicName: "urlBack", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, formConf: { classPropertyName: "formConf", publicName: "formConf", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callback: "callback" }, usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{display:flex;overflow:hidden}:host dsv-form-reactive{--form-flex-direction: row;--form-flex-wrap: wrap;--form-flex-padding: 0 0 0 5px}:host dsv-form-reactive .item{display:flex;width:100%;align-items:end}:host dsv-form-reactive .width50{width:49%}:host dsv-form-reactive .m2m{display:flex;flex:1;overflow:auto;scrollbar-width:thin;padding:10px 0}:host dsv-form-reactive .m2m .m2m-content{align-items:center;gap:10px;flex-wrap:nowrap;display:flex;flex-direction:row;justify-content:end;flex:1}@media(max-width:800px){:host dsv-form-reactive .width50{width:100%!important}:host dsv-form-reactive .m2m{justify-content:baseline!important}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "component", type: DsvFormReactiveComponent, selector: "dsv-form-reactive", inputs: ["form", "urlBack", "textValid", "formValid"], outputs: ["callback"] }, { kind: "component", type: DsvFormReactiveInputComponent, selector: "dsv-form-reactive-input", inputs: ["form", "field", "type", "withLabel", "required", "icon"], outputs: ["callbackSend"] }, { kind: "component", type: DsvFormReactiveCheckboxComponent, selector: "dsv-form-reactive-checkbox", inputs: ["form", "field", "withLabel"], outputs: ["callbackChange"] }, { kind: "component", type: AdminSearchModalContainer, selector: "dsv-admin-search-modal", inputs: ["m2em"], outputs: ["callback"] }] });
163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: AdminFormComponent, isStandalone: true, selector: "dsv-admin-form", inputs: { urlBack: { classPropertyName: "urlBack", publicName: "urlBack", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, formConf: { classPropertyName: "formConf", publicName: "formConf", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callback: "callback" }, usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{display:flex;overflow:hidden}:host dsv-form-reactive{--form-flex-direction: row;--form-flex-wrap: wrap;--form-flex-padding: 0 0 0 5px}:host dsv-form-reactive .item{display:flex;width:100%;align-items:end}:host dsv-form-reactive .width50{width:49%}:host dsv-form-reactive .m2m{display:flex;flex:1;overflow:auto;scrollbar-width:thin;padding:10px 0}:host dsv-form-reactive .m2m .m2m-content{align-items:center;gap:10px;flex-wrap:nowrap;display:flex;flex-direction:row;justify-content:end;flex:1}@media(max-width:800px){:host dsv-form-reactive .width50{width:100%!important}:host dsv-form-reactive .m2m{justify-content:baseline!important}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "component", type: DsvFormReactiveComponent, selector: "dsv-form-reactive", inputs: ["form", "urlBack", "textValid", "formValid"], outputs: ["callback"] }, { kind: "component", type: DsvFormReactiveInputComponent, selector: "dsv-form-reactive-input", inputs: ["form", "field", "type", "withLabel", "required", "icon"], outputs: ["callbackSend"] }, { kind: "component", type: DsvFormReactiveCheckboxComponent, selector: "dsv-form-reactive-checkbox", inputs: ["form", "field", "withLabel"], outputs: ["callbackChange"] }, { kind: "component", type: AdminSearchModalContainer, selector: "dsv-admin-search-modal", inputs: ["m2em"], outputs: ["callback"] }] });
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminFormComponent, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminFormComponent, decorators: [{
167
167
  type: Component,
168
168
  args: [{ selector: 'dsv-admin-form', imports: [
169
169
  ReactiveFormsModule,
@@ -216,10 +216,10 @@ class AdminFormContainer extends BaseRouteContainer {
216
216
  this.adminService.post(this.tabConfig()?.name, dataFusion);
217
217
  }
218
218
  }
219
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminFormContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: AdminFormContainer, isStandalone: true, selector: "dsv-admin-form-container", usesInheritance: true, ngImport: i0, template: "<dsv-card>\n <dsv-card-header>\n <h2>\n {{ adminService.data().id ? 'Modification' : 'Ajout' }}\n </h2>\n </dsv-card-header>\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", styles: [":host{display:flex;width:100%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvCardHeaderComponent, selector: "dsv-card-header" }, { kind: "component", type: AdminFormComponent, selector: "dsv-admin-form", inputs: ["urlBack", "data", "formConf"], outputs: ["callback"] }] });
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminFormContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: AdminFormContainer, isStandalone: true, selector: "dsv-admin-form-container", usesInheritance: true, ngImport: i0, template: "<dsv-card>\n <dsv-card-header>\n <h2>\n {{ adminService.data().id ? 'Modification' : 'Ajout' }}\n </h2>\n </dsv-card-header>\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", styles: [":host{display:flex;width:100%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvCardHeaderComponent, selector: "dsv-card-header" }, { kind: "component", type: AdminFormComponent, selector: "dsv-admin-form", inputs: ["urlBack", "data", "formConf"], outputs: ["callback"] }] });
221
221
  }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminFormContainer, decorators: [{
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminFormContainer, decorators: [{
223
223
  type: Component,
224
224
  args: [{ selector: 'dsv-admin-form-container', imports: [DsvCardComponent, DsvCardHeaderComponent, AdminFormComponent, DsvCardHeaderComponent], template: "<dsv-card>\n <dsv-card-header>\n <h2>\n {{ adminService.data().id ? 'Modification' : 'Ajout' }}\n </h2>\n </dsv-card-header>\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", styles: [":host{display:flex;width:100%;overflow:hidden}\n"] }]
225
225
  }], ctorParameters: () => [] });
@@ -270,10 +270,10 @@ class AdminSearchContainer extends BaseRouteContainer {
270
270
  this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name]: search }));
271
271
  this.adminService.get(this.tabConfig()?.name, this.tabConfig()?.findByChamps + '>>' + this.tabConfig()?.sortBy, search, page, this.adminService.tabs()?.max);
272
272
  }
273
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminSearchContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
274
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: AdminSearchContainer, isStandalone: true, selector: "dsv-admin-search", usesInheritance: true, ngImport: i0, template: "<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>R\u00E9sulat : {{ 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, this.adminService.search()[this.tabConfig()?.name!])\"\n />\n</dsv-card>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;width:100%}:host .admin-header{padding:10px 0;display:flex;align-items:center;justify-content:space-between}:host dsv-form-reactive-searchbar{margin:0 0 10px}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "component", type: DsvTabsComponent, selector: "dsv-tabs-component", inputs: ["tabs", "active"], outputs: ["callback"] }, { kind: "component", type: DsvTableComponent, selector: "dsv-table", inputs: ["url", "cells", "datas", "max"] }, { kind: "component", type: DsvPaginateComponent, selector: "dsv-paginate", inputs: ["page", "max"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: DsvFormSignalSearchbarComponent, selector: "dsv-form-signal-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminSearchContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
274
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: AdminSearchContainer, isStandalone: true, selector: "dsv-admin-search", usesInheritance: true, ngImport: i0, template: "<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>R\u00E9sulat : {{ 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, this.adminService.search()[this.tabConfig()?.name!])\"\n />\n</dsv-card>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;width:100%}:host .admin-header{padding:10px 0;display:flex;align-items:center;justify-content:space-between}:host dsv-form-reactive-searchbar{margin:0 0 10px}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "component", type: DsvTabsComponent, selector: "dsv-tabs-component", inputs: ["tabs", "active"], outputs: ["callback"] }, { kind: "component", type: DsvTableComponent, selector: "dsv-table", inputs: ["url", "cells", "datas", "max"] }, { kind: "component", type: DsvPaginateComponent, selector: "dsv-paginate", inputs: ["page", "max"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: DsvFormSignalSearchbarComponent, selector: "dsv-form-signal-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
275
275
  }
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AdminSearchContainer, decorators: [{
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AdminSearchContainer, decorators: [{
277
277
  type: Component,
278
278
  args: [{ selector: 'dsv-admin-search', imports: [
279
279
  DsvCardComponent,
@@ -34,10 +34,10 @@ class AuthComponent {
34
34
  this.authService.logout();
35
35
  this.callbackLogout.emit();
36
36
  }
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", 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 <a href=\"/profil\" dsvLink>\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"Profile\" referrerpolicy=\"no-referrer\" />\n </a>\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: DsvModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: DsvModalAlertComponent, selector: "dsv-modal-alert", inputs: ["id", "titleText", "text", "button", "buttonClose"], outputs: ["callback"] }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", 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 <a href=\"/profil\" dsvLink>\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"Profile\" referrerpolicy=\"no-referrer\" />\n </a>\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: DsvModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: DsvModalAlertComponent, selector: "dsv-modal-alert", inputs: ["id", "titleText", "text", "button", "buttonClose"], outputs: ["callback"] }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthComponent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'dsv-auth', imports: [CommonModule, DsvModalButtonComponent, DsvModalAlertComponent, RouterInternalPipe], 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 <a href=\"/profil\" dsvLink>\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"Profile\" referrerpolicy=\"no-referrer\" />\n </a>\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"] }] } });
@@ -161,10 +161,10 @@ class AuthService extends BaseApiService {
161
161
  canFetch(ssr = true) {
162
162
  return ((ssr && !this.isPlatformBrowser()) || (this.isPlatformBrowser() && this.isRefreshTokenLoaded()));
163
163
  }
164
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
165
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthService, providedIn: 'root' });
164
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
165
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthService, providedIn: 'root' });
166
166
  }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthService, decorators: [{
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthService, decorators: [{
168
168
  type: Injectable,
169
169
  args: [{
170
170
  providedIn: 'root',
@@ -216,10 +216,10 @@ class AuthGoogleService {
216
216
  google.accounts.id.prompt();
217
217
  }
218
218
  }
219
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthGoogleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
220
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthGoogleService, providedIn: 'root' });
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthGoogleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
220
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthGoogleService, providedIn: 'root' });
221
221
  }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: AuthGoogleService, decorators: [{
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AuthGoogleService, decorators: [{
223
223
  type: Injectable,
224
224
  args: [{
225
225
  providedIn: 'root',
@@ -9,12 +9,12 @@ import { TranslatePipe } from '@ngx-translate/core';
9
9
  class ContactComponent {
10
10
  contactEmail = input('vagabond.git@gmail.com', /* @ts-ignore */
11
11
  ...(ngDevMode ? [{ debugName: "contactEmail" }] : /* istanbul ignore next */ []));
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: ContactComponent, isStandalone: true, selector: "dsv-auth", inputs: { contactEmail: { classPropertyName: "contactEmail", publicName: "contactEmail", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"default\" />\n <dsv-chip text=\"QUARKUS\" color=\"default\" />\n <dsv-chip text=\"DOCKER\" color=\"default\" />\n <dsv-chip text=\"GIT\" color=\"default\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button>\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card>\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n", styles: [":host p{text-align:justify}:host .content{display:flex}:host .content h2{font-size:1.5rem;font-weight:700!important;margin:10px 0!important}:host .content p{font-size:1.1rem}:host .content .left-side{width:50%;display:flex;flex-direction:column;align-items:center}:host .content .left-side img{width:200px;border-radius:50%;border:3px solid var(--primary);padding:5px}:host .content .left-side p{text-align:center}:host .content .left-side .chips{margin:15px 0;display:flex;flex-wrap:wrap;gap:10px}:host .content .left-side .chips dsv-chip{--chip-padding: 10px;--chip-font-size: .9rem;--chip-font-weight: 550}:host .content .right-side{width:50%;display:flex;flex-direction:column;gap:20px}:host .content .right-side h2{margin-bottom:20px!important}:host .content .right-side .follow-buttons{display:flex;flex-direction:column;gap:10px;margin-top:30px}:host .content .right-side .follow-buttons dsv-button{--button-width: 100%;--button-font-size: .8rem;--button-font-weight: 400;--button-padding: 4px}:host .content .right-side .follow-buttons dsv-button a{display:flex;gap:5px;width:100%!important;color:var(--text)!important;border:0px!important;align-items:center;justify-content:center}@media screen and (max-width:800px){:host .content{flex-direction:column}:host .content .left-side{width:100%!important}:host .content .right-side{text-align:center;align-items:center;width:100%!important}:host .content .right-side>div{width:100%!important}:host .content .right-side p{text-align:center}:host .content .follow-buttons{width:100%}}:host .contact-projects{display:flex;flex-direction:row}:host .contact-projects dsv-card{width:33%}:host .contact-projects h2{display:flex;gap:10px}:host .contact-projects .project-content{display:flex;gap:20px;align-items:center;margin-bottom:10px;flex:1}@media screen and (max-width:800px){:host .contact-projects{flex-direction:column}:host .contact-projects dsv-card{width:calc(100% - 10px)!important}}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "directive", type: RouterExternalPipe, selector: "a[dsvLinkExternal]", outputs: ["dsvLinkExternal"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: ContactComponent, isStandalone: true, selector: "dsv-auth", inputs: { contactEmail: { classPropertyName: "contactEmail", publicName: "contactEmail", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"default\" />\n <dsv-chip text=\"QUARKUS\" color=\"default\" />\n <dsv-chip text=\"DOCKER\" color=\"default\" />\n <dsv-chip text=\"GIT\" color=\"default\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button>\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card>\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n", styles: [":host p{text-align:justify}:host .content{display:flex}:host .content h2{font-size:1.5rem;font-weight:700!important;margin:10px 0!important}:host .content p{font-size:1.1rem}:host .content .left-side{width:50%;display:flex;flex-direction:column;align-items:center}:host .content .left-side img{width:200px;border-radius:50%;border:3px solid var(--primary);padding:5px}:host .content .left-side p{text-align:center}:host .content .left-side .chips{margin:15px 0;display:flex;flex-wrap:wrap;gap:10px}:host .content .left-side .chips dsv-chip{--chip-padding: 10px;--chip-font-size: .9rem;--chip-font-weight: 550}:host .content .right-side{width:50%;display:flex;flex-direction:column;gap:20px}:host .content .right-side h2{margin-bottom:20px!important}:host .content .right-side .follow-buttons{display:flex;flex-direction:column;gap:10px;margin-top:30px}:host .content .right-side .follow-buttons dsv-button{--button-width: 100%;--button-font-size: .8rem;--button-font-weight: 400;--button-padding: 4px}:host .content .right-side .follow-buttons dsv-button a{display:flex;gap:5px;width:100%!important;color:var(--text)!important;border:0px!important;align-items:center;justify-content:center}@media screen and (max-width:800px){:host .content{flex-direction:column}:host .content .left-side{width:100%!important}:host .content .right-side{text-align:center;align-items:center;width:100%!important}:host .content .right-side>div{width:100%!important}:host .content .right-side p{text-align:center}:host .content .follow-buttons{width:100%}}:host .contact-projects{display:flex;flex-direction:row;gap:10px}:host .contact-projects dsv-card{padding:5px!important;width:33%;border:1px solid var(--border)!important}:host .contact-projects h2{display:flex;gap:10px}:host .contact-projects .project-content{display:flex;gap:20px;align-items:center;margin-bottom:10px;flex:1}@media screen and (max-width:800px){:host .contact-projects{flex-direction:column}:host .contact-projects dsv-card{margin:5px 10px!important;width:calc(100% - 30px)!important}}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "directive", type: RouterExternalPipe, selector: "a[dsvLinkExternal]", outputs: ["dsvLinkExternal"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ContactComponent, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ContactComponent, decorators: [{
16
16
  type: Component,
17
- args: [{ selector: 'dsv-auth', imports: [DsvCardComponent, DsvChipComponent, RouterExternalPipe, DsvButtonComponent, TranslatePipe], template: "<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"default\" />\n <dsv-chip text=\"QUARKUS\" color=\"default\" />\n <dsv-chip text=\"DOCKER\" color=\"default\" />\n <dsv-chip text=\"GIT\" color=\"default\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button>\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card>\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n", styles: [":host p{text-align:justify}:host .content{display:flex}:host .content h2{font-size:1.5rem;font-weight:700!important;margin:10px 0!important}:host .content p{font-size:1.1rem}:host .content .left-side{width:50%;display:flex;flex-direction:column;align-items:center}:host .content .left-side img{width:200px;border-radius:50%;border:3px solid var(--primary);padding:5px}:host .content .left-side p{text-align:center}:host .content .left-side .chips{margin:15px 0;display:flex;flex-wrap:wrap;gap:10px}:host .content .left-side .chips dsv-chip{--chip-padding: 10px;--chip-font-size: .9rem;--chip-font-weight: 550}:host .content .right-side{width:50%;display:flex;flex-direction:column;gap:20px}:host .content .right-side h2{margin-bottom:20px!important}:host .content .right-side .follow-buttons{display:flex;flex-direction:column;gap:10px;margin-top:30px}:host .content .right-side .follow-buttons dsv-button{--button-width: 100%;--button-font-size: .8rem;--button-font-weight: 400;--button-padding: 4px}:host .content .right-side .follow-buttons dsv-button a{display:flex;gap:5px;width:100%!important;color:var(--text)!important;border:0px!important;align-items:center;justify-content:center}@media screen and (max-width:800px){:host .content{flex-direction:column}:host .content .left-side{width:100%!important}:host .content .right-side{text-align:center;align-items:center;width:100%!important}:host .content .right-side>div{width:100%!important}:host .content .right-side p{text-align:center}:host .content .follow-buttons{width:100%}}:host .contact-projects{display:flex;flex-direction:row}:host .contact-projects dsv-card{width:33%}:host .contact-projects h2{display:flex;gap:10px}:host .contact-projects .project-content{display:flex;gap:20px;align-items:center;margin-bottom:10px;flex:1}@media screen and (max-width:800px){:host .contact-projects{flex-direction:column}:host .contact-projects dsv-card{width:calc(100% - 10px)!important}}\n"] }]
17
+ args: [{ selector: 'dsv-auth', imports: [DsvCardComponent, DsvChipComponent, RouterExternalPipe, DsvButtonComponent, TranslatePipe], template: "<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"default\" />\n <dsv-chip text=\"QUARKUS\" color=\"default\" />\n <dsv-chip text=\"DOCKER\" color=\"default\" />\n <dsv-chip text=\"GIT\" color=\"default\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button>\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card>\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n", styles: [":host p{text-align:justify}:host .content{display:flex}:host .content h2{font-size:1.5rem;font-weight:700!important;margin:10px 0!important}:host .content p{font-size:1.1rem}:host .content .left-side{width:50%;display:flex;flex-direction:column;align-items:center}:host .content .left-side img{width:200px;border-radius:50%;border:3px solid var(--primary);padding:5px}:host .content .left-side p{text-align:center}:host .content .left-side .chips{margin:15px 0;display:flex;flex-wrap:wrap;gap:10px}:host .content .left-side .chips dsv-chip{--chip-padding: 10px;--chip-font-size: .9rem;--chip-font-weight: 550}:host .content .right-side{width:50%;display:flex;flex-direction:column;gap:20px}:host .content .right-side h2{margin-bottom:20px!important}:host .content .right-side .follow-buttons{display:flex;flex-direction:column;gap:10px;margin-top:30px}:host .content .right-side .follow-buttons dsv-button{--button-width: 100%;--button-font-size: .8rem;--button-font-weight: 400;--button-padding: 4px}:host .content .right-side .follow-buttons dsv-button a{display:flex;gap:5px;width:100%!important;color:var(--text)!important;border:0px!important;align-items:center;justify-content:center}@media screen and (max-width:800px){:host .content{flex-direction:column}:host .content .left-side{width:100%!important}:host .content .right-side{text-align:center;align-items:center;width:100%!important}:host .content .right-side>div{width:100%!important}:host .content .right-side p{text-align:center}:host .content .follow-buttons{width:100%}}:host .contact-projects{display:flex;flex-direction:row;gap:10px}:host .contact-projects dsv-card{padding:5px!important;width:33%;border:1px solid var(--border)!important}:host .contact-projects h2{display:flex;gap:10px}:host .contact-projects .project-content{display:flex;gap:20px;align-items:center;margin-bottom:10px;flex:1}@media screen and (max-width:800px){:host .contact-projects{flex-direction:column}:host .contact-projects dsv-card{margin:5px 10px!important;width:calc(100% - 30px)!important}}\n"] }]
18
18
  }], propDecorators: { contactEmail: [{ type: i0.Input, args: [{ isSignal: true, alias: "contactEmail", required: false }] }] } });
19
19
 
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-module-contact.mjs","sources":["../../../projects/ng-dsv/module/contact/component/contact.component.ts","../../../projects/ng-dsv/module/contact/component/contact.component.html","../../../projects/ng-dsv/module/contact/ng-vagabond-lab-ng-dsv-module-contact.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport { RouterExternalPipe } from '@ng-vagabond-lab/ng-dsv/router';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-auth',\n imports: [DsvCardComponent, DsvChipComponent, RouterExternalPipe, DsvButtonComponent, TranslatePipe],\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.scss'],\n})\nexport class ContactComponent {\n readonly contactEmail = input<string>('vagabond.git@gmail.com');\n}\n","<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"default\" />\n <dsv-chip text=\"QUARKUS\" color=\"default\" />\n <dsv-chip text=\"DOCKER\" color=\"default\" />\n <dsv-chip text=\"GIT\" color=\"default\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button>\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card>\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAaa,gBAAgB,CAAA;IAChB,YAAY,GAAG,KAAK,CAAS,wBAAwB;qFAAC;uGADtD,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb7B,qiLAmIA,EAAA,MAAA,EAAA,CAAA,25DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1Hc,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,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,EAAE,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAI1F,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,UAAU,EAAA,OAAA,EACX,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,qiLAAA,EAAA,MAAA,EAAA,CAAA,25DAAA,CAAA,EAAA;;;AETxG;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-module-contact.mjs","sources":["../../../projects/ng-dsv/module/contact/component/contact.component.ts","../../../projects/ng-dsv/module/contact/component/contact.component.html","../../../projects/ng-dsv/module/contact/ng-vagabond-lab-ng-dsv-module-contact.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport { RouterExternalPipe } from '@ng-vagabond-lab/ng-dsv/router';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-auth',\n imports: [DsvCardComponent, DsvChipComponent, RouterExternalPipe, DsvButtonComponent, TranslatePipe],\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.scss'],\n})\nexport class ContactComponent {\n readonly contactEmail = input<string>('vagabond.git@gmail.com');\n}\n","<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"default\" />\n <dsv-chip text=\"QUARKUS\" color=\"default\" />\n <dsv-chip text=\"DOCKER\" color=\"default\" />\n <dsv-chip text=\"GIT\" color=\"default\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button>\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card>\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card>\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAaa,gBAAgB,CAAA;IAChB,YAAY,GAAG,KAAK,CAAS,wBAAwB;qFAAC;uGADtD,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb7B,qiLAmIA,EAAA,MAAA,EAAA,CAAA,6/DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1Hc,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,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,EAAE,kBAAkB,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAI1F,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,UAAU,EAAA,OAAA,EACX,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,qiLAAA,EAAA,MAAA,EAAA,CAAA,6/DAAA,CAAA,EAAA;;;AETxG;;AAEG;;;;"}
@@ -18,10 +18,10 @@ class PlatformService {
18
18
  isPlatformBrowser() {
19
19
  return isPlatformBrowser(this.platformId);
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: PlatformService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: PlatformService, providedIn: 'root' });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlatformService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlatformService, providedIn: 'root' });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: PlatformService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlatformService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{
27
27
  providedIn: 'root',