@ng-vagabond-lab/ng-dsv 0.2.12 → 0.2.13

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 (80) hide show
  1. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +16 -11
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +32 -22
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs.map +1 -1
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +29 -25
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs.map +1 -1
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +15 -9
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +11 -7
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -1
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +26 -16
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +16 -14
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +7 -5
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +22 -14
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs.map +1 -1
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +7 -5
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs.map +1 -1
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +35 -22
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs.map +1 -1
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +70 -47
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +81 -54
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +11 -7
  30. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
  31. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +19 -11
  32. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs.map +1 -1
  33. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +15 -9
  34. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs.map +1 -1
  35. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +9 -6
  36. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
  37. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
  38. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs.map +1 -1
  39. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +22 -17
  40. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
  41. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +24 -18
  42. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
  43. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +46 -29
  44. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
  45. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +7 -5
  46. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs.map +1 -1
  47. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +33 -21
  48. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
  49. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
  50. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs.map +1 -1
  51. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +14 -10
  52. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs.map +1 -1
  53. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +15 -9
  54. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs.map +1 -1
  55. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +11 -10
  56. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
  57. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +16 -11
  58. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -1
  59. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +15 -9
  60. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
  61. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +7 -5
  62. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs.map +1 -1
  63. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +7 -5
  64. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs.map +1 -1
  65. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +51 -33
  66. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs.map +1 -1
  67. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +21 -15
  68. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs.map +1 -1
  69. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +5 -4
  70. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
  71. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +9 -6
  72. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs.map +1 -1
  73. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +13 -11
  74. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
  75. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +15 -9
  76. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs.map +1 -1
  77. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +38 -28
  78. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
  79. package/package.json +1 -1
  80. package/types/ng-vagabond-lab-ng-dsv-ds-form-signal.d.ts +1 -1
@@ -7,9 +7,12 @@ const MAX_TOASTS = 10;
7
7
  const DURATION_DEFAULT = 5000;
8
8
  const DURATION_TIMEOUT = 10;
9
9
  class ToastService {
10
- toastShows = signal([], ...(ngDevMode ? [{ debugName: "toastShows" }] : /* istanbul ignore next */ []));
11
- toasts = signal([], ...(ngDevMode ? [{ debugName: "toasts" }] : /* istanbul ignore next */ []));
12
- duration = signal(DURATION_DEFAULT, ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
10
+ toastShows = signal([], /* @ts-ignore */
11
+ ...(ngDevMode ? [{ debugName: "toastShows" }] : /* istanbul ignore next */ []));
12
+ toasts = signal([], /* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "toasts" }] : /* istanbul ignore next */ []));
14
+ duration = signal(DURATION_DEFAULT, /* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
13
16
  showToast(toast) {
14
17
  toast.uuid = crypto.randomUUID();
15
18
  toast.open = true;
@@ -60,10 +63,10 @@ class ToastService {
60
63
  removeToastFromQueue(uuid) {
61
64
  this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
62
65
  }
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
64
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastService, providedIn: 'root' });
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ToastService, providedIn: 'root' });
65
68
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastService, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ToastService, decorators: [{
67
70
  type: Injectable,
68
71
  args: [{
69
72
  providedIn: 'root',
@@ -72,8 +75,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
72
75
 
73
76
  class DsvToastComponent {
74
77
  toastService = inject(ToastService);
75
- duration = input(DURATION_DEFAULT, ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
76
- max = input(MAX_TOASTS, ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
78
+ duration = input(DURATION_DEFAULT, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
80
+ max = input(MAX_TOASTS, /* @ts-ignore */
81
+ ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
77
82
  constructor() {
78
83
  effect(() => {
79
84
  for (const toast of this.toastService.toasts()) {
@@ -83,10 +88,10 @@ class DsvToastComponent {
83
88
  }
84
89
  });
85
90
  }
86
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
87
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", 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.0.1", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
92
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", 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"] }] });
88
93
  }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvToastComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvToastComponent, decorators: [{
90
95
  type: Component,
91
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"] }]
92
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 }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-toast.mjs","sources":["../../../projects/ng-dsv/ds/toast/service/toast.service.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.html","../../../projects/ng-dsv/ds/toast/ng-vagabond-lab-ng-dsv-ds-toast.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { ToastDto } from '../dto/toast.dto';\n\nexport const MAX_TOASTS = 10;\nexport const DURATION_DEFAULT = 5000;\nexport const DURATION_TIMEOUT = 10;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n readonly toastShows = signal<ToastDto[]>([]);\n readonly toasts = signal<ToastDto[]>([]);\n\n readonly duration = signal<number>(DURATION_DEFAULT);\n\n showToast(toast: ToastDto): void {\n toast.uuid = crypto.randomUUID();\n toast.open = true;\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? this.duration();\n toast.remainingDuration = toast.duration;\n toast.filled = toast.filled ?? false;\n if (toast.closeAll) {\n this.toastShows().forEach((toastShow) => this.closeToast(toastShow));\n }\n const find = this.toastShows().find((t) => t.text === toast.text);\n if (find) {\n this.closeToast(find);\n }\n this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: ToastDto): void {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n toast.interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n this.closeToast(toast);\n } else {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.remainingDuration = toast.duration! - duration;\n }\n return oneToast;\n }),\n );\n }\n }, DURATION_TIMEOUT);\n this.removeToastFromQueue(toast.uuid!);\n }\n\n closeToast(toast: ToastDto): void {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.open = false;\n }\n return oneToast;\n }),\n );\n clearInterval(toast.interval);\n setTimeout(() => {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== toast.uuid));\n }, 500);\n }\n\n removeToastFromQueue(uuid: string): void {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input } from '@angular/core';\nimport { DURATION_DEFAULT, MAX_TOASTS, ToastService } from '../service/toast.service';\n\n@Component({\n selector: 'dsv-toast',\n imports: [CommonModule],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n})\nexport class DsvToastComponent {\n readonly toastService = inject(ToastService);\n\n readonly duration = input<number>(DURATION_DEFAULT);\n readonly max = input<number>(MAX_TOASTS);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < this.max()) {\n this.toastService.consumeToast(toast);\n }\n }\n });\n }\n}\n","<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-toast.mjs","sources":["../../../projects/ng-dsv/ds/toast/service/toast.service.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.html","../../../projects/ng-dsv/ds/toast/ng-vagabond-lab-ng-dsv-ds-toast.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { ToastDto } from '../dto/toast.dto';\n\nexport const MAX_TOASTS = 10;\nexport const DURATION_DEFAULT = 5000;\nexport const DURATION_TIMEOUT = 10;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n readonly toastShows = signal<ToastDto[]>([]);\n readonly toasts = signal<ToastDto[]>([]);\n\n readonly duration = signal<number>(DURATION_DEFAULT);\n\n showToast(toast: ToastDto): void {\n toast.uuid = crypto.randomUUID();\n toast.open = true;\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? this.duration();\n toast.remainingDuration = toast.duration;\n toast.filled = toast.filled ?? false;\n if (toast.closeAll) {\n this.toastShows().forEach((toastShow) => this.closeToast(toastShow));\n }\n const find = this.toastShows().find((t) => t.text === toast.text);\n if (find) {\n this.closeToast(find);\n }\n this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: ToastDto): void {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n toast.interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n this.closeToast(toast);\n } else {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.remainingDuration = toast.duration! - duration;\n }\n return oneToast;\n }),\n );\n }\n }, DURATION_TIMEOUT);\n this.removeToastFromQueue(toast.uuid!);\n }\n\n closeToast(toast: ToastDto): void {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.open = false;\n }\n return oneToast;\n }),\n );\n clearInterval(toast.interval);\n setTimeout(() => {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== toast.uuid));\n }, 500);\n }\n\n removeToastFromQueue(uuid: string): void {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input } from '@angular/core';\nimport { DURATION_DEFAULT, MAX_TOASTS, ToastService } from '../service/toast.service';\n\n@Component({\n selector: 'dsv-toast',\n imports: [CommonModule],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n})\nexport class DsvToastComponent {\n readonly toastService = inject(ToastService);\n\n readonly duration = input<number>(DURATION_DEFAULT);\n readonly max = input<number>(MAX_TOASTS);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < this.max()) {\n this.toastService.consumeToast(toast);\n }\n }\n });\n }\n}\n","<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -32,12 +32,18 @@ const getTooltipPosition = (position, rect) => {
32
32
  };
33
33
 
34
34
  class DsvTooltipComponent {
35
- text = input('', ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
36
- position = input(TooltipPositionEnum.TOP, ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
37
- tooltipBox = viewChild('tooltipBox', ...(ngDevMode ? [{ debugName: "tooltipBox" }] : /* istanbul ignore next */ []));
38
- visible = signal(false, ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
39
- opacity = signal(0, ...(ngDevMode ? [{ debugName: "opacity" }] : /* istanbul ignore next */ []));
40
- positionClass = signal(TooltipPositionEnum.TOP, ...(ngDevMode ? [{ debugName: "positionClass" }] : /* istanbul ignore next */ []));
35
+ text = input('', /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
37
+ position = input(TooltipPositionEnum.TOP, /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
39
+ tooltipBox = viewChild('tooltipBox', /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "tooltipBox" }] : /* istanbul ignore next */ []));
41
+ visible = signal(false, /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
43
+ opacity = signal(0, /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "opacity" }] : /* istanbul ignore next */ []));
45
+ positionClass = signal(TooltipPositionEnum.TOP, /* @ts-ignore */
46
+ ...(ngDevMode ? [{ debugName: "positionClass" }] : /* istanbul ignore next */ []));
41
47
  onResize() {
42
48
  this.adjustPosition();
43
49
  }
@@ -59,10 +65,10 @@ class DsvTooltipComponent {
59
65
  this.opacity.set(0.9);
60
66
  });
61
67
  }
62
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", 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.0.1", ngImport: i0, type: DsvTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", 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"] });
64
70
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DsvTooltipComponent, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DsvTooltipComponent, decorators: [{
66
72
  type: Component,
67
73
  args: [{ selector: 'dsv-tooltip', imports: [], host: {
68
74
  '(window:resize)': 'onResize()',
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-tooltip.mjs","sources":["../../../projects/ng-dsv/ds/tooltip/dto/tooltip.dto.ts","../../../projects/ng-dsv/ds/tooltip/utils/tooltip.utils.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.html","../../../projects/ng-dsv/ds/tooltip/ng-vagabond-lab-ng-dsv-ds-tooltip.ts"],"sourcesContent":["export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport enum TooltipPositionEnum {\n TOP = 'top',\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n}\n","import { TooltipPosition, TooltipPositionEnum } from '../dto/tooltip.dto';\n\nexport const POSITION_MAX_TOP = 50;\nexport const POSITION_MAX_BOTTOM = 50;\nexport const POSITION_MAX_LEFT = 50;\nexport const POSITION_MAX_RIGHT = 50;\n\nexport const getTooltipPosition = (\n position: TooltipPosition,\n rect: DOMRect,\n): TooltipPositionEnum | TooltipPosition => {\n if (position === TooltipPositionEnum.TOP && rect.top < POSITION_MAX_TOP) {\n return TooltipPositionEnum.BOTTOM;\n } else if (\n position === TooltipPositionEnum.BOTTOM &&\n rect.bottom > window.innerHeight - POSITION_MAX_BOTTOM\n ) {\n return TooltipPositionEnum.TOP;\n } else if (position === TooltipPositionEnum.LEFT && rect.left < POSITION_MAX_LEFT) {\n return TooltipPositionEnum.RIGHT;\n } else if (\n position === TooltipPositionEnum.RIGHT &&\n rect.right > window.innerWidth - POSITION_MAX_RIGHT\n ) {\n return TooltipPositionEnum.LEFT;\n }\n return position;\n};\n","import { Component, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { TooltipPosition, TooltipPositionEnum } from '../dto/tooltip.dto';\nimport { getTooltipPosition } from '../utils/tooltip.utils';\n@Component({\n selector: 'dsv-tooltip',\n imports: [],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n host: {\n '(window:resize)': 'onResize()',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class DsvTooltipComponent {\n readonly text = input<string>('');\n readonly position = input<TooltipPosition>(TooltipPositionEnum.TOP);\n\n readonly tooltipBox = viewChild<ElementRef>('tooltipBox');\n\n readonly visible = signal<boolean>(false);\n readonly opacity = signal<number>(0);\n\n readonly positionClass = signal<TooltipPosition>(TooltipPositionEnum.TOP);\n\n onResize(): void {\n this.adjustPosition();\n }\n\n onMouseEnter(): void {\n this.visible.set(true);\n this.adjustPosition();\n }\n\n onMouseLeave(): void {\n this.opacity.set(0);\n this.visible.set(false);\n }\n\n private adjustPosition(): void {\n setTimeout(() => {\n const tooltipEl = this.tooltipBox()?.nativeElement;\n if (!tooltipEl) return;\n const rect = tooltipEl.getBoundingClientRect();\n\n this.positionClass.set(getTooltipPosition(this.position(), rect));\n this.opacity.set(0.9);\n });\n }\n}\n","<ng-content></ng-content>\n@if (visible()) {\n <div #tooltipBox [class]=\"'dsv-tooltip ' + positionClass()\" [style.opacity]=\"opacity()\">\n {{ text() }}\n </div>\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-tooltip.mjs","sources":["../../../projects/ng-dsv/ds/tooltip/dto/tooltip.dto.ts","../../../projects/ng-dsv/ds/tooltip/utils/tooltip.utils.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.html","../../../projects/ng-dsv/ds/tooltip/ng-vagabond-lab-ng-dsv-ds-tooltip.ts"],"sourcesContent":["export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport enum TooltipPositionEnum {\n TOP = 'top',\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n}\n","import { TooltipPosition, TooltipPositionEnum } from '../dto/tooltip.dto';\n\nexport const POSITION_MAX_TOP = 50;\nexport const POSITION_MAX_BOTTOM = 50;\nexport const POSITION_MAX_LEFT = 50;\nexport const POSITION_MAX_RIGHT = 50;\n\nexport const getTooltipPosition = (\n position: TooltipPosition,\n rect: DOMRect,\n): TooltipPositionEnum | TooltipPosition => {\n if (position === TooltipPositionEnum.TOP && rect.top < POSITION_MAX_TOP) {\n return TooltipPositionEnum.BOTTOM;\n } else if (\n position === TooltipPositionEnum.BOTTOM &&\n rect.bottom > window.innerHeight - POSITION_MAX_BOTTOM\n ) {\n return TooltipPositionEnum.TOP;\n } else if (position === TooltipPositionEnum.LEFT && rect.left < POSITION_MAX_LEFT) {\n return TooltipPositionEnum.RIGHT;\n } else if (\n position === TooltipPositionEnum.RIGHT &&\n rect.right > window.innerWidth - POSITION_MAX_RIGHT\n ) {\n return TooltipPositionEnum.LEFT;\n }\n return position;\n};\n","import { Component, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { TooltipPosition, TooltipPositionEnum } from '../dto/tooltip.dto';\nimport { getTooltipPosition } from '../utils/tooltip.utils';\n@Component({\n selector: 'dsv-tooltip',\n imports: [],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n host: {\n '(window:resize)': 'onResize()',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class DsvTooltipComponent {\n readonly text = input<string>('');\n readonly position = input<TooltipPosition>(TooltipPositionEnum.TOP);\n\n readonly tooltipBox = viewChild<ElementRef>('tooltipBox');\n\n readonly visible = signal<boolean>(false);\n readonly opacity = signal<number>(0);\n\n readonly positionClass = signal<TooltipPosition>(TooltipPositionEnum.TOP);\n\n onResize(): void {\n this.adjustPosition();\n }\n\n onMouseEnter(): void {\n this.visible.set(true);\n this.adjustPosition();\n }\n\n onMouseLeave(): void {\n this.opacity.set(0);\n this.visible.set(false);\n }\n\n private adjustPosition(): void {\n setTimeout(() => {\n const tooltipEl = this.tooltipBox()?.nativeElement;\n if (!tooltipEl) return;\n const rect = tooltipEl.getBoundingClientRect();\n\n this.positionClass.set(getTooltipPosition(this.position(), rect));\n this.opacity.set(0.9);\n });\n }\n}\n","<ng-content></ng-content>\n@if (visible()) {\n <div #tooltipBox [class]=\"'dsv-tooltip ' + positionClass()\" [style.opacity]=\"opacity()\">\n {{ text() }}\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -8,8 +8,10 @@ class EnvironmentService {
8
8
  httpClient = inject(HttpClient);
9
9
  transferState = inject(TransferState);
10
10
  platformService = inject(PlatformService);
11
- config = signal(undefined, ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
12
- baseUrl = signal('', ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
11
+ config = signal(undefined, /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
13
+ baseUrl = signal('', /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "baseUrl" }] : /* istanbul ignore next */ []));
13
15
  loadEnv() {
14
16
  const key = makeStateKey('config.json');
15
17
  if (this.transferState.hasKey(key)) {
@@ -29,10 +31,10 @@ class EnvironmentService {
29
31
  console.log = () => { };
30
32
  }
31
33
  }
32
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
33
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EnvironmentService, providedIn: 'root' });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: EnvironmentService, providedIn: 'root' });
34
36
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EnvironmentService, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: EnvironmentService, decorators: [{
36
38
  type: Injectable,
37
39
  args: [{ providedIn: 'root' }]
38
40
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-environment.mjs","sources":["../../../projects/ng-dsv/environment/service/environment.service.ts","../../../projects/ng-dsv/environment/ng-vagabond-lab-ng-dsv-environment.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, makeStateKey, signal, TransferState } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { lastValueFrom, tap } from 'rxjs';\nimport { EnvironmentDto } from '../public-api';\n\n@Injectable({ providedIn: 'root' })\nexport class EnvironmentService {\n readonly httpClient = inject(HttpClient);\n readonly transferState = inject(TransferState);\n readonly platformService = inject(PlatformService);\n\n readonly config = signal<EnvironmentDto | undefined>(undefined);\n readonly baseUrl = signal<string>('');\n\n loadEnv(): Promise<EnvironmentDto> {\n const key = makeStateKey<EnvironmentDto>('config.json');\n if (this.transferState.hasKey(key)) {\n const config = this.transferState.get<EnvironmentDto>(key, {} as EnvironmentDto);\n this.transferState.remove(key);\n this.initConfig(config);\n return Promise.resolve(config);\n }\n\n return lastValueFrom(\n this.httpClient.get<EnvironmentDto>('./config.json').pipe(\n tap((config) => {\n this.transferState.set(key, config);\n this.initConfig(config);\n }),\n ),\n );\n }\n\n initConfig(config: EnvironmentDto) {\n this.config.set(config);\n if (config.PROD) {\n console.log = () => {};\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAOa,kBAAkB,CAAA;AAClB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,IAAA,MAAM,GAAG,MAAM,CAA6B,SAAS,6EAAC;AACtD,IAAA,OAAO,GAAG,MAAM,CAAS,EAAE,8EAAC;IAErC,OAAO,GAAA;AACH,QAAA,MAAM,GAAG,GAAG,YAAY,CAAiB,aAAa,CAAC;QACvD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAiB,GAAG,EAAE,EAAoB,CAAC;AAChF,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC;AAEA,QAAA,OAAO,aAAa,CAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,eAAe,CAAC,CAAC,IAAI,CACrD,GAAG,CAAC,CAAC,MAAM,KAAI;YACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3B,CAAC,CAAC,CACL,CACJ;IACL;AAEA,IAAA,UAAU,CAAC,MAAsB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,GAAG,MAAK,EAAE,CAAC;QAC1B;IACJ;wGAhCS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-environment.mjs","sources":["../../../projects/ng-dsv/environment/service/environment.service.ts","../../../projects/ng-dsv/environment/ng-vagabond-lab-ng-dsv-environment.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, makeStateKey, signal, TransferState } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { lastValueFrom, tap } from 'rxjs';\nimport { EnvironmentDto } from '../public-api';\n\n@Injectable({ providedIn: 'root' })\nexport class EnvironmentService {\n readonly httpClient = inject(HttpClient);\n readonly transferState = inject(TransferState);\n readonly platformService = inject(PlatformService);\n\n readonly config = signal<EnvironmentDto | undefined>(undefined);\n readonly baseUrl = signal<string>('');\n\n loadEnv(): Promise<EnvironmentDto> {\n const key = makeStateKey<EnvironmentDto>('config.json');\n if (this.transferState.hasKey(key)) {\n const config = this.transferState.get<EnvironmentDto>(key, {} as EnvironmentDto);\n this.transferState.remove(key);\n this.initConfig(config);\n return Promise.resolve(config);\n }\n\n return lastValueFrom(\n this.httpClient.get<EnvironmentDto>('./config.json').pipe(\n tap((config) => {\n this.transferState.set(key, config);\n this.initConfig(config);\n }),\n ),\n );\n }\n\n initConfig(config: EnvironmentDto) {\n this.config.set(config);\n if (config.PROD) {\n console.log = () => {};\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAOa,kBAAkB,CAAA;AAClB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAEzC,MAAM,GAAG,MAAM,CAA6B,SAAS;+EAAC;IACtD,OAAO,GAAG,MAAM,CAAS,EAAE;gFAAC;IAErC,OAAO,GAAA;AACH,QAAA,MAAM,GAAG,GAAG,YAAY,CAAiB,aAAa,CAAC;QACvD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAiB,GAAG,EAAE,EAAoB,CAAC;AAChF,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC;AAEA,QAAA,OAAO,aAAa,CAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,eAAe,CAAC,CAAC,IAAI,CACrD,GAAG,CAAC,CAAC,MAAM,KAAI;YACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3B,CAAC,CAAC,CACL,CACJ;IACL;AAEA,IAAA,UAAU,CAAC,MAAsB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,GAAG,MAAK,EAAE,CAAC;QAC1B;IACJ;uGAhCS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;AAEG;;;;"}
@@ -14,8 +14,10 @@ class I18nService {
14
14
  platformService = inject(PlatformService);
15
15
  storageService = inject(StorageService);
16
16
  document = inject(DOCUMENT);
17
- currentLanguage = signal('', ...(ngDevMode ? [{ debugName: "currentLanguage" }] : /* istanbul ignore next */ []));
18
- hasChange = signal(false, ...(ngDevMode ? [{ debugName: "hasChange" }] : /* istanbul ignore next */ []));
17
+ currentLanguage = signal('', /* @ts-ignore */
18
+ ...(ngDevMode ? [{ debugName: "currentLanguage" }] : /* istanbul ignore next */ []));
19
+ hasChange = signal(false, /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "hasChange" }] : /* istanbul ignore next */ []));
19
21
  constructor() {
20
22
  this.translateService.addLangs(this.SUPPORTED_LANGUAGES);
21
23
  this.translateService.setFallbackLang(this.DEFAULT_LANGUAGE);
@@ -50,10 +52,10 @@ class I18nService {
50
52
  .find((l) => this.SUPPORTED_LANGUAGES.includes(l));
51
53
  return match ?? this.DEFAULT_LANGUAGE;
52
54
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
54
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: I18nService, providedIn: 'root' });
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
56
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: I18nService, providedIn: 'root' });
55
57
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: I18nService, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: I18nService, decorators: [{
57
59
  type: Injectable,
58
60
  args: [{
59
61
  providedIn: 'root',
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-i18n.mjs","sources":["../../../projects/ng-dsv/i18n/service/i18n.service.ts","../../../projects/ng-dsv/i18n/ng-vagabond-lab-ng-dsv-i18n.ts"],"sourcesContent":["import { DOCUMENT, inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n readonly LANGUAGE_FR = 'fr';\n readonly LANGUAGE_EN = 'en';\n readonly DEFAULT_LANGUAGE = this.LANGUAGE_FR;\n readonly SUPPORTED_LANGUAGES = [this.LANGUAGE_FR, this.LANGUAGE_EN];\n readonly LANGUAGE_STORAGE_NAME = 'language';\n\n readonly translateService = inject(TranslateService);\n readonly platformService = inject(PlatformService);\n readonly storageService = inject(StorageService);\n readonly document = inject(DOCUMENT);\n\n readonly currentLanguage = signal<string>('');\n readonly hasChange = signal<boolean>(false);\n\n constructor() {\n this.translateService.addLangs(this.SUPPORTED_LANGUAGES);\n this.translateService.setFallbackLang(this.DEFAULT_LANGUAGE);\n\n const storageLanguage = this.storageService.getItem<string>(this.LANGUAGE_STORAGE_NAME);\n const detectedLang = storageLanguage ?? this.detectLanguage();\n this.useLanguage(detectedLang);\n }\n\n initLanguage(fr: TranslationObject, en?: TranslationObject) {\n this.translateService.setTranslation(this.LANGUAGE_FR, fr);\n en && this.translateService.setTranslation(this.LANGUAGE_EN, en);\n }\n\n useLanguage(language: string) {\n this.storageService.setItem(this.LANGUAGE_STORAGE_NAME, language);\n this.translateService.use(language);\n this.currentLanguage.set(language);\n this.document.documentElement.lang = language;\n }\n\n switchLanguage(language: string) {\n this.useLanguage(language);\n this.hasChange.set(true);\n }\n\n private detectLanguage(): string {\n if (this.platformService.isPlatformBrowser()) {\n return this.detectBrowserLanguage();\n }\n return this.DEFAULT_LANGUAGE;\n }\n\n private detectBrowserLanguage(): string {\n const browserLangs = navigator.languages?.length ? navigator.languages : [navigator.language];\n\n const match = browserLangs\n .map((l) => l.substring(0, 2).toLowerCase())\n .find((l) => this.SUPPORTED_LANGUAGES.includes(l));\n\n return match ?? this.DEFAULT_LANGUAGE;\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-i18n.mjs","sources":["../../../projects/ng-dsv/i18n/service/i18n.service.ts","../../../projects/ng-dsv/i18n/ng-vagabond-lab-ng-dsv-i18n.ts"],"sourcesContent":["import { DOCUMENT, inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n readonly LANGUAGE_FR = 'fr';\n readonly LANGUAGE_EN = 'en';\n readonly DEFAULT_LANGUAGE = this.LANGUAGE_FR;\n readonly SUPPORTED_LANGUAGES = [this.LANGUAGE_FR, this.LANGUAGE_EN];\n readonly LANGUAGE_STORAGE_NAME = 'language';\n\n readonly translateService = inject(TranslateService);\n readonly platformService = inject(PlatformService);\n readonly storageService = inject(StorageService);\n readonly document = inject(DOCUMENT);\n\n readonly currentLanguage = signal<string>('');\n readonly hasChange = signal<boolean>(false);\n\n constructor() {\n this.translateService.addLangs(this.SUPPORTED_LANGUAGES);\n this.translateService.setFallbackLang(this.DEFAULT_LANGUAGE);\n\n const storageLanguage = this.storageService.getItem<string>(this.LANGUAGE_STORAGE_NAME);\n const detectedLang = storageLanguage ?? this.detectLanguage();\n this.useLanguage(detectedLang);\n }\n\n initLanguage(fr: TranslationObject, en?: TranslationObject) {\n this.translateService.setTranslation(this.LANGUAGE_FR, fr);\n en && this.translateService.setTranslation(this.LANGUAGE_EN, en);\n }\n\n useLanguage(language: string) {\n this.storageService.setItem(this.LANGUAGE_STORAGE_NAME, language);\n this.translateService.use(language);\n this.currentLanguage.set(language);\n this.document.documentElement.lang = language;\n }\n\n switchLanguage(language: string) {\n this.useLanguage(language);\n this.hasChange.set(true);\n }\n\n private detectLanguage(): string {\n if (this.platformService.isPlatformBrowser()) {\n return this.detectBrowserLanguage();\n }\n return this.DEFAULT_LANGUAGE;\n }\n\n private detectBrowserLanguage(): string {\n const browserLangs = navigator.languages?.length ? navigator.languages : [navigator.language];\n\n const match = browserLangs\n .map((l) => l.substring(0, 2).toLowerCase())\n .find((l) => this.SUPPORTED_LANGUAGES.includes(l));\n\n return match ?? this.DEFAULT_LANGUAGE;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -18,11 +18,16 @@ import { DsvTableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';
18
18
 
19
19
  class AdminService {
20
20
  apiService = inject(ApiService);
21
- tabs = signal({}, ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
22
- datas = signal({}, ...(ngDevMode ? [{ debugName: "datas" }] : /* istanbul ignore next */ []));
23
- data = signal({}, ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
24
- page = signal({}, ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
25
- search = signal({}, ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
21
+ tabs = signal({}, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
23
+ datas = signal({}, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "datas" }] : /* istanbul ignore next */ []));
25
+ data = signal({}, /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
27
+ page = signal({}, /* @ts-ignore */
28
+ ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
29
+ search = signal({}, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
26
31
  get(endpoint, fields, search, page = 0, max = 10, callback) {
27
32
  const url = '/' +
28
33
  endpoint +
@@ -58,10 +63,10 @@ class AdminService {
58
63
  this.data.set(data);
59
64
  });
60
65
  }
61
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
62
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminService, providedIn: 'root' });
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminService, providedIn: 'root' });
63
68
  }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminService, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminService, decorators: [{
65
70
  type: Injectable,
66
71
  args: [{
67
72
  providedIn: 'root',
@@ -71,9 +76,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
71
76
  class AdminSearchModalContainer extends BaseContainer {
72
77
  modalService = inject(ModalService);
73
78
  adminService = inject(AdminService);
74
- m2em = input.required(...(ngDevMode ? [{ debugName: "m2em" }] : /* istanbul ignore next */ []));
75
- search = signal('', ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
76
- datas = signal([], ...(ngDevMode ? [{ debugName: "datas" }] : /* istanbul ignore next */ []));
79
+ m2em = input.required(/* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "m2em" }] : /* istanbul ignore next */ []));
81
+ search = signal('', /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
83
+ datas = signal([], /* @ts-ignore */
84
+ ...(ngDevMode ? [{ debugName: "datas" }] : /* istanbul ignore next */ []));
77
85
  callback = output();
78
86
  constructor() {
79
87
  super();
@@ -96,10 +104,10 @@ class AdminSearchModalContainer extends BaseContainer {
96
104
  this.callback.emit(data);
97
105
  this.modalService.close('m2m');
98
106
  };
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
100
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", 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.0.1", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", 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"] }] });
101
109
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
103
111
  type: Component,
104
112
  args: [{ selector: 'dsv-admin-search-modal', imports: [
105
113
  DsvItemComponent,
@@ -110,9 +118,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
110
118
  }], ctorParameters: () => [], propDecorators: { m2em: [{ type: i0.Input, args: [{ isSignal: true, alias: "m2em", required: true }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
111
119
 
112
120
  class AdminFormComponent extends DsvBaseFormReactiveComponent {
113
- urlBack = input(...(ngDevMode ? [undefined, { debugName: "urlBack" }] : /* istanbul ignore next */ []));
114
- data = input.required(...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
115
- formConf = input.required(...(ngDevMode ? [{ debugName: "formConf" }] : /* istanbul ignore next */ []));
121
+ urlBack = input(/* @ts-ignore */
122
+ ...(ngDevMode ? [undefined, { debugName: "urlBack" }] : /* istanbul ignore next */ []));
123
+ data = input.required(/* @ts-ignore */
124
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
125
+ formConf = input.required(/* @ts-ignore */
126
+ ...(ngDevMode ? [{ debugName: "formConf" }] : /* istanbul ignore next */ []));
116
127
  callback = output();
117
128
  constructor() {
118
129
  super();
@@ -149,10 +160,10 @@ class AdminFormComponent extends DsvBaseFormReactiveComponent {
149
160
  this.form.value[name].push(data);
150
161
  }
151
162
  };
152
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", 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.0.1", ngImport: i0, type: AdminFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", 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"] }] });
154
165
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminFormComponent, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminFormComponent, decorators: [{
156
167
  type: Component,
157
168
  args: [{ selector: 'dsv-admin-form', imports: [
158
169
  ReactiveFormsModule,
@@ -167,9 +178,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
167
178
  class AdminFormContainer extends BaseRouteContainer {
168
179
  adminService = inject(AdminService);
169
180
  platformService = inject(PlatformService);
170
- tabs = signal([], ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
171
- tab = signal('user', ...(ngDevMode ? [{ debugName: "tab" }] : /* istanbul ignore next */ []));
172
- tabConfig = signal(undefined, ...(ngDevMode ? [{ debugName: "tabConfig" }] : /* istanbul ignore next */ []));
181
+ tabs = signal([], /* @ts-ignore */
182
+ ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
183
+ tab = signal('user', /* @ts-ignore */
184
+ ...(ngDevMode ? [{ debugName: "tab" }] : /* istanbul ignore next */ []));
185
+ tabConfig = signal(undefined, /* @ts-ignore */
186
+ ...(ngDevMode ? [{ debugName: "tabConfig" }] : /* istanbul ignore next */ []));
173
187
  constructor() {
174
188
  super();
175
189
  effect(() => {
@@ -202,10 +216,10 @@ class AdminFormContainer extends BaseRouteContainer {
202
216
  this.adminService.post(this.tabConfig()?.name, dataFusion);
203
217
  }
204
218
  }
205
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminFormContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", 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.0.1", ngImport: i0, type: AdminFormContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", 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"] }] });
207
221
  }
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminFormContainer, decorators: [{
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminFormContainer, decorators: [{
209
223
  type: Component,
210
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"] }]
211
225
  }], ctorParameters: () => [] });
@@ -213,10 +227,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
213
227
  class AdminSearchContainer extends BaseRouteContainer {
214
228
  adminService = inject(AdminService);
215
229
  platformService = inject(PlatformService);
216
- tabs = signal([], ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
217
- tab = signal('user', ...(ngDevMode ? [{ debugName: "tab" }] : /* istanbul ignore next */ []));
218
- tabConfig = signal(undefined, ...(ngDevMode ? [{ debugName: "tabConfig" }] : /* istanbul ignore next */ []));
219
- load = signal({}, ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
230
+ tabs = signal([], /* @ts-ignore */
231
+ ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
232
+ tab = signal('user', /* @ts-ignore */
233
+ ...(ngDevMode ? [{ debugName: "tab" }] : /* istanbul ignore next */ []));
234
+ tabConfig = signal(undefined, /* @ts-ignore */
235
+ ...(ngDevMode ? [{ debugName: "tabConfig" }] : /* istanbul ignore next */ []));
236
+ load = signal({}, /* @ts-ignore */
237
+ ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
220
238
  constructor() {
221
239
  super();
222
240
  effect(() => {
@@ -252,10 +270,10 @@ class AdminSearchContainer extends BaseRouteContainer {
252
270
  this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name]: search }));
253
271
  this.adminService.get(this.tabConfig()?.name, this.tabConfig()?.findByChamps + '>>' + this.tabConfig()?.sortBy, search, page, this.adminService.tabs()?.max);
254
272
  }
255
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminSearchContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
256
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", 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", "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.0.1", ngImport: i0, type: AdminSearchContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
274
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", 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"] }] });
257
275
  }
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdminSearchContainer, decorators: [{
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AdminSearchContainer, decorators: [{
259
277
  type: Component,
260
278
  args: [{ selector: 'dsv-admin-search', imports: [
261
279
  DsvCardComponent,