@ng-vagabond-lab/ng-dsv 0.2.39 → 0.2.41
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/assets/global.scss +1 -0
- package/assets/style.scss +25 -2
- package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +13 -13
- package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +24 -24
- package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +12 -12
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +9 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +24 -24
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +27 -27
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +12 -12
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-markdown.mjs +35 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-markdown.mjs.map +1 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +12 -12
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +12 -12
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +9 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +9 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +6 -6
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +15 -15
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +9 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-D6wXpIFA.mjs +81 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-D6wXpIFA.mjs.map +1 -0
- package/fesm2022/{ng-vagabond-lab-ng-dsv-module-news-news-list.container-CkUQEI5Q.mjs → ng-vagabond-lab-ng-dsv-module-news-news-list.container-PtCVILsF.mjs} +19 -10
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.container-PtCVILsF.mjs.map +1 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-MB7ocRqE.mjs +38 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-MB7ocRqE.mjs.map +1 -0
- package/fesm2022/{ng-vagabond-lab-ng-dsv-module-news-news.container-Ce60PdDH.mjs → ng-vagabond-lab-ng-dsv-module-news-news.container-D6fR0O72.mjs} +16 -13
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news.container-D6fR0O72.mjs.map +1 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news.mjs +4 -4
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-notification.mjs +15 -15
- package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +3 -3
- package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +9 -9
- package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +7 -4
- package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs.map +1 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +18 -18
- package/package.json +5 -1
- package/types/ng-vagabond-lab-ng-dsv-base-service.d.ts +1 -1
- package/types/ng-vagabond-lab-ng-dsv-base.d.ts +1 -1
- package/types/ng-vagabond-lab-ng-dsv-ds-markdown.d.ts +12 -0
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-CGfhZFgr.mjs +0 -62
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-CGfhZFgr.mjs.map +0 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.container-CkUQEI5Q.mjs.map +0 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-CVVSV7se.mjs +0 -65
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-CVVSV7se.mjs.map +0 -1
- package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news.container-Ce60PdDH.mjs.map +0 -1
|
@@ -33,10 +33,10 @@ class DsvTableComponent {
|
|
|
33
33
|
this.showDatas.set(showDatas);
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
37
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DsvTableComponent, isStandalone: true, selector: "dsv-table", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: true, transformFunction: null }, cells: { classPropertyName: "cells", publicName: "cells", isSignal: true, isRequired: true, transformFunction: null }, datas: { classPropertyName: "datas", publicName: "datas", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<table>\n <thead>\n <tr>\n @for (cell of cells(); track cell.name) {\n <th [style.maxWidth]=\"cell.width\">{{ cell.label | translate }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (data of showDatas(); track $index; let index = $index) {\n <tr>\n @for (cell of cells(); track cell.name; let indexData = $index) {\n <td\n [class.cursor]=\"links()[index]\"\n [routerLink]=\"links()[index]\"\n [style.maxWidth]=\"cell.width\"\n >\n {{ data[indexData + 1] }}\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", styles: [":host{overflow:auto;scrollbar-width:thin;width:100%}:host table{table-layout:fixed;min-width:100%;display:table;border-collapse:collapse;border-spacing:0px}:host table thead{display:table-header-group}:host table thead tr{background-color:var(--background-table-tr);color:var(--background-table-tr-text);border:1px solid var(--border);display:table-row;vertical-align:middle;outline:0px;height:32px}:host table thead tr th{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:500;font-size:.875rem;line-height:1.5rem;letter-spacing:.01071em;display:table-cell;vertical-align:inherit;border-bottom:1px solid var(--border);text-align:left;padding:6px 16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host table tbody{display:table-row-group;background-color:var(--background-card)}:host table tbody tr{display:table-row;vertical-align:middle;outline:0px;height:32px}:host table tbody tr td{font-weight:400;font-size:.875rem;line-height:1.43;letter-spacing:.01071em;display:table-cell;vertical-align:inherit;border-bottom:1px solid var(--border);text-align:left;padding:6px 16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}:host table tbody tr td.cursor{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvTableComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ selector: 'dsv-table', imports: [RouterLink, TranslatePipe], template: "<table>\n <thead>\n <tr>\n @for (cell of cells(); track cell.name) {\n <th [style.maxWidth]=\"cell.width\">{{ cell.label | translate }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (data of showDatas(); track $index; let index = $index) {\n <tr>\n @for (cell of cells(); track cell.name; let indexData = $index) {\n <td\n [class.cursor]=\"links()[index]\"\n [routerLink]=\"links()[index]\"\n [style.maxWidth]=\"cell.width\"\n >\n {{ data[indexData + 1] }}\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", styles: [":host{overflow:auto;scrollbar-width:thin;width:100%}:host table{table-layout:fixed;min-width:100%;display:table;border-collapse:collapse;border-spacing:0px}:host table thead{display:table-header-group}:host table thead tr{background-color:var(--background-table-tr);color:var(--background-table-tr-text);border:1px solid var(--border);display:table-row;vertical-align:middle;outline:0px;height:32px}:host table thead tr th{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:500;font-size:.875rem;line-height:1.5rem;letter-spacing:.01071em;display:table-cell;vertical-align:inherit;border-bottom:1px solid var(--border);text-align:left;padding:6px 16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host table tbody{display:table-row-group;background-color:var(--background-card)}:host table tbody tr{display:table-row;vertical-align:middle;outline:0px;height:32px}:host table tbody tr td{font-weight:400;font-size:.875rem;line-height:1.43;letter-spacing:.01071em;display:table-cell;vertical-align:inherit;border-bottom:1px solid var(--border);text-align:left;padding:6px 16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}:host table tbody tr td.cursor{cursor:pointer}\n"] }]
|
|
42
42
|
}], ctorParameters: () => [], propDecorators: { url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: true }] }], cells: [{ type: i0.Input, args: [{ isSignal: true, alias: "cells", required: true }] }], datas: [{ type: i0.Input, args: [{ isSignal: true, alias: "datas", required: true }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
|
|
@@ -13,19 +13,19 @@ class DsvThemeSwitchComponent {
|
|
|
13
13
|
isLightMode() {
|
|
14
14
|
return this.themeService.themeMode() === 'light';
|
|
15
15
|
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
17
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvThemeSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: DsvThemeSwitchComponent, isStandalone: true, selector: "dsv-theme-switch", ngImport: i0, template: "<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvThemeSwitchComponent, decorators: [{
|
|
20
20
|
type: Component,
|
|
21
21
|
args: [{ selector: 'dsv-theme-switch', imports: [CommonModule, DsvButtonComponent], template: "<dsv-button\n width=\"large\"\n color=\"inherit\"\n size=\"small\"\n [noHover]=\"true\"\n (callback)=\"switchTheme()\"\n [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n" }]
|
|
22
22
|
}] });
|
|
23
23
|
|
|
24
24
|
class DsvThemeComponent {
|
|
25
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
26
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvThemeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: DsvThemeComponent, isStandalone: true, selector: "dsv-theme", ngImport: i0, template: "<ng-content></ng-content>\n<div id=\"collapse\"></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;--scroll-gap: 15px;background-color:var(--background);color:var(--text)}:host #collapse{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:#0009}:host #collapse.show{display:inline}:host-context(body.light){--button-text: #fcfbfb;--background: #ffffff;--background-card: #ffffff;--background-card-light: #e9e9e9;--background-card-transparent: #ffffffbc;--background-header: #dcdcdc;--background-table-tr: #000000;--background-table-tr-text: var(--background-card);--scrollbar: #757575 #f5f5f5;--subtitle: #5a5959;--border: #cbcbcb;--text: #000000;--primary: #007bff;--secondary: #504f4f;--success: #0da12f;--info: #1c7fc1;--warning: #a2821f;--error: #ca2535}:host-context(body.dark){--button-text: #000000;--background: #151515;--background-card: #151515;--background-card-light: #2e2e2e;--background-card-transparent: #090909bc;--background-header: #1f1f1f;--background-table-tr: #DCDCDC;--background-table-tr-text: var(--background-card);--scrollbar: #a9a9a9 #383838;--subtitle: #ffffffb3;--border: #606060;--text: #ffffff;--primary: #007bff;--secondary: #a9a9a9;--success: #48de6b;--info: #106694;--warning: #ac8a24;--error: #f45766}\n"] });
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvThemeComponent, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
30
|
args: [{ selector: 'dsv-theme', template: "<ng-content></ng-content>\n<div id=\"collapse\"></div>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;--scroll-gap: 15px;background-color:var(--background);color:var(--text)}:host #collapse{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:#0009}:host #collapse.show{display:inline}:host-context(body.light){--button-text: #fcfbfb;--background: #ffffff;--background-card: #ffffff;--background-card-light: #e9e9e9;--background-card-transparent: #ffffffbc;--background-header: #dcdcdc;--background-table-tr: #000000;--background-table-tr-text: var(--background-card);--scrollbar: #757575 #f5f5f5;--subtitle: #5a5959;--border: #cbcbcb;--text: #000000;--primary: #007bff;--secondary: #504f4f;--success: #0da12f;--info: #1c7fc1;--warning: #a2821f;--error: #ca2535}:host-context(body.dark){--button-text: #000000;--background: #151515;--background-card: #151515;--background-card-light: #2e2e2e;--background-card-transparent: #090909bc;--background-header: #1f1f1f;--background-table-tr: #DCDCDC;--background-table-tr-text: var(--background-card);--scrollbar: #a9a9a9 #383838;--subtitle: #ffffffb3;--border: #606060;--text: #ffffff;--primary: #007bff;--secondary: #a9a9a9;--success: #48de6b;--info: #106694;--warning: #ac8a24;--error: #f45766}\n"] }]
|
|
31
31
|
}] });
|
|
@@ -51,10 +51,10 @@ class ThemeService {
|
|
|
51
51
|
html.classList.add(newMode);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
55
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThemeService, providedIn: 'root' });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThemeService, decorators: [{
|
|
58
58
|
type: Injectable,
|
|
59
59
|
args: [{
|
|
60
60
|
providedIn: 'root',
|
|
@@ -63,10 +63,10 @@ class ToastService {
|
|
|
63
63
|
removeToastFromQueue(uuid) {
|
|
64
64
|
this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
|
|
65
65
|
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
67
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
66
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ToastService, providedIn: 'root' });
|
|
68
68
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ToastService, decorators: [{
|
|
70
70
|
type: Injectable,
|
|
71
71
|
args: [{
|
|
72
72
|
providedIn: 'root',
|
|
@@ -88,10 +88,10 @@ class DsvToastComponent {
|
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
92
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DsvToastComponent, isStandalone: true, selector: "dsv-toast", inputs: { duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [class.open]=\"toast.open\"\n [class.close]=\"!toast.open\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast)\">X</button>\n @if (toast.type === 'success') {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === 'info') {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === 'warning') {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === 'error') {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.remainingDuration! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:200;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:200px;max-width:200px;padding:10px 32px 10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;background-color:var(--background-card);color:var(--text);opacity:0;transform:translate(100%);transition:transform .5s ease-out,opacity .5s ease-out}.dsv-toast-container .dsv-toast.open{animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.close{animation:slideOutRight .5s ease-out forwards}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:13px;right:10px;font-size:.75rem;border:0;background:inherit;color:var(--text);cursor:pointer}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid var(--border)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
93
93
|
}
|
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvToastComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
96
96
|
args: [{ selector: 'dsv-toast', imports: [CommonModule], template: "<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [class.open]=\"toast.open\"\n [class.close]=\"!toast.open\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button class=\"close-button\" type=\"button\" (click)=\"toastService.closeToast(toast)\">X</button>\n @if (toast.type === 'success') {\n <i class=\"ri-check-fill\"></i>\n } @else if (toast.type === 'info') {\n <i class=\"ri-information-2-line\"></i>\n } @else if (toast.type === 'warning') {\n <i class=\"ri-alert-line\"></i>\n } @else if (toast.type === 'error') {\n <i class=\"ri-close-line\"></i>\n }\n\n {{ toast.text }}\n <div class=\"loader-container\">\n <div\n class=\"loader\"\n [style.width]=\"(toast.remainingDuration! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:200;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:200px;max-width:200px;padding:10px 32px 10px 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;background-color:var(--background-card);color:var(--text);opacity:0;transform:translate(100%);transition:transform .5s ease-out,opacity .5s ease-out}.dsv-toast-container .dsv-toast.open{animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.dsv-toast-container .dsv-toast.close{animation:slideOutRight .5s ease-out forwards}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.dsv-toast-container .dsv-toast.success{border-left:4px solid var(--success)}.dsv-toast-container .dsv-toast.success i{color:var(--success);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.info{border-left:4px solid var(--info)}.dsv-toast-container .dsv-toast.info i{color:var(--info);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.warning{border-left:4px solid var(--warning)}.dsv-toast-container .dsv-toast.warning i{color:var(--warning);font-size:1.2rem!important}.dsv-toast-container .dsv-toast.error{border-left:4px solid var(--error)}.dsv-toast-container .dsv-toast.error i{color:var(--error);font-size:1.2rem!important}.dsv-toast-container .dsv-toast .close-button{position:absolute;top:13px;right:10px;font-size:.75rem;border:0;background:inherit;color:var(--text);cursor:pointer}.dsv-toast-container .dsv-toast .loader-container{position:absolute;bottom:0;left:0;width:100%}.dsv-toast-container .dsv-toast .loader-container .loader{border:1px solid var(--border)}\n"] }]
|
|
97
97
|
}], ctorParameters: () => [], propDecorators: { duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
|
|
@@ -65,10 +65,10 @@ class DsvTooltipComponent {
|
|
|
65
65
|
this.opacity.set(0.9);
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
69
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DsvTooltipComponent, isStandalone: true, selector: "dsv-tooltip", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "tooltipBox", first: true, predicate: ["tooltipBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n@if (visible()) {\n <div #tooltipBox [class]=\"'dsv-tooltip ' + positionClass()\" [style.opacity]=\"opacity()\">\n {{ text() }}\n </div>\n}\n", styles: [":host{position:relative;display:flex;flex-direction:column}.dsv-tooltip{position:absolute;background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:.85rem;z-index:10;opacity:.9;min-width:150px;width:100%;max-width:200px;white-space:normal;text-align:center;word-wrap:break-word}.dsv-tooltip.top{bottom:100%;left:50%;transform:translate(-50%);margin-bottom:5px}.dsv-tooltip.top:after{content:\"\";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#333 transparent transparent transparent}.dsv-tooltip.bottom{top:100%;left:50%;transform:translate(-50%);margin-top:5px}.dsv-tooltip.bottom:after{content:\" \";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent black transparent}.dsv-tooltip.left{right:100%;top:50%;transform:translateY(-50%);margin-right:5px}.dsv-tooltip.left:after{content:\" \";position:absolute;top:50%;left:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent transparent transparent black}.dsv-tooltip.right{left:100%;top:50%;transform:translateY(-50%);margin-left:5px}.dsv-tooltip.right:after{content:\" \";position:absolute;top:50%;right:100%;margin-top:-5px;border-width:5px;border-style:solid;border-color:transparent black transparent transparent}\n"] });
|
|
70
70
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DsvTooltipComponent, decorators: [{
|
|
72
72
|
type: Component,
|
|
73
73
|
args: [{ selector: 'dsv-tooltip', imports: [], host: {
|
|
74
74
|
'(window:resize)': 'onResize()',
|
|
@@ -31,10 +31,10 @@ class EnvironmentService {
|
|
|
31
31
|
console.log = () => { };
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
35
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: EnvironmentService, providedIn: 'root' });
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: EnvironmentService, decorators: [{
|
|
38
38
|
type: Injectable,
|
|
39
39
|
args: [{ providedIn: 'root' }]
|
|
40
40
|
}] });
|
|
@@ -52,10 +52,10 @@ class I18nService {
|
|
|
52
52
|
.find((l) => this.SUPPORTED_LANGUAGES.includes(l));
|
|
53
53
|
return match ?? this.DEFAULT_LANGUAGE;
|
|
54
54
|
}
|
|
55
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
56
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
56
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: I18nService, providedIn: 'root' });
|
|
57
57
|
}
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: I18nService, decorators: [{
|
|
59
59
|
type: Injectable,
|
|
60
60
|
args: [{
|
|
61
61
|
providedIn: 'root',
|
|
@@ -63,10 +63,10 @@ class AdminService {
|
|
|
63
63
|
this.data.set(data);
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
67
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
66
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminService, providedIn: 'root' });
|
|
68
68
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminService, decorators: [{
|
|
70
70
|
type: Injectable,
|
|
71
71
|
args: [{
|
|
72
72
|
providedIn: 'root',
|
|
@@ -104,10 +104,10 @@ class AdminSearchModalContainer extends BaseContainer {
|
|
|
104
104
|
this.callback.emit(data);
|
|
105
105
|
this.modalService.close('m2m');
|
|
106
106
|
};
|
|
107
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
108
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
107
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", 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\" color=\"secondary\" variant=\"outlined\" />\n<dsv-modal id=\"m2m\" titleText=\"Ajouter un e\u0301le\u0301ment\">\n <dsv-form-reactive-searchbar [search]=\"search()\" (callbackSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item [text]=\"getValue(data, m2em().name)\" (callback)=\"clickItem(data)\" />\n }\n </div>\n</dsv-modal>\n", styles: [":host dsv-modal{--modal-width: 70% !important;--modal-left: 15% !important;--modal-height: 65% !important;--modal-top: 20% !important}\n"], dependencies: [{ kind: "component", type: DsvItemComponent, selector: "dsv-item", inputs: ["icon", "text", "nb", "url", "small"], outputs: ["callback"] }, { kind: "component", type: DsvModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: DsvModalComponent, selector: "dsv-modal", inputs: ["id", "class", "titleText", "canEchap"] }, { kind: "component", type: DsvFormReactiveSearchbarComponent, selector: "dsv-form-reactive-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
|
|
109
109
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
|
|
111
111
|
type: Component,
|
|
112
112
|
args: [{ selector: 'dsv-admin-search-modal', imports: [
|
|
113
113
|
DsvItemComponent,
|
|
@@ -160,10 +160,10 @@ class AdminFormComponent extends DsvBaseFormReactiveComponent {
|
|
|
160
160
|
this.form.value[name].push(data);
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
164
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
163
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", 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 [form]=\"form\" [urlBack]=\"urlBack()!\" (callback)=\"sendForm($event)\">\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 [form]=\"form\" [field]=\"field.name\" />\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=\"secondary\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <dsv-admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n</dsv-form-reactive>\n", styles: [":host{display:flex;overflow:hidden}:host dsv-form-reactive{--form-flex-direction: row;--form-flex-wrap: wrap;--form-flex-padding: 0 0 0 5px}:host dsv-form-reactive .item{display:flex;width:100%;align-items:end}:host dsv-form-reactive .width50{width:49%}:host dsv-form-reactive .m2m{display:flex;flex:1;overflow:auto;scrollbar-width:thin;padding:10px 0}:host dsv-form-reactive .m2m .m2m-content{align-items:center;gap:10px;flex-wrap:nowrap;display:flex;flex-direction:row;justify-content:end;flex:1}@media(max-width:800px){:host dsv-form-reactive .width50{width:100%!important}:host dsv-form-reactive .m2m{justify-content:baseline!important}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "component", type: DsvFormReactiveComponent, selector: "dsv-form-reactive", inputs: ["form", "urlBack", "textValid", "formValid"], outputs: ["callback"] }, { kind: "component", type: DsvFormReactiveInputComponent, selector: "dsv-form-reactive-input", inputs: ["form", "field", "type", "withLabel", "required", "icon"], outputs: ["callbackSend"] }, { kind: "component", type: DsvFormReactiveCheckboxComponent, selector: "dsv-form-reactive-checkbox", inputs: ["form", "field", "withLabel"], outputs: ["callbackChange"] }, { kind: "component", type: AdminSearchModalContainer, selector: "dsv-admin-search-modal", inputs: ["m2em"], outputs: ["callback"] }] });
|
|
165
165
|
}
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminFormComponent, decorators: [{
|
|
167
167
|
type: Component,
|
|
168
168
|
args: [{ selector: 'dsv-admin-form', imports: [
|
|
169
169
|
ReactiveFormsModule,
|
|
@@ -216,10 +216,10 @@ class AdminFormContainer extends BaseRouteContainer {
|
|
|
216
216
|
this.adminService.post(this.tabConfig()?.name, dataFusion);
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
220
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
219
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminFormContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", 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", inputs: ["border"] }, { kind: "component", type: DsvCardHeaderComponent, selector: "dsv-card-header" }, { kind: "component", type: AdminFormComponent, selector: "dsv-admin-form", inputs: ["urlBack", "data", "formConf"], outputs: ["callback"] }] });
|
|
221
221
|
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminFormContainer, decorators: [{
|
|
223
223
|
type: Component,
|
|
224
224
|
args: [{ selector: 'dsv-admin-form-container', imports: [DsvCardComponent, DsvCardHeaderComponent, AdminFormComponent, DsvCardHeaderComponent], template: "<dsv-card>\n <dsv-card-header>\n <h2>\n {{ adminService.data().id ? 'Modification' : 'Ajout' }}\n </h2>\n </dsv-card-header>\n <dsv-admin-form\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n", styles: [":host{display:flex;width:100%;overflow:hidden}\n"] }]
|
|
225
225
|
}], ctorParameters: () => [] });
|
|
@@ -270,10 +270,10 @@ class AdminSearchContainer extends BaseRouteContainer {
|
|
|
270
270
|
this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name]: search }));
|
|
271
271
|
this.adminService.get(this.tabConfig()?.name, this.tabConfig()?.findByChamps + '>>' + this.tabConfig()?.sortBy, search, page, this.adminService.tabs()?.max);
|
|
272
272
|
}
|
|
273
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
274
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
273
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminSearchContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
274
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", 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 color=\"secondary\"\n variant=\"outlined\"\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-card{margin-right:5px;width:calc(100% - 5px)}:host dsv-card dsv-form-signal-searchbar{margin:5px 0}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card", inputs: ["border"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "component", type: DsvTabsComponent, selector: "dsv-tabs-component", inputs: ["tabs", "active"], outputs: ["callback"] }, { kind: "component", type: DsvTableComponent, selector: "dsv-table", inputs: ["url", "cells", "datas", "max"] }, { kind: "component", type: DsvPaginateComponent, selector: "dsv-paginate", inputs: ["page", "max"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: DsvFormSignalSearchbarComponent, selector: "dsv-form-signal-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
|
|
275
275
|
}
|
|
276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AdminSearchContainer, decorators: [{
|
|
277
277
|
type: Component,
|
|
278
278
|
args: [{ selector: 'dsv-admin-search', imports: [
|
|
279
279
|
DsvCardComponent,
|
|
@@ -34,10 +34,10 @@ class AuthComponent {
|
|
|
34
34
|
this.authService.logout();
|
|
35
35
|
this.callbackLogout.emit();
|
|
36
36
|
}
|
|
37
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
38
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: AuthComponent, isStandalone: true, selector: "dsv-auth", outputs: { callbackInitMember: "callbackInitMember", callbackLogout: "callbackLogout" }, ngImport: i0, template: "<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <a href=\"/profil\" dsvLink>\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"Profile\" referrerpolicy=\"no-referrer\" />\n </a>\n <dsv-modal-button modalName=\"logout\" color=\"secondary\" variant=\"outlined\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"De\u0301connexion\"\n text=\"Voulez-vous vraiment vous de\u0301connecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n", styles: [":host{display:flex;gap:10px;flex-flow:nowrap;align-items:center}:host button{margin:0;padding:0;background:transparent;border:0px}:host img{width:30px;height:30px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvModalButtonComponent, selector: "dsv-modal-button", inputs: ["modalName", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: DsvModalAlertComponent, selector: "dsv-modal-alert", inputs: ["id", "titleText", "text", "button", "buttonClose"], outputs: ["callback"] }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthComponent, decorators: [{
|
|
41
41
|
type: Component,
|
|
42
42
|
args: [{ selector: 'dsv-auth', imports: [CommonModule, DsvModalButtonComponent, DsvModalAlertComponent, RouterInternalPipe], template: "<button\n id=\"google-signin-button\"\n [class.hidden]=\"!authService.isRefreshTokenLoaded() || authService.userConnected() !== null\"\n></button>\n\n@if (authService.userConnected()) {\n <ng-content />\n <a href=\"/profil\" dsvLink>\n <img [src]=\"authService.userConnected()?.avatar\" alt=\"Profile\" referrerpolicy=\"no-referrer\" />\n </a>\n <dsv-modal-button modalName=\"logout\" color=\"secondary\" variant=\"outlined\" icon=\"ri-logout-box-line\" />\n <dsv-modal-alert\n id=\"logout\"\n titleText=\"De\u0301connexion\"\n text=\"Voulez-vous vraiment vous de\u0301connecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n", styles: [":host{display:flex;gap:10px;flex-flow:nowrap;align-items:center}:host button{margin:0;padding:0;background:transparent;border:0px}:host img{width:30px;height:30px;border-radius:50%}\n"] }]
|
|
43
43
|
}], ctorParameters: () => [], propDecorators: { callbackInitMember: [{ type: i0.Output, args: ["callbackInitMember"] }], callbackLogout: [{ type: i0.Output, args: ["callbackLogout"] }] } });
|
|
@@ -161,10 +161,10 @@ class AuthService extends BaseApiService {
|
|
|
161
161
|
canFetch(ssr = true) {
|
|
162
162
|
return ((ssr && !this.isPlatformBrowser()) || (this.isPlatformBrowser() && this.isRefreshTokenLoaded()));
|
|
163
163
|
}
|
|
164
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
165
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
166
166
|
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthService, decorators: [{
|
|
168
168
|
type: Injectable,
|
|
169
169
|
args: [{
|
|
170
170
|
providedIn: 'root',
|
|
@@ -216,10 +216,10 @@ class AuthGoogleService {
|
|
|
216
216
|
google.accounts.id.prompt();
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
220
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.
|
|
219
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthGoogleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
220
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthGoogleService, providedIn: 'root' });
|
|
221
221
|
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AuthGoogleService, decorators: [{
|
|
223
223
|
type: Injectable,
|
|
224
224
|
args: [{
|
|
225
225
|
providedIn: 'root',
|
|
@@ -9,10 +9,10 @@ import { TranslatePipe } from '@ngx-translate/core';
|
|
|
9
9
|
class ContactComponent {
|
|
10
10
|
contactEmail = input('vagabond.git@gmail.com', /* @ts-ignore */
|
|
11
11
|
...(ngDevMode ? [{ debugName: "contactEmail" }] : /* istanbul ignore next */ []));
|
|
12
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
13
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: ContactComponent, isStandalone: true, selector: "dsv-contact", inputs: { contactEmail: { classPropertyName: "contactEmail", publicName: "contactEmail", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"secondary\" />\n <dsv-chip text=\"QUARKUS\" color=\"secondary\" />\n <dsv-chip text=\"DOCKER\" color=\"secondary\" />\n <dsv-chip text=\"GIT\" color=\"secondary\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button class=\"button-secondary\" color=\"secondary\">\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card [border]=\"true\">\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card [border]=\"true\">\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card [border]=\"true\">\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n", styles: [":host{display:flex;flex-direction:column}:host p{text-align:justify}:host .content{display:flex;margin:5px!important;width:calc(100% - 10px)!important}:host .content h2{font-size:1.5rem;font-weight:700!important;margin:10px 0!important}:host .content p{font-size:1.1rem}:host .content .left-side{width:50%;display:flex;flex-direction:column;align-items:center}:host .content .left-side img{width:200px;border-radius:50%;border:3px solid var(--primary);padding:5px}:host .content .left-side p{text-align:center}:host .content .left-side .chips{margin:15px 0;display:flex;flex-wrap:wrap;gap:10px}:host .content .left-side .chips dsv-chip{--chip-padding: 10px;--chip-font-size: .9rem;--chip-font-weight: 550}:host .content .right-side{width:50%;display:flex;flex-direction:column;gap:20px}:host .content .right-side h2{margin-bottom:20px!important}:host .content .right-side .follow-buttons{display:flex;flex-direction:column;gap:10px;margin-top:30px}:host .content .right-side .follow-buttons dsv-button{--button-width: 100%;--button-font-size: .8rem;--button-font-weight: 400;--button-padding: 4px}:host .content .right-side .follow-buttons dsv-button a{display:flex;gap:5px;width:100%!important;color:var(--text)!important;border:0px!important;align-items:center;justify-content:center}:host .content .right-side .follow-buttons dsv-button.button-secondary a{color:var(--button-text)!important}@media screen and (max-width:800px){:host .content{flex-direction:column}:host .content .left-side{width:100%!important}:host .content .right-side{text-align:center;align-items:center;width:100%!important}:host .content .right-side>div{width:100%!important}:host .content .right-side p{text-align:center}:host .content .follow-buttons{width:100%}}:host .contact-projects{display:flex;flex-direction:row;gap:10px;margin:10px 5px 5px!important;width:calc(100% - 10px)!important}:host .contact-projects dsv-card{padding:5px!important;width:33%}:host .contact-projects h2{display:flex;gap:10px}:host .contact-projects .project-content{display:flex;gap:20px;align-items:center;margin-bottom:10px;flex:1}@media screen and (max-width:800px){:host .contact-projects{flex-direction:column}:host .contact-projects dsv-card{width:calc(100% - 15px)!important}}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card", inputs: ["border"] }, { kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "directive", type: RouterExternalPipe, selector: "a[dsvLinkExternal]", inputs: ["color"], outputs: ["dsvLinkExternal"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ContactComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
17
|
args: [{ selector: 'dsv-contact', imports: [DsvCardComponent, DsvChipComponent, RouterExternalPipe, DsvButtonComponent, TranslatePipe], template: "<section class=\"contact-page\">\n <dsv-card>\n <div class=\"content\">\n <div class=\"left-side\">\n <img title=\"vagabond\" alt=\"vagabond\" src=\"/images/vagabond.png\" />\n <h2>vagabond</h2>\n <p>\n {{ 'CONTACT.DESCRIPTION' | translate }}\n <br />\n {{ 'CONTACT.DESCRIPTION2' | translate }}\n </p>\n <div class=\"chips\">\n <dsv-chip text=\"ANGULAR\" color=\"secondary\" />\n <dsv-chip text=\"QUARKUS\" color=\"secondary\" />\n <dsv-chip text=\"DOCKER\" color=\"secondary\" />\n <dsv-chip text=\"GIT\" color=\"secondary\" />\n </div>\n </div>\n <div class=\"right-side\">\n <div>\n <h2>{{ 'CONTACT.CONTACT_ME' | translate }}</h2>\n <p>\n {{ 'CONTACT.WRITE_TO_ME' | translate }}\n <a href=\"mailto:{{ contactEmail() }}\" dsvLinkExternal>{{ contactEmail() }}</a>\n </p>\n </div>\n <div>\n <h2>{{ 'CONTACT.FOLLOW_ME' | translate }}</h2>\n <div class=\"follow-buttons\">\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://discord.com/invite/TUy5MtVRt7\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/discord.png\"\n />\n {{ 'CONTACT.DISCORD_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button variant=\"outlined\" color=\"default\">\n <a href=\"https://github.com/vagabon\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/github.png\"\n />\n {{ 'CONTACT.GITHUB_BUTTON' | translate }}\n </a>\n </dsv-button>\n <dsv-button class=\"button-secondary\" color=\"secondary\">\n <a href=\"https://blog.vagabond.synology.me/\" dsvLinkExternal>\n <img\n class=\"button-contact\"\n title=\"logo discord\"\n alt=\"logo discord\"\n width=\"20px\"\n src=\"/images/icons/blog.png\"\n />\n {{ 'CONTACT.BLOG_BUTTON' | translate }}\n </a>\n </dsv-button>\n </div>\n </div>\n </div>\n </div>\n </dsv-card>\n</section>\n\n<section class=\"contact-projects\">\n <dsv-card [border]=\"true\">\n <h2>\n <i class=\"ri-file-video-line\"></i>\n {{ 'CONTACT.PROJECTS.MK.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img title=\"logo Movie Keeper\" alt=\"logo Movie Keeper\" width=\"40px\" src=\"/images/icons/mk.png\" />\n <p>\n {{ 'CONTACT.PROJECTS.MK.DESCRIPTION' | translate }}\n </p>\n </div>\n <a href=\"https://movie-keeper.fr\" title=\"https://movie-keeper.fr\" dsvLinkExternal>\n https://movie-keeper.fr\n </a>\n </dsv-card>\n <dsv-card [border]=\"true\">\n <h2>\n <i class=\"ri-news-line\"></i>\n {{ 'CONTACT.PROJECTS.BLOG.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/blog.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.BLOG.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://blog.vagabond.synology.me\" title=\"//blog.vagabond.synology.me\" dsvLinkExternal>\n https://blog.vagabond.synology.me\n </a>\n </dsv-card>\n <dsv-card [border]=\"true\">\n <h2>\n <i class=\"ri-chat-1-line\"></i>\n {{ 'CONTACT.PROJECTS.OYC.TITLE' | translate }}\n </h2>\n <div class=\"project-content\">\n <img\n title=\"logo blog vagabond\"\n alt=\"logo blog vagabond\"\n width=\"40px\"\n src=\"/images/icons/oyc.png\"\n />\n <p>\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION' | translate }}<br />\n {{ 'CONTACT.PROJECTS.OYC.DESCRIPTION2' | translate }}\n </p>\n </div>\n <a href=\"https://www.ownyourchatbots.com\" title=\"OwnYourChatbots\" dsvLinkExternal>\n https://www.ownyourchatbots.com\n </a>\n </dsv-card>\n</section>\n", styles: [":host{display:flex;flex-direction:column}:host p{text-align:justify}:host .content{display:flex;margin:5px!important;width:calc(100% - 10px)!important}:host .content h2{font-size:1.5rem;font-weight:700!important;margin:10px 0!important}:host .content p{font-size:1.1rem}:host .content .left-side{width:50%;display:flex;flex-direction:column;align-items:center}:host .content .left-side img{width:200px;border-radius:50%;border:3px solid var(--primary);padding:5px}:host .content .left-side p{text-align:center}:host .content .left-side .chips{margin:15px 0;display:flex;flex-wrap:wrap;gap:10px}:host .content .left-side .chips dsv-chip{--chip-padding: 10px;--chip-font-size: .9rem;--chip-font-weight: 550}:host .content .right-side{width:50%;display:flex;flex-direction:column;gap:20px}:host .content .right-side h2{margin-bottom:20px!important}:host .content .right-side .follow-buttons{display:flex;flex-direction:column;gap:10px;margin-top:30px}:host .content .right-side .follow-buttons dsv-button{--button-width: 100%;--button-font-size: .8rem;--button-font-weight: 400;--button-padding: 4px}:host .content .right-side .follow-buttons dsv-button a{display:flex;gap:5px;width:100%!important;color:var(--text)!important;border:0px!important;align-items:center;justify-content:center}:host .content .right-side .follow-buttons dsv-button.button-secondary a{color:var(--button-text)!important}@media screen and (max-width:800px){:host .content{flex-direction:column}:host .content .left-side{width:100%!important}:host .content .right-side{text-align:center;align-items:center;width:100%!important}:host .content .right-side>div{width:100%!important}:host .content .right-side p{text-align:center}:host .content .follow-buttons{width:100%}}:host .contact-projects{display:flex;flex-direction:row;gap:10px;margin:10px 5px 5px!important;width:calc(100% - 10px)!important}:host .contact-projects dsv-card{padding:5px!important;width:33%}:host .contact-projects h2{display:flex;gap:10px}:host .contact-projects .project-content{display:flex;gap:20px;align-items:center;margin-bottom:10px;flex:1}@media screen and (max-width:800px){:host .contact-projects{flex-direction:column}:host .contact-projects dsv-card{width:calc(100% - 15px)!important}}\n"] }]
|
|
18
18
|
}], propDecorators: { contactEmail: [{ type: i0.Input, args: [{ isSignal: true, alias: "contactEmail", required: false }] }] } });
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { signal, effect, Component } from '@angular/core';
|
|
3
|
+
import { form, required, validate } from '@angular/forms/signals';
|
|
4
|
+
import { RouterLink } from '@angular/router';
|
|
5
|
+
import { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';
|
|
6
|
+
import { DsvCardComponent, DsvCardHeaderComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';
|
|
7
|
+
import { requiredTrim, DsvFormSignalComponent, DsvFormSignalInputComponent, DsvFormSignalCheckboxComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/signal';
|
|
8
|
+
import { NewsContainer } from './ng-vagabond-lab-ng-dsv-module-news-news.container-D6fR0O72.mjs';
|
|
9
|
+
|
|
10
|
+
class NewsFormContainer extends NewsContainer {
|
|
11
|
+
newsForm = form(signal(this.news()), (path) => {
|
|
12
|
+
required(path.title);
|
|
13
|
+
required(path.resume);
|
|
14
|
+
required(path.description);
|
|
15
|
+
validate(path.title, requiredTrim);
|
|
16
|
+
validate(path.resume, requiredTrim);
|
|
17
|
+
validate(path.description, requiredTrim);
|
|
18
|
+
});
|
|
19
|
+
file = signal(null, /* @ts-ignore */
|
|
20
|
+
...(ngDevMode ? [{ debugName: "file" }] : /* istanbul ignore next */ []));
|
|
21
|
+
addFiles(files) {
|
|
22
|
+
Array.from(files ?? []).forEach((file) => {
|
|
23
|
+
const reader = new FileReader();
|
|
24
|
+
reader.onload = () => {
|
|
25
|
+
this.file.set(file);
|
|
26
|
+
const formData = new FormData();
|
|
27
|
+
formData.append('fileForm', this.file());
|
|
28
|
+
return this.authService.apiService.post(`/file/upload?directory=news`, formData, (res) => {
|
|
29
|
+
this.newsForm().value.update((news) => ({
|
|
30
|
+
...news,
|
|
31
|
+
image: res['path'],
|
|
32
|
+
}));
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
reader.readAsDataURL(file);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
constructor() {
|
|
39
|
+
super();
|
|
40
|
+
effect(() => {
|
|
41
|
+
if (this.news()) {
|
|
42
|
+
this.newsForm().reset(this.news());
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.newsForm().reset({
|
|
46
|
+
title: '',
|
|
47
|
+
image: '',
|
|
48
|
+
tags: '',
|
|
49
|
+
resume: '',
|
|
50
|
+
description: '',
|
|
51
|
+
user: this.authService.userConnected(),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
doSubmit() {
|
|
57
|
+
if (this.newsForm().valid()) {
|
|
58
|
+
this.newsService.createOrUpdate(this.newsForm().value(), (data) => {
|
|
59
|
+
this.routerService.router.navigate(['news', data.id]);
|
|
60
|
+
document.getElementById('main-scroll')?.scrollTo(0, 0);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NewsFormContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: NewsFormContainer, isStandalone: true, selector: "app-news-form", usesInheritance: true, ngImport: i0, template: "<dsv-card>\n <dsv-card-header>\n <dsv-button\n class=\"round\"\n icon=\"ri-arrow-left-s-line\"\n color=\"inherit\"\n [routerLink]=\"news()?.id ? '/news/' + news()?.id : '/news'\"\n />\n <h1>{{ news()?.id ? 'Modifier' : 'Cr\u00E9er' }} une news</h1>\n </dsv-card-header>\n <dsv-form-signal [form]=\"newsForm\" (callback)=\"doSubmit()\" (callbackBack)=\"routerService.goBack()\">\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"title\" />\n <input type=\"file\" (change)=\"addFiles($event.target.files)\" #fileInput />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"image\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"tags\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"resume\" type=\"textarea\" class=\"resume\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"description\" type=\"textarea\" />\n <dsv-form-signal-checkbox [form]=\"newsForm\" fieldName=\"active\" />\n </dsv-form-signal>\n</dsv-card>\n", styles: [":host dsv-card-header{display:flex;flex-direction:row;align-items:center;gap:5px}:host dsv-card-header dsv-button.round{--button-border-radius: 50%}:host dsv-form-signal-input{--input-height: 300px;--input-max-height: 300px}:host dsv-form-signal-input.resume{--input-height: 160px}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card", inputs: ["border"] }, { kind: "component", type: DsvFormSignalComponent, selector: "dsv-form-signal", inputs: ["form", "urlBack", "textValid", "formValid"], outputs: ["callbackBack", "callback"] }, { kind: "component", type: DsvFormSignalInputComponent, selector: "dsv-form-signal-input", inputs: ["type", "icon", "withError"] }, { kind: "component", type: DsvCardHeaderComponent, selector: "dsv-card-header" }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: DsvFormSignalCheckboxComponent, selector: "dsv-form-signal-checkbox" }] });
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NewsFormContainer, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ selector: 'app-news-form', imports: [
|
|
70
|
+
DsvCardComponent,
|
|
71
|
+
DsvFormSignalComponent,
|
|
72
|
+
DsvFormSignalInputComponent,
|
|
73
|
+
DsvCardHeaderComponent,
|
|
74
|
+
DsvButtonComponent,
|
|
75
|
+
RouterLink,
|
|
76
|
+
DsvFormSignalCheckboxComponent,
|
|
77
|
+
], template: "<dsv-card>\n <dsv-card-header>\n <dsv-button\n class=\"round\"\n icon=\"ri-arrow-left-s-line\"\n color=\"inherit\"\n [routerLink]=\"news()?.id ? '/news/' + news()?.id : '/news'\"\n />\n <h1>{{ news()?.id ? 'Modifier' : 'Cr\u00E9er' }} une news</h1>\n </dsv-card-header>\n <dsv-form-signal [form]=\"newsForm\" (callback)=\"doSubmit()\" (callbackBack)=\"routerService.goBack()\">\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"title\" />\n <input type=\"file\" (change)=\"addFiles($event.target.files)\" #fileInput />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"image\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"tags\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"resume\" type=\"textarea\" class=\"resume\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"description\" type=\"textarea\" />\n <dsv-form-signal-checkbox [form]=\"newsForm\" fieldName=\"active\" />\n </dsv-form-signal>\n</dsv-card>\n", styles: [":host dsv-card-header{display:flex;flex-direction:row;align-items:center;gap:5px}:host dsv-card-header dsv-button.round{--button-border-radius: 50%}:host dsv-form-signal-input{--input-height: 300px;--input-max-height: 300px}:host dsv-form-signal-input.resume{--input-height: 160px}\n"] }]
|
|
78
|
+
}], ctorParameters: () => [] });
|
|
79
|
+
|
|
80
|
+
export { NewsFormContainer };
|
|
81
|
+
//# sourceMappingURL=ng-vagabond-lab-ng-dsv-module-news-news-form.container-D6wXpIFA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-vagabond-lab-ng-dsv-module-news-news-form.container-D6wXpIFA.mjs","sources":["../../../projects/ng-dsv/module/news/container/form/news-form.container.ts","../../../projects/ng-dsv/module/news/container/form/news-form.container.html"],"sourcesContent":["import { Component, effect, signal } from '@angular/core';\nimport { form, required, validate } from '@angular/forms/signals';\nimport { RouterLink } from '@angular/router';\nimport { JSONObject } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent, DsvCardHeaderComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport {\n DsvFormSignalCheckboxComponent,\n DsvFormSignalComponent,\n DsvFormSignalInputComponent,\n requiredTrim,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/signal';\nimport { NewsDto } from '../../dto/news.dto';\nimport { NewsContainer } from '../news.container';\n\n@Component({\n selector: 'app-news-form',\n imports: [\n DsvCardComponent,\n DsvFormSignalComponent,\n DsvFormSignalInputComponent,\n DsvCardHeaderComponent,\n DsvButtonComponent,\n RouterLink,\n DsvFormSignalCheckboxComponent,\n ],\n templateUrl: './news-form.container.html',\n styleUrl: './news-form.container.scss',\n})\nexport class NewsFormContainer extends NewsContainer {\n readonly newsForm = form(signal<NewsDto>(this.news()!), (path) => {\n required(path.title);\n required(path.resume);\n required(path.description);\n validate(path.title, requiredTrim);\n validate(path.resume, requiredTrim);\n validate(path.description, requiredTrim);\n });\n\n file = signal<File | null>(null);\n\n addFiles(files: FileList | null) {\n Array.from(files ?? []).forEach((file) => {\n const reader = new FileReader();\n reader.onload = () => {\n this.file.set(file);\n\n const formData = new FormData();\n formData.append('fileForm', this.file()!);\n\n return this.authService.apiService.post(`/file/upload?directory=news`, formData, (res) => {\n this.newsForm().value.update((news) => ({\n ...news,\n image: (res as JSONObject)['path' as keyof JSONObject] as string,\n }));\n });\n };\n reader.readAsDataURL(file);\n });\n }\n\n constructor() {\n super();\n effect(() => {\n if (this.news()) {\n this.newsForm().reset(this.news());\n } else {\n this.newsForm().reset({\n title: '',\n image: '',\n tags: '',\n resume: '',\n description: '',\n user: this.authService.userConnected()!,\n } as NewsDto);\n }\n });\n }\n\n doSubmit() {\n if (this.newsForm().valid()) {\n this.newsService.createOrUpdate(this.newsForm().value(), (data: NewsDto) => {\n this.routerService.router.navigate(['news', data.id]);\n document.getElementById('main-scroll')?.scrollTo(0, 0);\n });\n }\n }\n}\n","<dsv-card>\n <dsv-card-header>\n <dsv-button\n class=\"round\"\n icon=\"ri-arrow-left-s-line\"\n color=\"inherit\"\n [routerLink]=\"news()?.id ? '/news/' + news()?.id : '/news'\"\n />\n <h1>{{ news()?.id ? 'Modifier' : 'Créer' }} une news</h1>\n </dsv-card-header>\n <dsv-form-signal [form]=\"newsForm\" (callback)=\"doSubmit()\" (callbackBack)=\"routerService.goBack()\">\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"title\" />\n <input type=\"file\" (change)=\"addFiles($event.target.files)\" #fileInput />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"image\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"tags\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"resume\" type=\"textarea\" class=\"resume\" />\n <dsv-form-signal-input [form]=\"newsForm\" fieldName=\"description\" type=\"textarea\" />\n <dsv-form-signal-checkbox [form]=\"newsForm\" fieldName=\"active\" />\n </dsv-form-signal>\n</dsv-card>\n"],"names":[],"mappings":";;;;;;;;;AA6BM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AACvC,IAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAU,IAAI,CAAC,IAAI,EAAG,CAAC,EAAE,CAAC,IAAI,KAAI;AAC7D,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACpB,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACrB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1B,QAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;AAClC,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;AACnC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;AAC5C,IAAA,CAAC,CAAC;IAEF,IAAI,GAAG,MAAM,CAAc,IAAI;6EAAC;AAEhC,IAAA,QAAQ,CAAC,KAAsB,EAAA;AAC3B,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAEnB,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAG,CAAC;AAEzC,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,2BAAA,CAA6B,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAI;AACrF,oBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM;AACpC,wBAAA,GAAG,IAAI;AACP,wBAAA,KAAK,EAAG,GAAkB,CAAC,MAA0B,CAAW;AACnE,qBAAA,CAAC,CAAC;AACP,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC;iBAAO;AACH,gBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC;AAClB,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,WAAW,EAAE,EAAE;AACf,oBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAG;AAC/B,iBAAA,CAAC;YACjB;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAa,KAAI;AACvE,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACrD,gBAAA,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,YAAA,CAAC,CAAC;QACN;IACJ;uGAzDS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B9B,okCAoBA,EAAA,MAAA,EAAA,CAAA,6RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFQ,gBAAgB,yEAChB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,UAAU,kPACV,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,CAAA;;2FAKzB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB;wBACL,gBAAgB;wBAChB,sBAAsB;wBACtB,2BAA2B;wBAC3B,sBAAsB;wBACtB,kBAAkB;wBAClB,UAAU;wBACV,8BAA8B;AACjC,qBAAA,EAAA,QAAA,EAAA,okCAAA,EAAA,MAAA,EAAA,CAAA,6RAAA,CAAA,EAAA;;;;;"}
|