@ng-vagabond-lab/ng-dsv 0.1.50 → 0.1.52

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, Injectable, input, inject, effect, Component, output } from '@angular/core';
2
+ import { signal, Injectable, input, inject, effect, HostListener, Component, output } from '@angular/core';
3
3
  import { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';
4
4
  import { TranslatePipe } from '@ngx-translate/core';
5
5
  import { MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';
@@ -36,6 +36,7 @@ class ModalComponent {
36
36
  id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
37
37
  titleText = input.required(...(ngDevMode ? [{ debugName: "titleText" }] : /* istanbul ignore next */ []));
38
38
  class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
39
+ canEchap = input(true, ...(ngDevMode ? [{ debugName: "canEchap" }] : /* istanbul ignore next */ []));
39
40
  isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
40
41
  modalService = inject(ModalService);
41
42
  menuService = inject(MenuService);
@@ -47,16 +48,24 @@ class ModalComponent {
47
48
  }
48
49
  });
49
50
  }
51
+ onEscapeKey() {
52
+ if (this.isOpen() && this.canEchap()) {
53
+ this.close();
54
+ }
55
+ }
50
56
  close = () => {
51
57
  this.modalService.close(this.id());
52
58
  };
53
59
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: true, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"inherit\">\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"modal-footer\"></ng-content>\n </div>\n </div>\n}\n", styles: [".modal-overlay{position:fixed;z-index:300000;background-color:oklab(0% none none / .8);width:100%;height:100%;top:0;right:0}.modal{position:fixed;z-index:300001;top:35%;left:25%;width:50%;height:25%;min-height:180px;background:var(--background);display:flex;flex-direction:column}.modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px outset black}.modal .modal-content{flex:1;overflow:auto;scrollbar-width:thin;padding:10px;align-content:center}.modal .modal-footer{padding:10px}::ng-deep .modal-footer>div{display:flex;gap:.5rem;justify-content:flex-end}::ng-deep .light .modal .modal-content{background-color:var(--text-dark)!important}::ng-deep .light .modal .modal-footer{background-color:var(--text-dark)!important}::ng-deep .dark .modal{background:var(--background-dark)!important}::ng-deep .dark .modal-header{border-color:var(--text-dark)!important}@media screen and (max-width:600px){.modal{width:calc(100% - 16px)!important;left:8px!important}}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: true, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, canEchap: { classPropertyName: "canEchap", publicName: "canEchap", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: "@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"inherit\">\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"modal-footer\"></ng-content>\n </div>\n </div>\n}\n", styles: [".modal-overlay{position:fixed;z-index:300000;background-color:oklab(0% none none / .8);width:100%;height:100%;top:0;right:0}.modal{position:fixed;z-index:300001;top:35%;left:25%;width:50%;height:25%;min-height:180px;background:var(--background);display:flex;flex-direction:column}.modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px outset black}.modal .modal-content{flex:1;overflow:auto;scrollbar-width:thin;padding:10px;align-content:center}.modal .modal-footer{padding:10px}::ng-deep .modal-footer>div{display:flex;gap:.5rem;justify-content:flex-end}::ng-deep .light .modal .modal-content{background-color:var(--text-dark)!important}::ng-deep .light .modal .modal-footer{background-color:var(--text-dark)!important}::ng-deep .dark .modal{background:var(--background-dark)!important}::ng-deep .dark .modal-header{border-color:var(--text-dark)!important}@media screen and (max-width:600px){.modal{width:calc(100% - 16px)!important;left:8px!important}}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
55
61
  }
56
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: ModalComponent, decorators: [{
57
63
  type: Component,
58
64
  args: [{ selector: 'app-modal', imports: [DsvButtonComponent], template: "@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"inherit\">\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"modal-footer\"></ng-content>\n </div>\n </div>\n}\n", styles: [".modal-overlay{position:fixed;z-index:300000;background-color:oklab(0% none none / .8);width:100%;height:100%;top:0;right:0}.modal{position:fixed;z-index:300001;top:35%;left:25%;width:50%;height:25%;min-height:180px;background:var(--background);display:flex;flex-direction:column}.modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px outset black}.modal .modal-content{flex:1;overflow:auto;scrollbar-width:thin;padding:10px;align-content:center}.modal .modal-footer{padding:10px}::ng-deep .modal-footer>div{display:flex;gap:.5rem;justify-content:flex-end}::ng-deep .light .modal .modal-content{background-color:var(--text-dark)!important}::ng-deep .light .modal .modal-footer{background-color:var(--text-dark)!important}::ng-deep .dark .modal{background:var(--background-dark)!important}::ng-deep .dark .modal-header{border-color:var(--text-dark)!important}@media screen and (max-width:600px){.modal{width:calc(100% - 16px)!important;left:8px!important}}\n"] }]
59
- }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
65
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: true }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], canEchap: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEchap", required: false }] }], onEscapeKey: [{
66
+ type: HostListener,
67
+ args: ['document:keydown.escape']
68
+ }] } });
60
69
 
61
70
  class ModalAlertComponent {
62
71
  id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
@@ -80,7 +89,7 @@ class ModalAlertComponent {
80
89
  this.modalService.close(this.id());
81
90
  };
82
91
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: ModalAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: ModalAlertComponent, isStandalone: true, selector: "app-modal-alert", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, buttonClose: { classPropertyName: "buttonClose", publicName: "buttonClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<app-modal [id]=\"id()\" [titleText]=\"titleText()\">\n {{ text() }}\n <div ngProjectAs=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button (callback)=\"doClickClose()\" color=\"error\">\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button (callback)=\"doClick()\" color=\"success\">\n {{ button() | translate }}\n </dsv-button>\n </div>\n</app-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "app-modal", inputs: ["id", "titleText", "class"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
92
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: ModalAlertComponent, isStandalone: true, selector: "app-modal-alert", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, buttonClose: { classPropertyName: "buttonClose", publicName: "buttonClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<app-modal [id]=\"id()\" [titleText]=\"titleText()\">\n {{ text() }}\n <div ngProjectAs=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button (callback)=\"doClickClose()\" color=\"error\">\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button (callback)=\"doClick()\" color=\"success\">\n {{ button() | translate }}\n </dsv-button>\n </div>\n</app-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "app-modal", inputs: ["id", "titleText", "class", "canEchap"] }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
84
93
  }
85
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: ModalAlertComponent, decorators: [{
86
95
  type: Component,
@@ -94,16 +103,18 @@ class ModalButtonComponent {
94
103
  variant = input('contained', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
95
104
  text = input('', ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
96
105
  color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
106
+ callback = output();
97
107
  doToogle = () => {
108
+ this.callback.emit();
98
109
  this.modalService.toggle(this.id());
99
110
  };
100
111
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: ModalButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
101
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.7", type: ModalButtonComponent, isStandalone: true, selector: "app-modal-button", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.7", type: ModalButtonComponent, isStandalone: true, selector: "app-modal-button", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }] });
102
113
  }
103
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: ModalButtonComponent, decorators: [{
104
115
  type: Component,
105
116
  args: [{ selector: 'app-modal-button', imports: [DsvButtonComponent], template: "<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n" }]
106
- }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
117
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
107
118
 
108
119
  /**
109
120
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-modal.mjs","sources":["../../../projects/ng-dsv/ds/modal/service/modal.service.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.html","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.ts","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.html","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.ts","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.html","../../../projects/ng-dsv/ds/modal/ng-vagabond-lab-ng-dsv-ds-modal.ts"],"sourcesContent":["import { Injectable, signal } from \"@angular/core\";\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly states = new Map<string, ReturnType<typeof signal<boolean>>>();\n\n getSignal(id: string) {\n if (!this.states.has(id)) {\n const newSignal = signal<boolean>(false);\n this.states.set(id, newSignal);\n }\n return this.states.get(id)?.() ?? false;\n }\n\n open(id: string) {\n this.states.get(id)?.set(true);\n }\n\n close(id: string) {\n this.states.get(id)?.set(false);\n }\n\n toggle(id: string) {\n const s = this.states.get(id);\n if (s) s.update(v => !v);\n }\n}","import { Component, effect, inject, input, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { ModalService } from '../service/modal.service';\n\n@Component({\n selector: 'app-modal',\n imports: [DsvButtonComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent {\n id = input.required<string>();\n titleText = input.required<string>();\n class = input<string>('');\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n menuService = inject(MenuService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id()) ?? false);\n if (this.isOpen()) {\n this.menuService.isMenuOpen.set(false);\n }\n });\n }\n\n close = () => {\n this.modalService.close(this.id());\n };\n}\n","@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"inherit\">\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"modal-footer\"></ng-content>\n </div>\n </div>\n}\n","import {\n Component,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ModalService } from '../../service/modal.service';\nimport { ModalComponent } from '../modal.component';\n\n@Component({\n selector: 'app-modal-alert',\n imports: [ModalComponent, DsvButtonComponent, TranslatePipe],\n templateUrl: './modal-alert.component.html',\n})\nexport class ModalAlertComponent {\n id = input.required<string>();\n titleText = input<string>('title');\n text = input<string>('text');\n button = input<string>('button');\n buttonClose = input<string>();\n callback = output<void>();\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id() ?? false));\n });\n }\n\n doClick = () => {\n this.modalService.toggle(this.id());\n this.callback.emit();\n };\n\n doClickClose = () => {\n this.modalService.close(this.id());\n };\n}\n","<app-modal [id]=\"id()\" [titleText]=\"titleText()\">\n {{ text() }}\n <div ngProjectAs=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button (callback)=\"doClickClose()\" color=\"error\">\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button (callback)=\"doClick()\" color=\"success\">\n {{ button() | translate }}\n </dsv-button>\n </div>\n</app-modal>\n","import { Component, inject, input } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ButtonVariantType, ColorType } from '@ng-vagabond-lab/ng-dsv/type';\nimport { ModalService } from '../../service/modal.service';\n\n@Component({\n selector: 'app-modal-button',\n imports: [DsvButtonComponent],\n templateUrl: './modal-button.component.html',\n})\nexport class ModalButtonComponent {\n modalService = inject(ModalService);\n\n id = input.required<string>();\n icon = input<string>('');\n variant = input<ButtonVariantType>('contained');\n text = input<string>('');\n color = input<ColorType>('primary');\n\n doToogle = () => {\n this.modalService.toggle(this.id());\n };\n}\n","<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-modal.mjs","sources":["../../../projects/ng-dsv/ds/modal/service/modal.service.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.ts","../../../projects/ng-dsv/ds/modal/component/modal.component.html","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.ts","../../../projects/ng-dsv/ds/modal/component/alert/modal-alert.component.html","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.ts","../../../projects/ng-dsv/ds/modal/component/button/modal-button.component.html","../../../projects/ng-dsv/ds/modal/ng-vagabond-lab-ng-dsv-ds-modal.ts"],"sourcesContent":["import { Injectable, signal } from \"@angular/core\";\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly states = new Map<string, ReturnType<typeof signal<boolean>>>();\n\n getSignal(id: string) {\n if (!this.states.has(id)) {\n const newSignal = signal<boolean>(false);\n this.states.set(id, newSignal);\n }\n return this.states.get(id)?.() ?? false;\n }\n\n open(id: string) {\n this.states.get(id)?.set(true);\n }\n\n close(id: string) {\n this.states.get(id)?.set(false);\n }\n\n toggle(id: string) {\n const s = this.states.get(id);\n if (s) s.update(v => !v);\n }\n}","import { Component, effect, HostListener, inject, input, signal } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { ModalService } from '../service/modal.service';\n\n@Component({\n selector: 'app-modal',\n imports: [DsvButtonComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent {\n id = input.required<string>();\n titleText = input.required<string>();\n class = input<string>('');\n canEchap = input<boolean>(true);\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n menuService = inject(MenuService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id()) ?? false);\n if (this.isOpen()) {\n this.menuService.isMenuOpen.set(false);\n }\n });\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey() {\n if (this.isOpen() && this.canEchap()) {\n this.close();\n }\n }\n\n close = () => {\n this.modalService.close(this.id());\n };\n}\n","@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ titleText() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"inherit\">\n X\n </dsv-button>\n </div>\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"modal-footer\"></ng-content>\n </div>\n </div>\n}\n","import {\n Component,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ModalService } from '../../service/modal.service';\nimport { ModalComponent } from '../modal.component';\n\n@Component({\n selector: 'app-modal-alert',\n imports: [ModalComponent, DsvButtonComponent, TranslatePipe],\n templateUrl: './modal-alert.component.html',\n})\nexport class ModalAlertComponent {\n id = input.required<string>();\n titleText = input<string>('title');\n text = input<string>('text');\n button = input<string>('button');\n buttonClose = input<string>();\n callback = output<void>();\n\n isOpen = signal<boolean>(false);\n\n modalService = inject(ModalService);\n\n constructor() {\n effect(() => {\n this.isOpen.set(this.modalService.getSignal(this.id() ?? false));\n });\n }\n\n doClick = () => {\n this.modalService.toggle(this.id());\n this.callback.emit();\n };\n\n doClickClose = () => {\n this.modalService.close(this.id());\n };\n}\n","<app-modal [id]=\"id()\" [titleText]=\"titleText()\">\n {{ text() }}\n <div ngProjectAs=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button (callback)=\"doClickClose()\" color=\"error\">\n {{ buttonClose()! | translate }}\n </dsv-button>\n }\n <dsv-button (callback)=\"doClick()\" color=\"success\">\n {{ button() | translate }}\n </dsv-button>\n </div>\n</app-modal>\n","import { Component, inject, input, output } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ButtonVariantType, ColorType } from '@ng-vagabond-lab/ng-dsv/type';\nimport { ModalService } from '../../service/modal.service';\n\n@Component({\n selector: 'app-modal-button',\n imports: [DsvButtonComponent],\n templateUrl: './modal-button.component.html',\n})\nexport class ModalButtonComponent {\n modalService = inject(ModalService);\n\n id = input.required<string>();\n icon = input<string>('');\n variant = input<ButtonVariantType>('contained');\n text = input<string>('');\n color = input<ColorType>('primary');\n\n callback = output<void>();\n\n doToogle = () => {\n this.callback.emit();\n this.modalService.toggle(this.id());\n };\n}\n","<dsv-button\n [color]=\"color()\"\n [icon]=\"icon()\"\n [variant]=\"variant()\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n</dsv-button>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -11,9 +11,10 @@ class ToastService {
11
11
  toasts = signal([], ...(ngDevMode ? [{ debugName: "toasts" }] : /* istanbul ignore next */ []));
12
12
  showToast(toast) {
13
13
  toast.uuid = crypto.randomUUID();
14
+ toast.open = true;
14
15
  toast.type = toast.type ?? 'success';
15
16
  toast.duration = toast.duration ?? DURATION_DEFAULT;
16
- toast.durationLeft = toast.duration;
17
+ toast.remainingDuration = toast.duration;
17
18
  toast.filled = toast.filled ?? false;
18
19
  const find = this.toastShows().find((t) => t.text === toast.text);
19
20
  !find && this.toasts.update((toasts) => [...toasts, toast]);
@@ -30,7 +31,7 @@ class ToastService {
30
31
  else {
31
32
  this.toastShows.update((toasts) => toasts.map((oneToast) => {
32
33
  if (oneToast.uuid === toast.uuid) {
33
- oneToast.durationLeft = toast.duration - duration;
34
+ oneToast.remainingDuration = toast.duration - duration;
34
35
  }
35
36
  return oneToast;
36
37
  }));
@@ -39,7 +40,15 @@ class ToastService {
39
40
  this.removeToastFromQueue(toast.uuid);
40
41
  }
41
42
  closeToast(uuid) {
42
- this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
43
+ this.toastShows.update((toasts) => toasts.map((oneToast) => {
44
+ if (oneToast.uuid === uuid) {
45
+ oneToast.open = false;
46
+ }
47
+ return oneToast;
48
+ }));
49
+ setInterval(() => {
50
+ this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
51
+ }, 500);
43
52
  }
44
53
  removeToastFromQueue(uuid) {
45
54
  this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
@@ -66,11 +75,11 @@ class DsvToastComponent {
66
75
  });
67
76
  }
68
77
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: DsvToastComponent, isStandalone: true, selector: "dsv-toast", ngImport: i0, template: "<div class=\"dsv-toast-container\">\n @for (toast of toastService.toastShows(); track toast.uuid) {\n <div\n class=\"dsv-toast\"\n [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </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.durationLeft! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:3000002;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 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;opacity:0;transform:translate(100%);animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.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-color:inherit;cursor:pointer}.dsv-toast-container .dsv-toast .close-button:hover{background-color:#f9f9f9;border-radius:5px}.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 #b8b8b8}::ng-deep .dark .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast .close-button:hover{background-color:#212121!important}::ng-deep .light .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast{background-color:#212121;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
78
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: DsvToastComponent, isStandalone: true, selector: "dsv-toast", 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\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </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]=\"\n (toast.remainingDuration! / toast.duration!) * 100 + '%'\n \"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:3000002;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 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;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-color:inherit;cursor:pointer}.dsv-toast-container .dsv-toast .close-button:hover{background-color:#f9f9f9;border-radius:5px}.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 #b8b8b8}::ng-deep .dark .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast .close-button:hover{background-color:#212121!important}::ng-deep .light .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast{background-color:#212121;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
70
79
  }
71
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: DsvToastComponent, decorators: [{
72
81
  type: Component,
73
- 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 [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </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.durationLeft! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:3000002;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 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;opacity:0;transform:translate(100%);animation:slideInRight .5s ease-out forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.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-color:inherit;cursor:pointer}.dsv-toast-container .dsv-toast .close-button:hover{background-color:#f9f9f9;border-radius:5px}.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 #b8b8b8}::ng-deep .dark .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast .close-button:hover{background-color:#212121!important}::ng-deep .light .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast{background-color:#212121;color:#fff}\n"] }]
82
+ 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\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </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]=\"\n (toast.remainingDuration! / toast.duration!) * 100 + '%'\n \"\n ></div>\n </div>\n </div>\n }\n</div>\n", styles: [".dsv-toast-container{position:fixed;z-index:3000002;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 15px;pointer-events:all;position:relative;display:flex;align-items:center;flex-direction:row;gap:8px;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-color:inherit;cursor:pointer}.dsv-toast-container .dsv-toast .close-button:hover{background-color:#f9f9f9;border-radius:5px}.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 #b8b8b8}::ng-deep .dark .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast .close-button:hover{background-color:#212121!important}::ng-deep .light .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast{background-color:#212121;color:#fff}\n"] }]
74
83
  }], ctorParameters: () => [] });
75
84
 
76
85
  /**
@@ -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 toastShows = signal<ToastDto[]>([]);\n toasts = signal<ToastDto[]>([]);\n\n showToast(toast: ToastDto) {\n toast.uuid = crypto.randomUUID();\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? DURATION_DEFAULT;\n toast.durationLeft = toast.duration;\n toast.filled = toast.filled ?? false;\n const find = this.toastShows().find((t) => t.text === toast.text);\n !find && this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: ToastDto) {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n const interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n clearInterval(interval);\n this.closeToast(toast.uuid!);\n } else {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === toast.uuid) {\n oneToast.durationLeft = toast.duration! - duration;\n }\n return oneToast;\n })\n );\n }\n }, DURATION_TIMEOUT);\n this.removeToastFromQueue(toast.uuid!);\n }\n\n closeToast(uuid: string) {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n\n removeToastFromQueue(uuid: string) {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject } from '@angular/core';\nimport { 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 protected readonly toastService = inject(ToastService);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < MAX_TOASTS) {\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 [ngClass]=\"toast.type + ' ' + (toast.filled ? 'filled' : '')\"\n >\n <button\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </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.durationLeft! / toast.duration!) * 100 + '%'\"\n ></div>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-toast.mjs","sources":["../../../projects/ng-dsv/ds/toast/service/toast.service.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.ts","../../../projects/ng-dsv/ds/toast/component/toast.component.html","../../../projects/ng-dsv/ds/toast/ng-vagabond-lab-ng-dsv-ds-toast.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { ToastDto } from '../dto/toast.dto';\n\nexport const MAX_TOASTS = 10;\nexport const DURATION_DEFAULT = 5000;\nexport const DURATION_TIMEOUT = 10;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n toastShows = signal<ToastDto[]>([]);\n toasts = signal<ToastDto[]>([]);\n\n showToast(toast: ToastDto) {\n toast.uuid = crypto.randomUUID();\n toast.open = true;\n toast.type = toast.type ?? 'success';\n toast.duration = toast.duration ?? DURATION_DEFAULT;\n toast.remainingDuration = toast.duration;\n toast.filled = toast.filled ?? false;\n const find = this.toastShows().find((t) => t.text === toast.text);\n !find && this.toasts.update((toasts) => [...toasts, toast]);\n }\n\n consumeToast(toast: ToastDto) {\n this.toastShows.update((toasts) => [...toasts, toast]);\n let duration = 0;\n const interval = setInterval(() => {\n duration += DURATION_TIMEOUT;\n if (duration > toast.duration!) {\n clearInterval(interval);\n this.closeToast(toast.uuid!);\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(uuid: string) {\n this.toastShows.update((toasts) =>\n toasts.map((oneToast) => {\n if (oneToast.uuid === uuid) {\n oneToast.open = false;\n }\n return oneToast;\n })\n );\n setInterval(() => {\n this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }, 500);\n }\n\n removeToastFromQueue(uuid: string) {\n this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject } from '@angular/core';\nimport { 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 protected readonly toastService = inject(ToastService);\n\n constructor() {\n effect(() => {\n for (const toast of this.toastService.toasts()) {\n if (this.toastService.toastShows().length < MAX_TOASTS) {\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\n class=\"close-button\"\n type=\"button\"\n (click)=\"toastService.closeToast(toast.uuid!)\"\n >\n X\n </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]=\"\n (toast.remainingDuration! / toast.duration!) * 100 + '%'\n \"\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;AACvB,IAAA,UAAU,GAAG,MAAM,CAAa,EAAE,iFAAC;AACnC,IAAA,MAAM,GAAG,MAAM,CAAa,EAAE,6EAAC;AAE/B,IAAA,SAAS,CAAC,KAAe,EAAA;AACvB,QAAA,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE;AAChC,QAAA,KAAK,CAAC,IAAI,GAAG,IAAI;QACjB,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS;QACpC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,gBAAgB;AACnD,QAAA,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,QAAQ;QACxC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;QACjE,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7D;AAEA,IAAA,YAAY,CAAC,KAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;YAChC,QAAQ,IAAI,gBAAgB;AAC5B,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAS,EAAE;gBAC9B,aAAa,CAAC,QAAQ,CAAC;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAK,CAAC;YAC9B;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;oBACtB,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;wBAChC,QAAQ,CAAC,iBAAiB,GAAG,KAAK,CAAC,QAAS,GAAG,QAAQ;oBACzD;AACA,oBAAA,OAAO,QAAQ;gBACjB,CAAC,CAAC,CACH;YACH;QACF,CAAC,EAAE,gBAAgB,CAAC;AACpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAK,CAAC;IACxC;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;AAC1B,gBAAA,QAAQ,CAAC,IAAI,GAAG,KAAK;YACvB;AACA,YAAA,OAAO,QAAQ;QACjB,CAAC,CAAC,CACH;QACD,WAAW,CAAC,MAAK;YACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC3E,CAAC,EAAE,GAAG,CAAC;IACT;AAEA,IAAA,oBAAoB,CAAC,IAAY,EAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvE;uGArDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,iBAAiB,CAAA;AACT,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEtD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE;gBAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,UAAU,EAAE;AACtD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;gBACvC;YACF;AACF,QAAA,CAAC,CAAC;IACJ;uGAXW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV9B,2kCAqCA,EAAA,MAAA,EAAA,CAAA,mlEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,2kCAAA,EAAA,MAAA,EAAA,CAAA,mlEAAA,CAAA,EAAA;;;AENzB;;AAEG;;;;"}
@@ -80,7 +80,7 @@ class AdminSearchModalContainer {
80
80
  this.modalService.close('m2m');
81
81
  };
82
82
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: AdminSearchModalContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: AdminSearchModalContainer, isStandalone: true, selector: "admin-search-modal", inputs: { m2em: { classPropertyName: "m2em", publicName: "m2em", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<app-modal-button id=\"m2m\" icon=\"ri-add-line\" />\n<app-modal id=\"m2m\" titleText=\"Ajouter un e\u0301le\u0301ment\">\n <form-reactive-searchbar [search]=\"search()\" (onSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</app-modal>\n", styles: ["::ng-deep admin-search-modal .modal{width:70%!important;left:15%!important;height:65%!important;top:20%!important}::ng-deep admin-search-modal .modal .modal-content{align-content:flex-start!important}\n"], dependencies: [{ kind: "component", type: DsvItemComponent, selector: "dsv-item", inputs: ["icon", "text", "url", "small"], outputs: ["callback"] }, { kind: "component", type: ModalButtonComponent, selector: "app-modal-button", inputs: ["id", "icon", "variant", "text", "color"] }, { kind: "component", type: ModalComponent, selector: "app-modal", inputs: ["id", "titleText", "class"] }, { kind: "component", type: ReactiveSearchbarComponent, selector: "form-reactive-searchbar", inputs: ["search"], outputs: ["onSearch"] }] });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.7", type: AdminSearchModalContainer, isStandalone: true, selector: "admin-search-modal", inputs: { m2em: { classPropertyName: "m2em", publicName: "m2em", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<app-modal-button id=\"m2m\" icon=\"ri-add-line\" />\n<app-modal id=\"m2m\" titleText=\"Ajouter un e\u0301le\u0301ment\">\n <form-reactive-searchbar [search]=\"search()\" (onSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</app-modal>\n", styles: ["::ng-deep admin-search-modal .modal{width:70%!important;left:15%!important;height:65%!important;top:20%!important}::ng-deep admin-search-modal .modal .modal-content{align-content:flex-start!important}\n"], dependencies: [{ kind: "component", type: DsvItemComponent, selector: "dsv-item", inputs: ["icon", "text", "url", "small"], outputs: ["callback"] }, { kind: "component", type: ModalButtonComponent, selector: "app-modal-button", inputs: ["id", "icon", "variant", "text", "color"], outputs: ["callback"] }, { kind: "component", type: ModalComponent, selector: "app-modal", inputs: ["id", "titleText", "class", "canEchap"] }, { kind: "component", type: ReactiveSearchbarComponent, selector: "form-reactive-searchbar", inputs: ["search"], outputs: ["onSearch"] }] });
84
84
  }
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImport: i0, type: AdminSearchModalContainer, decorators: [{
86
86
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-admin.mjs","sources":["../../../projects/ng-dsv/modules/admin/service/admin.service.ts","../../../projects/ng-dsv/modules/admin/container/modal/admin.search.modal.container.ts","../../../projects/ng-dsv/modules/admin/container/modal/admin.search.modal.container.html","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.ts","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.html","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.ts","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.html","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.ts","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.html","../../../projects/ng-dsv/modules/admin/dto/admin.default.dto.ts","../../../projects/ng-dsv/modules/admin/ng-vagabond-lab-ng-dsv-modules-admin.ts"],"sourcesContent":["import { inject, Injectable, signal } from \"@angular/core\";\nimport { ApiDto, ApiService, PageableDto } from \"@ng-vagabond-lab/ng-dsv/api\";\nimport { AdminTabConfDto } from \"../dto/admin.dto\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class AdminService {\n apiService = inject(ApiService);\n\n tabs = signal<AdminTabConfDto>({} as AdminTabConfDto);\n\n datas = signal<PageableDto<ApiDto[]>>({} as PageableDto<ApiDto[]>);\n data = signal<ApiDto>({} as ApiDto);\n\n get(endpoint: string, fields: string, search: string, page: number = 0, max: number = 10, callback?: (data: PageableDto<ApiDto[]>) => void) {\n const url = '/' + endpoint + '/findBy?fields=' + fields + '&values=' + search + '&first=' + page + '&max=' + max;\n\n const callbackResponse = callback ?? ((data: PageableDto<ApiDto[]>) => {\n this.datas.set(data);\n });\n this.apiService.get<PageableDto<ApiDto[]>>(encodeURI(url), callbackResponse)\n }\n\n post(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.post<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n })\n }\n\n put(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.put<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n })\n }\n\n findById(endpoint: string, id: string) {\n const url = '/' + endpoint + '/' + id;\n this.apiService.get<ApiDto>(encodeURI(url), (data) => {\n this.data.set(data);\n })\n }\n}","import {\n Component,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { ReactiveSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { DsvItemComponent } from '@ng-vagabond-lab/ng-dsv/ds/item';\nimport {\n ModalButtonComponent,\n ModalComponent,\n ModalService,\n} from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { ManyToManyDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'admin-search-modal',\n imports: [\n DsvItemComponent,\n ModalButtonComponent,\n ModalComponent,\n ReactiveSearchbarComponent,\n ],\n templateUrl: './admin.search.modal.container.html',\n styleUrls: ['./admin.search.modal.container.scss'],\n})\nexport class AdminSearchModalContainer {\n modalService = inject(ModalService);\n adminService = inject(AdminService);\n\n m2em = input.required<ManyToManyDto>();\n\n search = signal<string>('');\n datas = signal<ApiDto[]>([]);\n\n callback = output<ApiDto>();\n\n constructor() {\n effect(() => {\n this.adminService.get(\n this.m2em().endPoint,\n this.m2em().fields,\n this.search(),\n 0,\n 500,\n (data) => {\n this.datas.set(data.content);\n },\n );\n });\n }\n\n getValue(data: ApiDto, name: string) {\n return data[name as keyof ApiDto] as string;\n }\n\n doSearch(search: string) {\n this.search.set(search);\n }\n\n clickItem = (data: ApiDto) => {\n this.callback.emit(data);\n this.modalService.close('m2m');\n };\n}\n","<app-modal-button id=\"m2m\" icon=\"ri-add-line\" />\n<app-modal id=\"m2m\" titleText=\"Ajouter un élément\">\n <form-reactive-searchbar [search]=\"search()\" (onSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</app-modal>\n","import { Component, effect, input, output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ApiDto, ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport {\n BaseFormReactiveComponent,\n FormReactiveCheckboxComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { AdminSearchModalContainer } from '../../container/modal/admin.search.modal.container';\nimport { FormDto } from '../../dto/admin.dto';\n\n@Component({\n selector: 'dsv-admin-form-component',\n imports: [\n ReactiveFormsModule,\n DsvChipComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n FormReactiveCheckboxComponent,\n AdminSearchModalContainer,\n ],\n templateUrl: './admin.form.component.html',\n styleUrls: ['./admin.form.component.scss'],\n})\nexport class AdminFormComponent extends BaseFormReactiveComponent {\n urlBack = input<string>();\n data = input.required<ApiDto>();\n formConf = input.required<FormDto[]>();\n\n callback = output<ApiDto>();\n\n constructor() {\n super();\n effect(() => {\n this.formBuilder.control('a');\n\n let formControl = {} as { [key: string]: FormControl };\n this.formConf() && this.formConf().forEach((conf) => {\n let value = this.data()[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value) {\n value = (value as string).substring(0, 16);\n }\n const required = conf.required || false;\n formControl[conf.name] = new FormControl(\n { value, disabled: conf.disabled ?? false },\n required ? Validators.required : null,\n );\n });\n this.form = this.formBuilder.group(formControl);\n });\n }\n\n sendForm(data: ApiDto) {\n this.callback.emit(data);\n }\n\n removeValue = (name: string, id: ID) => () => {\n this.form.value[name] = this.form.value[name].filter(\n (value: ApiDto) => value.id !== id,\n );\n };\n\n addValue = (name: string) => (data: ApiDto) => {\n const find = this.form.value[name].find(\n (value: ApiDto) => value.id === data.id,\n );\n if (!find) {\n this.form.value[name].push(data);\n }\n };\n}\n","<app-form-reactive\n [form]=\"form\"\n [urlBack]=\"urlBack()!\"\n (callback)=\"sendForm($event)\"\n>\n <div class=\"form-container\">\n @for (field of formConf(); track field.name) {\n <div [class]=\"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=\"default\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n </div>\n</app-form-reactive>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseRouteComponent } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminFormComponent } from '../../component/form/admin.form.component';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-form',\n imports: [DsvCardComponent, AdminFormComponent],\n templateUrl: './admin.form.container.html',\n styleUrls: ['./admin.form.container.scss'],\n})\nexport class AdminFormContainer extends BaseRouteComponent {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const id = this.routeParams()?.['id'];\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService\n .tabs()\n ?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (isNaN(id)) {\n this.adminService.data.set({} as ApiDto);\n } else {\n this.findById(this.routeParams()?.['id']);\n }\n }\n });\n }\n\n findById(id: string) {\n this.adminService.findById(this.tabConfig()?.name!, id);\n }\n\n sendForm(data: ApiDto) {\n const dataFusion = {\n ...this.adminService.data(),\n ...data,\n };\n if (!dataFusion.id) {\n this.adminService.post(this.tabConfig()?.name!, dataFusion);\n } else {\n this.adminService.put(this.tabConfig()?.name!, dataFusion);\n }\n }\n}\n","<dsv-card [titleText]=\"adminService.data().id ? 'Modification' : 'Ajout'\">\n <dsv-admin-form-component\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BaseRouteComponent } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { PaginateComponent } from '@ng-vagabond-lab/ng-dsv/ds/paginate';\nimport { TabDto, TabsComponent } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { TableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'app-admin-search',\n imports: [\n DsvCardComponent,\n DsvButtonComponent,\n TabsComponent,\n TableComponent,\n PaginateComponent,\n RouterLink,\n ],\n templateUrl: './admin.search.container.html',\n styleUrls: ['./admin.search.container.scss'],\n})\nexport class AdminSearchContainer extends BaseRouteComponent {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n page = signal<number>(0);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService\n .tabs()\n ?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n this.gotoPage(0);\n }\n });\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const tabs = this.adminService.tabs()?.tabs;\n const tabsDtos: TabDto[] = [];\n if (tabs) {\n tabs.forEach((tab) => {\n const tabsDto = {} as TabDto;\n tabsDto.id = tab.name;\n tabsDto.title = tab.name;\n tabsDto.url = '/admin/' + tab.name;\n tabsDtos.push(tabsDto);\n });\n }\n this.tabs.set(tabsDtos);\n }\n });\n }\n\n gotoPage(page: number) {\n this.page.set(page);\n this.adminService.get(\n this.tabConfig()?.name!,\n this.tabConfig()?.findByChamps!,\n '',\n page,\n this.adminService.tabs()?.max,\n );\n }\n}\n","<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>Résulat : {{ adminService.datas().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-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas().content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <app-paginate-component\n [page]=\"page()\"\n [max]=\"adminService.datas().totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n","import { AdminTabDto } from \"./admin.dto\";\n\nexport const ADMIN_COL = [\n { label: 'AUTH.FIELDS.CREATE_DATE', width: '145px', name: 'creationDate', date: true, order: true },\n { label: 'AUTH.FIELDS.ACTIVE', width: '70px', name: 'active', order: true },\n];\n\nexport const ADMIN_PROFILE_M2M = {\n name: 'name',\n endPoint: 'profile',\n fields: 'name%',\n order: 'name',\n orderBy: 'asc',\n};\n\nexport const ADMIN_INPUT = [\n { name: 'creationDate', label: 'AUTH.FIELDS.CREATE_DATE', type: 'datetime-local', className: 'width50', disabled: true, },\n { name: 'updatedDate', label: 'AUTH.FIELDS.UPDATE_DATE', type: 'datetime-local', className: 'width50', disabled: true, },\n { name: 'deletedDate', label: 'AUTH.FIELDS.DELETE_DATE', type: 'datetime-local', className: 'width50', disabled: true, },\n { name: 'active', label: 'AUTH.FIELDS.ACTIVE', type: 'switch', required: false, className: 'width50' },\n];\n\nexport const ADMIN_USER: AdminTabDto[] = [\n {\n name: 'user',\n label: 'AUTH.USER:TITLE',\n findByChamps: 'username%And|Email%',\n sortBy: 'creationDate',\n sortByAsc: 'desc',\n cells: [\n { label: 'AUTH.FIELDS.LOGIN', name: 'username', order: true },\n { label: 'AUTH.FIELDS.EMAIL', width: '240px', name: 'email', order: true },\n { label: 'AUTH.FIELDS.PROFILES', name: 'profiles.name' },\n { label: 'AUTH.FIELDS.LAST_CONNEXION_DATE', width: '150px', name: 'lastConnexionDate', date: true, order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'username', label: 'AUTH.FIELDS.LOGIN', type: 'text', required: true },\n { name: 'password', label: 'AUTH.FIELDS.PASSWORD', type: 'password', required: false },\n { name: 'email', label: 'AUTH.FIELDS.EMAIL', type: 'text', email: true, required: true },\n {\n name: 'profiles',\n label: 'AUTH.FIELDS.PFOFILES',\n type: 'm2m',\n required: false,\n m2m: ADMIN_PROFILE_M2M,\n array: true,\n },\n { name: 'lastConnexionDate', label: 'AUTH.FIELDS.LAST_CONNEXION_DATE', type: 'datetime-local', required: false },\n { name: 'activationToken', label: 'AUTH.FIELDS.ACTIVATION_TOKEN', type: 'text', className: 'width50' },\n { name: 'emailActivation', label: 'AUTH.FIELDS.EMAIL_ACTIVIATION', type: 'switch', className: 'width50' },\n { name: 'identityToken', label: 'AUTH.FIELDS.IDENTITY_TOKEN', type: 'text', className: 'width50' },\n { name: 'identityTokenDateEnd', label: 'AUTH.FIELDS.IDENTITY_TOKEN_DATE', type: 'datetime-local', className: 'width50' },\n { name: 'googleId', label: 'AUTH.FIELDS.GOOGLE_ID', type: 'text', className: 'width50' },\n { name: 'facebookId', label: 'AUTH.FIELDS.FACEBOOK_ID', type: 'text', className: 'width50' },\n ...ADMIN_INPUT,\n ],\n },\n];\n\n\nexport const ADMIN_PROFILE: AdminTabDto[] = [\n {\n name: 'profile',\n label: 'AUTH.PROFILE:TITLE',\n findByChamps: 'name%',\n sortBy: 'name',\n cells: [\n { label: 'AUTH.FIELDS.NAME', name: 'name', order: true },\n { label: 'AUTH.FIELDS.ROLES', name: 'roles', order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'name', label: 'AUTH.FIELDS.NAME', type: 'text', required: true },\n { name: 'roles', label: 'AUTH.FIELDS.ROLES', type: 'text', required: true },\n ...ADMIN_INPUT,\n ],\n },\n];","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-admin.mjs","sources":["../../../projects/ng-dsv/modules/admin/service/admin.service.ts","../../../projects/ng-dsv/modules/admin/container/modal/admin.search.modal.container.ts","../../../projects/ng-dsv/modules/admin/container/modal/admin.search.modal.container.html","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.ts","../../../projects/ng-dsv/modules/admin/component/form/admin.form.component.html","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.ts","../../../projects/ng-dsv/modules/admin/container/form/admin.form.container.html","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.ts","../../../projects/ng-dsv/modules/admin/container/search/admin.search.container.html","../../../projects/ng-dsv/modules/admin/dto/admin.default.dto.ts","../../../projects/ng-dsv/modules/admin/ng-vagabond-lab-ng-dsv-modules-admin.ts"],"sourcesContent":["import { inject, Injectable, signal } from \"@angular/core\";\nimport { ApiDto, ApiService, PageableDto } from \"@ng-vagabond-lab/ng-dsv/api\";\nimport { AdminTabConfDto } from \"../dto/admin.dto\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class AdminService {\n apiService = inject(ApiService);\n\n tabs = signal<AdminTabConfDto>({} as AdminTabConfDto);\n\n datas = signal<PageableDto<ApiDto[]>>({} as PageableDto<ApiDto[]>);\n data = signal<ApiDto>({} as ApiDto);\n\n get(endpoint: string, fields: string, search: string, page: number = 0, max: number = 10, callback?: (data: PageableDto<ApiDto[]>) => void) {\n const url = '/' + endpoint + '/findBy?fields=' + fields + '&values=' + search + '&first=' + page + '&max=' + max;\n\n const callbackResponse = callback ?? ((data: PageableDto<ApiDto[]>) => {\n this.datas.set(data);\n });\n this.apiService.get<PageableDto<ApiDto[]>>(encodeURI(url), callbackResponse)\n }\n\n post(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.post<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n })\n }\n\n put(endpoint: string, data: ApiDto) {\n const url = '/' + endpoint;\n this.apiService.put<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n })\n }\n\n findById(endpoint: string, id: string) {\n const url = '/' + endpoint + '/' + id;\n this.apiService.get<ApiDto>(encodeURI(url), (data) => {\n this.data.set(data);\n })\n }\n}","import {\n Component,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { ReactiveSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { DsvItemComponent } from '@ng-vagabond-lab/ng-dsv/ds/item';\nimport {\n ModalButtonComponent,\n ModalComponent,\n ModalService,\n} from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { ManyToManyDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'admin-search-modal',\n imports: [\n DsvItemComponent,\n ModalButtonComponent,\n ModalComponent,\n ReactiveSearchbarComponent,\n ],\n templateUrl: './admin.search.modal.container.html',\n styleUrls: ['./admin.search.modal.container.scss'],\n})\nexport class AdminSearchModalContainer {\n modalService = inject(ModalService);\n adminService = inject(AdminService);\n\n m2em = input.required<ManyToManyDto>();\n\n search = signal<string>('');\n datas = signal<ApiDto[]>([]);\n\n callback = output<ApiDto>();\n\n constructor() {\n effect(() => {\n this.adminService.get(\n this.m2em().endPoint,\n this.m2em().fields,\n this.search(),\n 0,\n 500,\n (data) => {\n this.datas.set(data.content);\n },\n );\n });\n }\n\n getValue(data: ApiDto, name: string) {\n return data[name as keyof ApiDto] as string;\n }\n\n doSearch(search: string) {\n this.search.set(search);\n }\n\n clickItem = (data: ApiDto) => {\n this.callback.emit(data);\n this.modalService.close('m2m');\n };\n}\n","<app-modal-button id=\"m2m\" icon=\"ri-add-line\" />\n<app-modal id=\"m2m\" titleText=\"Ajouter un élément\">\n <form-reactive-searchbar [search]=\"search()\" (onSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item\n [text]=\"getValue(data, m2em().name)\"\n (callback)=\"clickItem(data)\"\n />\n }\n </div>\n</app-modal>\n","import { Component, effect, input, output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ApiDto, ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport {\n BaseFormReactiveComponent,\n FormReactiveCheckboxComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { AdminSearchModalContainer } from '../../container/modal/admin.search.modal.container';\nimport { FormDto } from '../../dto/admin.dto';\n\n@Component({\n selector: 'dsv-admin-form-component',\n imports: [\n ReactiveFormsModule,\n DsvChipComponent,\n FormReactiveComponent,\n FormReactiveInputComponent,\n FormReactiveCheckboxComponent,\n AdminSearchModalContainer,\n ],\n templateUrl: './admin.form.component.html',\n styleUrls: ['./admin.form.component.scss'],\n})\nexport class AdminFormComponent extends BaseFormReactiveComponent {\n urlBack = input<string>();\n data = input.required<ApiDto>();\n formConf = input.required<FormDto[]>();\n\n callback = output<ApiDto>();\n\n constructor() {\n super();\n effect(() => {\n this.formBuilder.control('a');\n\n let formControl = {} as { [key: string]: FormControl };\n this.formConf() && this.formConf().forEach((conf) => {\n let value = this.data()[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value) {\n value = (value as string).substring(0, 16);\n }\n const required = conf.required || false;\n formControl[conf.name] = new FormControl(\n { value, disabled: conf.disabled ?? false },\n required ? Validators.required : null,\n );\n });\n this.form = this.formBuilder.group(formControl);\n });\n }\n\n sendForm(data: ApiDto) {\n this.callback.emit(data);\n }\n\n removeValue = (name: string, id: ID) => () => {\n this.form.value[name] = this.form.value[name].filter(\n (value: ApiDto) => value.id !== id,\n );\n };\n\n addValue = (name: string) => (data: ApiDto) => {\n const find = this.form.value[name].find(\n (value: ApiDto) => value.id === data.id,\n );\n if (!find) {\n this.form.value[name].push(data);\n }\n };\n}\n","<app-form-reactive\n [form]=\"form\"\n [urlBack]=\"urlBack()!\"\n (callback)=\"sendForm($event)\"\n>\n <div class=\"form-container\">\n @for (field of formConf(); track field.name) {\n <div [class]=\"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=\"default\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n </div>\n</app-form-reactive>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseRouteComponent } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminFormComponent } from '../../component/form/admin.form.component';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-form',\n imports: [DsvCardComponent, AdminFormComponent],\n templateUrl: './admin.form.container.html',\n styleUrls: ['./admin.form.container.scss'],\n})\nexport class AdminFormContainer extends BaseRouteComponent {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const id = this.routeParams()?.['id'];\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService\n .tabs()\n ?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (isNaN(id)) {\n this.adminService.data.set({} as ApiDto);\n } else {\n this.findById(this.routeParams()?.['id']);\n }\n }\n });\n }\n\n findById(id: string) {\n this.adminService.findById(this.tabConfig()?.name!, id);\n }\n\n sendForm(data: ApiDto) {\n const dataFusion = {\n ...this.adminService.data(),\n ...data,\n };\n if (!dataFusion.id) {\n this.adminService.post(this.tabConfig()?.name!, dataFusion);\n } else {\n this.adminService.put(this.tabConfig()?.name!, dataFusion);\n }\n }\n}\n","<dsv-card [titleText]=\"adminService.data().id ? 'Modification' : 'Ajout'\">\n <dsv-admin-form-component\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BaseRouteComponent } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { PaginateComponent } from '@ng-vagabond-lab/ng-dsv/ds/paginate';\nimport { TabDto, TabsComponent } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { TableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'app-admin-search',\n imports: [\n DsvCardComponent,\n DsvButtonComponent,\n TabsComponent,\n TableComponent,\n PaginateComponent,\n RouterLink,\n ],\n templateUrl: './admin.search.container.html',\n styleUrls: ['./admin.search.container.scss'],\n})\nexport class AdminSearchContainer extends BaseRouteComponent {\n adminService = inject(AdminService);\n platformService = inject(PlatformService);\n\n tabs = signal<TabDto[]>([]);\n tab = signal<string>('user');\n tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n page = signal<number>(0);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService\n .tabs()\n ?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n this.gotoPage(0);\n }\n });\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const tabs = this.adminService.tabs()?.tabs;\n const tabsDtos: TabDto[] = [];\n if (tabs) {\n tabs.forEach((tab) => {\n const tabsDto = {} as TabDto;\n tabsDto.id = tab.name;\n tabsDto.title = tab.name;\n tabsDto.url = '/admin/' + tab.name;\n tabsDtos.push(tabsDto);\n });\n }\n this.tabs.set(tabsDtos);\n }\n });\n }\n\n gotoPage(page: number) {\n this.page.set(page);\n this.adminService.get(\n this.tabConfig()?.name!,\n this.tabConfig()?.findByChamps!,\n '',\n page,\n this.adminService.tabs()?.max,\n );\n }\n}\n","<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>Résulat : {{ adminService.datas().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-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas().content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <app-paginate-component\n [page]=\"page()\"\n [max]=\"adminService.datas().totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n","import { AdminTabDto } from \"./admin.dto\";\n\nexport const ADMIN_COL = [\n { label: 'AUTH.FIELDS.CREATE_DATE', width: '145px', name: 'creationDate', date: true, order: true },\n { label: 'AUTH.FIELDS.ACTIVE', width: '70px', name: 'active', order: true },\n];\n\nexport const ADMIN_PROFILE_M2M = {\n name: 'name',\n endPoint: 'profile',\n fields: 'name%',\n order: 'name',\n orderBy: 'asc',\n};\n\nexport const ADMIN_INPUT = [\n { name: 'creationDate', label: 'AUTH.FIELDS.CREATE_DATE', type: 'datetime-local', className: 'width50', disabled: true, },\n { name: 'updatedDate', label: 'AUTH.FIELDS.UPDATE_DATE', type: 'datetime-local', className: 'width50', disabled: true, },\n { name: 'deletedDate', label: 'AUTH.FIELDS.DELETE_DATE', type: 'datetime-local', className: 'width50', disabled: true, },\n { name: 'active', label: 'AUTH.FIELDS.ACTIVE', type: 'switch', required: false, className: 'width50' },\n];\n\nexport const ADMIN_USER: AdminTabDto[] = [\n {\n name: 'user',\n label: 'AUTH.USER:TITLE',\n findByChamps: 'username%And|Email%',\n sortBy: 'creationDate',\n sortByAsc: 'desc',\n cells: [\n { label: 'AUTH.FIELDS.LOGIN', name: 'username', order: true },\n { label: 'AUTH.FIELDS.EMAIL', width: '240px', name: 'email', order: true },\n { label: 'AUTH.FIELDS.PROFILES', name: 'profiles.name' },\n { label: 'AUTH.FIELDS.LAST_CONNEXION_DATE', width: '150px', name: 'lastConnexionDate', date: true, order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'username', label: 'AUTH.FIELDS.LOGIN', type: 'text', required: true },\n { name: 'password', label: 'AUTH.FIELDS.PASSWORD', type: 'password', required: false },\n { name: 'email', label: 'AUTH.FIELDS.EMAIL', type: 'text', email: true, required: true },\n {\n name: 'profiles',\n label: 'AUTH.FIELDS.PFOFILES',\n type: 'm2m',\n required: false,\n m2m: ADMIN_PROFILE_M2M,\n array: true,\n },\n { name: 'lastConnexionDate', label: 'AUTH.FIELDS.LAST_CONNEXION_DATE', type: 'datetime-local', required: false },\n { name: 'activationToken', label: 'AUTH.FIELDS.ACTIVATION_TOKEN', type: 'text', className: 'width50' },\n { name: 'emailActivation', label: 'AUTH.FIELDS.EMAIL_ACTIVIATION', type: 'switch', className: 'width50' },\n { name: 'identityToken', label: 'AUTH.FIELDS.IDENTITY_TOKEN', type: 'text', className: 'width50' },\n { name: 'identityTokenDateEnd', label: 'AUTH.FIELDS.IDENTITY_TOKEN_DATE', type: 'datetime-local', className: 'width50' },\n { name: 'googleId', label: 'AUTH.FIELDS.GOOGLE_ID', type: 'text', className: 'width50' },\n { name: 'facebookId', label: 'AUTH.FIELDS.FACEBOOK_ID', type: 'text', className: 'width50' },\n ...ADMIN_INPUT,\n ],\n },\n];\n\n\nexport const ADMIN_PROFILE: AdminTabDto[] = [\n {\n name: 'profile',\n label: 'AUTH.PROFILE:TITLE',\n findByChamps: 'name%',\n sortBy: 'name',\n cells: [\n { label: 'AUTH.FIELDS.NAME', name: 'name', order: true },\n { label: 'AUTH.FIELDS.ROLES', name: 'roles', order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'name', label: 'AUTH.FIELDS.NAME', type: 'text', required: true },\n { name: 'roles', label: 'AUTH.FIELDS.ROLES', type: 'text', required: true },\n ...ADMIN_INPUT,\n ],\n },\n];","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-vagabond-lab/ng-dsv",
3
- "version": "0.1.50",
3
+ "version": "0.1.52",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0"
@@ -35,22 +35,25 @@ declare class ModalButtonComponent {
35
35
  variant: _angular_core.InputSignal<ButtonVariantType>;
36
36
  text: _angular_core.InputSignal<string>;
37
37
  color: _angular_core.InputSignal<ColorType>;
38
+ callback: _angular_core.OutputEmitterRef<void>;
38
39
  doToogle: () => void;
39
40
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalButtonComponent, never>;
40
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalButtonComponent, "app-modal-button", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
41
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalButtonComponent, "app-modal-button", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, { "callback": "callback"; }, never, ["*"], true, never>;
41
42
  }
42
43
 
43
44
  declare class ModalComponent {
44
45
  id: _angular_core.InputSignal<string>;
45
46
  titleText: _angular_core.InputSignal<string>;
46
47
  class: _angular_core.InputSignal<string>;
48
+ canEchap: _angular_core.InputSignal<boolean>;
47
49
  isOpen: _angular_core.WritableSignal<boolean>;
48
50
  modalService: ModalService;
49
51
  menuService: MenuService;
50
52
  constructor();
53
+ onEscapeKey(): void;
51
54
  close: () => void;
52
55
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
53
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "app-modal", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "titleText": { "alias": "titleText"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*", "modal-footer"], true, never>;
56
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "app-modal", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "titleText": { "alias": "titleText"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "canEchap": { "alias": "canEchap"; "required": false; "isSignal": true; }; }, {}, never, ["*", "modal-footer"], true, never>;
54
57
  }
55
58
 
56
59
  export { ModalAlertComponent, ModalButtonComponent, ModalComponent, ModalService };
@@ -4,11 +4,11 @@ type ToastType = 'success' | 'error' | 'warning' | 'info';
4
4
  interface ToastDto {
5
5
  uuid?: string;
6
6
  text: string;
7
- isClose?: boolean;
7
+ open?: boolean;
8
8
  type?: ToastType;
9
9
  filled?: boolean;
10
10
  duration?: number;
11
- durationLeft?: number;
11
+ remainingDuration?: number;
12
12
  }
13
13
 
14
14
  declare const MAX_TOASTS = 10;