@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.
- package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +16 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +32 -22
- package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +29 -25
- package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +11 -7
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +26 -16
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +16 -14
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +22 -14
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +35 -22
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +70 -47
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +81 -54
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +11 -7
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +19 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +9 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +22 -17
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +24 -18
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +46 -29
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +33 -21
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +14 -10
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +11 -10
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +16 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +7 -5
- package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +51 -33
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +21 -15
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +5 -4
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +9 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +13 -11
- package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +15 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +38 -28
- package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
- package/package.json +1 -1
- 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([],
|
|
11
|
-
|
|
12
|
-
|
|
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: "
|
|
64
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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,
|
|
76
|
-
|
|
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: "
|
|
87
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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":";;;;;AAGO,MAAM,UAAU,GAAG;AACnB,MAAM,gBAAgB,GAAG;AACzB,MAAM,gBAAgB,GAAG;MAKnB,YAAY,CAAA;
|
|
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('',
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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: "
|
|
63
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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":";;;IAEY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;ACAxB,MAAM,gBAAgB,GAAG;AACzB,MAAM,mBAAmB,GAAG;AAC5B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,kBAAkB,GAAG;MAErB,kBAAkB,GAAG,CAC9B,QAAyB,EACzB,IAAa,KAC0B;AACvC,IAAA,IAAI,QAAQ,KAAK,mBAAmB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,gBAAgB,EAAE;QACrE,OAAO,mBAAmB,CAAC,MAAM;IACrC;AAAO,SAAA,IACH,QAAQ,KAAK,mBAAmB,CAAC,MAAM;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,mBAAmB,EACxD;QACE,OAAO,mBAAmB,CAAC,GAAG;IAClC;AAAO,SAAA,IAAI,QAAQ,KAAK,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,iBAAiB,EAAE;QAC/E,OAAO,mBAAmB,CAAC,KAAK;IACpC;AAAO,SAAA,IACH,QAAQ,KAAK,mBAAmB,CAAC,KAAK;QACtC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,kBAAkB,EACrD;QACE,OAAO,mBAAmB,CAAC,IAAI;IACnC;AACA,IAAA,OAAO,QAAQ;AACnB;;MCba,mBAAmB,CAAA;
|
|
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,
|
|
12
|
-
|
|
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: "
|
|
33
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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;
|
|
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('',
|
|
18
|
-
|
|
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: "
|
|
54
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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":";;;;;;MAQa,WAAW,CAAA;IACX,WAAW,GAAG,IAAI;IAClB,WAAW,GAAG,IAAI;AAClB,IAAA,gBAAgB,GAAG,IAAI,CAAC,WAAW;IACnC,mBAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;IAC1D,qBAAqB,GAAG,UAAU;AAElC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;
|
|
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":";;;;;;MAQa,WAAW,CAAA;IACX,WAAW,GAAG,IAAI;IAClB,WAAW,GAAG,IAAI;AAClB,IAAA,gBAAgB,GAAG,IAAI,CAAC,WAAW;IACnC,mBAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;IAC1D,qBAAqB,GAAG,UAAU;AAElC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE3B,eAAe,GAAG,MAAM,CAAS,EAAE;wFAAC;IACpC,SAAS,GAAG,MAAM,CAAU,KAAK;kFAAC;AAE3C,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAE5D,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAS,IAAI,CAAC,qBAAqB,CAAC;QACvF,MAAM,YAAY,GAAG,eAAe,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IAClC;IAEA,YAAY,CAAC,EAAqB,EAAE,EAAsB,EAAA;QACtD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC1D,QAAA,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACpE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;QACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC;AACjE,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,GAAG,QAAQ;IACjD;AAEA,IAAA,cAAc,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;QACvC;QACA,OAAO,IAAI,CAAC,gBAAgB;IAChC;IAEQ,qBAAqB,GAAA;QACzB,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;QAE7F,MAAM,KAAK,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;AAC1C,aAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEtD,QAAA,OAAO,KAAK,IAAI,IAAI,CAAC,gBAAgB;IACzC;uGAxDS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFR,MAAM,EAAA,CAAA;;2FAET,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;ACPD;;AAEG;;;;"}
|
|
@@ -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({},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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: "
|
|
62
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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(
|
|
75
|
-
|
|
76
|
-
|
|
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: "
|
|
100
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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(
|
|
114
|
-
|
|
115
|
-
|
|
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: "
|
|
153
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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([],
|
|
171
|
-
|
|
172
|
-
|
|
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: "
|
|
206
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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([],
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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: "
|
|
256
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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,
|