@ng-vagabond-lab/ng-dsv 0.0.52 → 0.0.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +2 -2
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
- package/package.json +1 -1
- package/ds/toast/index.d.ts +0 -40
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +0 -80
- package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +0 -1
|
@@ -50,13 +50,13 @@ class ModalComponent {
|
|
|
50
50
|
this.modalService.close(this.id());
|
|
51
51
|
};
|
|
52
52
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", 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>{{ title() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"default\">\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%;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;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 .dark .modal{background:var(--background-dark)}::ng-deep .dark .modal-header{border-color
|
|
53
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", 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>{{ title() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"default\">\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%;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;padding:10px;align-content:center;background-color:#fff}.modal .modal-footer{padding:10px;background-color:#fff}::ng-deep .modal-footer>div{display:flex;gap:.5rem;justify-content:flex-end}::ng-deep .light .modal .modal-content{background-color:var(--text-dark)}::ng-deep .light .modal .modal-footer{background-color:var(--text-dark)}::ng-deep .dark .modal{background:var(--background-dark)}::ng-deep .dark .modal-header{border-color:var(--text-dark)}@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", "color", "icon", "iconEnd", "width", "variant", "fullwidth", "show", "disabled", "noHover"], outputs: ["callback"] }] });
|
|
54
54
|
}
|
|
55
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ModalComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
57
|
args: [{ selector: 'app-modal', imports: [
|
|
58
58
|
DsvButtonComponent
|
|
59
|
-
], standalone: true, template: "@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ title() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"default\">\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%;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;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 .dark .modal{background:var(--background-dark)}::ng-deep .dark .modal-header{border-color
|
|
59
|
+
], standalone: true, template: "@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ title() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"default\">\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%;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;padding:10px;align-content:center;background-color:#fff}.modal .modal-footer{padding:10px;background-color:#fff}::ng-deep .modal-footer>div{display:flex;gap:.5rem;justify-content:flex-end}::ng-deep .light .modal .modal-content{background-color:var(--text-dark)}::ng-deep .light .modal .modal-footer{background-color:var(--text-dark)}::ng-deep .dark .modal{background:var(--background-dark)}::ng-deep .dark .modal-header{border-color:var(--text-dark)}@media screen and (max-width: 600px){.modal{width:calc(100% - 16px)!important;left:8px!important}}\n"] }]
|
|
60
60
|
}], ctorParameters: () => [] });
|
|
61
61
|
|
|
62
62
|
class ModalAlertComponent {
|
|
@@ -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: [\n DsvButtonComponent\n ],\n standalone: true,\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent {\n id = input.required<string>();\n title = 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}","@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ title() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"default\">\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 { Component, effect, inject, input, output, signal } from \"@angular/core\";\nimport { DsvButtonComponent } from \"@ng-vagabond-lab/ng-dsv/ds/button\";\nimport { ModalService } from \"../../service/modal.service\";\nimport { ModalComponent } from \"../modal.component\";\n\n@Component({\n selector: 'app-modal-alert',\n imports: [\n ModalComponent,\n DsvButtonComponent\n ],\n standalone: true,\n templateUrl: './modal-alert.component.html',\n})\nexport class ModalAlertComponent {\n id = input.required<string>();\n title = 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()));\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}","<app-modal [id]=\"id()\" [title]=\"title()\">\n {{ text() }}\n <div ngProjectAs=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button (callback)=\"doClickClose()\" color=\"error\">\n {{ buttonClose() }}\n </dsv-button>\n }\n <dsv-button (callback)=\"doClick()\" color=\"success\">\n {{ button() }}\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 { ColorType } from \"@ng-vagabond-lab/ng-dsv/type\";\nimport { ModalService } from \"../../service/modal.service\";\n\n@Component({\n selector: 'app-modal-button',\n imports: [\n DsvButtonComponent\n ],\n standalone: true,\n templateUrl: './modal-button.component.html',\n})\nexport class ModalButtonComponent {\n id = input.required<string>();\n icon = input<string>('');\n text = input<string>('');\n color = input<ColorType>('primary');\n\n modalService = inject(ModalService);\n\n doToogle = () => {\n this.modalService.toggle(this.id());\n }\n}","<dsv-button\n [color]=\"icon() ? 'default' : color()\"\n [icon]=\"icon()\"\n [variant]=\"icon() ? 'text' : 'contained'\"\n color=\"inherit\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n <ng-content></ng-content>\n</dsv-button>\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, 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: [\n DsvButtonComponent\n ],\n standalone: true,\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent {\n id = input.required<string>();\n title = 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}","@if (isOpen()) {\n <div class=\"modal-overlay\"></div>\n <div [class]=\"'modal ' + class()\">\n <div class=\"modal-header\">\n <b>{{ title() }}</b>\n <dsv-button (callback)=\"close()\" variant=\"text\" color=\"default\">\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 { Component, effect, inject, input, output, signal } from \"@angular/core\";\nimport { DsvButtonComponent } from \"@ng-vagabond-lab/ng-dsv/ds/button\";\nimport { ModalService } from \"../../service/modal.service\";\nimport { ModalComponent } from \"../modal.component\";\n\n@Component({\n selector: 'app-modal-alert',\n imports: [\n ModalComponent,\n DsvButtonComponent\n ],\n standalone: true,\n templateUrl: './modal-alert.component.html',\n})\nexport class ModalAlertComponent {\n id = input.required<string>();\n title = 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()));\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}","<app-modal [id]=\"id()\" [title]=\"title()\">\n {{ text() }}\n <div ngProjectAs=\"modal-footer\">\n @if (buttonClose()) {\n <dsv-button (callback)=\"doClickClose()\" color=\"error\">\n {{ buttonClose() }}\n </dsv-button>\n }\n <dsv-button (callback)=\"doClick()\" color=\"success\">\n {{ button() }}\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 { ColorType } from \"@ng-vagabond-lab/ng-dsv/type\";\nimport { ModalService } from \"../../service/modal.service\";\n\n@Component({\n selector: 'app-modal-button',\n imports: [\n DsvButtonComponent\n ],\n standalone: true,\n templateUrl: './modal-button.component.html',\n})\nexport class ModalButtonComponent {\n id = input.required<string>();\n icon = input<string>('');\n text = input<string>('');\n color = input<ColorType>('primary');\n\n modalService = inject(ModalService);\n\n doToogle = () => {\n this.modalService.toggle(this.id());\n }\n}","<dsv-button\n [color]=\"icon() ? 'default' : color()\"\n [icon]=\"icon()\"\n [variant]=\"icon() ? 'text' : 'contained'\"\n color=\"inherit\"\n (callback)=\"doToogle()\"\n>\n {{ text() }}\n <ng-content></ng-content>\n</dsv-button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAGa,YAAY,CAAA;AACJ,IAAA,MAAM,GAAG,IAAI,GAAG,EAA8C;AAE/E,IAAA,SAAS,CAAC,EAAU,EAAA;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;;AAElC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK;;AAG3C,IAAA,IAAI,CAAC,EAAU,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;;AAGlC,IAAA,KAAK,CAAC,EAAU,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;;AAGnC,IAAA,MAAM,CAAC,EAAU,EAAA;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC;YAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;uGArBnB,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,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCYrB,cAAc,CAAA;AACvB,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAEzB,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;AAE/B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;AAChE,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;;AAE9C,SAAC,CAAC;;IAGN,KAAK,GAAG,MAAK;QACT,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,KAAC;uGArBQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd3B,+dAiBA,EAAA,MAAA,EAAA,CAAA,y9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTQ,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACZ,OAAA,EAAA;wBACL;AACH,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,+dAAA,EAAA,MAAA,EAAA,CAAA,y9BAAA,CAAA,EAAA;;;MEIP,mBAAmB,CAAA;AAC5B,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAS,MAAM,CAAC;AAC5B,IAAA,MAAM,GAAG,KAAK,CAAS,QAAQ,CAAC;IAChC,WAAW,GAAG,KAAK,EAAU;IAC7B,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;AAE/B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAEnC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC;;IAGN,OAAO,GAAG,MAAK;QACX,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxB,KAAC;IAED,YAAY,GAAG,MAAK;QAChB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACtC,KAAC;uGAzBQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ECdhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2XAaA,EDLQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,wFACd,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACL,cAAc;wBACd;AACH,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,2XAAA,EAAA;;;MEEP,oBAAoB,CAAA;AAC7B,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC7B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;AACxB,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;AACxB,IAAA,KAAK,GAAG,KAAK,CAAY,SAAS,CAAC;AAEnC,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAEnC,QAAQ,GAAG,MAAK;QACZ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACvC,KAAC;uGAVQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjC,gPAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFQ,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EACnB,OAAA,EAAA;wBACL;AACH,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,gPAAA,EAAA;;;AEVpB;;AAEG;;;;"}
|
package/package.json
CHANGED
package/ds/toast/index.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
|
|
3
|
-
type ToastType = 'success' | 'error' | 'warning' | 'info';
|
|
4
|
-
interface ToastDto {
|
|
5
|
-
uuid?: string;
|
|
6
|
-
text: string;
|
|
7
|
-
isClose?: boolean;
|
|
8
|
-
type?: ToastType;
|
|
9
|
-
filled?: boolean;
|
|
10
|
-
duration?: number;
|
|
11
|
-
durationLeft?: number;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
declare const MAX_TOASTS = 10;
|
|
15
|
-
declare const DURATION_DEFAULT = 10000;
|
|
16
|
-
declare const DURATION_TIMEOUT = 10;
|
|
17
|
-
declare class ToastService {
|
|
18
|
-
toastShows: i0.WritableSignal<ToastDto[]>;
|
|
19
|
-
toasts: i0.WritableSignal<ToastDto[]>;
|
|
20
|
-
showToast(toast: ToastDto): void;
|
|
21
|
-
consumeToast(toast: ToastDto): void;
|
|
22
|
-
closeToast(uuid: string): void;
|
|
23
|
-
removeToastFromQueue(uuid: string): void;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ToastService, never>;
|
|
25
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ToastService>;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
type Theme = {
|
|
29
|
-
primary: string;
|
|
30
|
-
text: string;
|
|
31
|
-
};
|
|
32
|
-
declare class DsvToastComponent {
|
|
33
|
-
protected readonly toastService: ToastService;
|
|
34
|
-
constructor();
|
|
35
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DsvToastComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DsvToastComponent, "dsv-toast", never, {}, {}, never, never, true, never>;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export { DURATION_DEFAULT, DURATION_TIMEOUT, DsvToastComponent, MAX_TOASTS, ToastService };
|
|
40
|
-
export type { Theme, ToastDto, ToastType };
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import * as i1 from '@angular/common';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from '@angular/core';
|
|
4
|
-
import { signal, Injectable, inject, effect, Component } from '@angular/core';
|
|
5
|
-
|
|
6
|
-
const MAX_TOASTS = 10;
|
|
7
|
-
const DURATION_DEFAULT = 10000;
|
|
8
|
-
const DURATION_TIMEOUT = 10;
|
|
9
|
-
class ToastService {
|
|
10
|
-
toastShows = signal([]);
|
|
11
|
-
toasts = signal([]);
|
|
12
|
-
showToast(toast) {
|
|
13
|
-
toast.uuid = crypto.randomUUID();
|
|
14
|
-
toast.type = toast.type ?? 'success';
|
|
15
|
-
toast.duration = toast.duration ?? DURATION_DEFAULT;
|
|
16
|
-
toast.durationLeft = toast.duration;
|
|
17
|
-
toast.filled = toast.filled ?? false;
|
|
18
|
-
this.toasts.update((toasts) => [...toasts, toast]);
|
|
19
|
-
}
|
|
20
|
-
consumeToast(toast) {
|
|
21
|
-
this.toastShows.update((toasts) => [...toasts, toast]);
|
|
22
|
-
let duration = 0;
|
|
23
|
-
const interval = setInterval(() => {
|
|
24
|
-
duration += DURATION_TIMEOUT;
|
|
25
|
-
if (duration > toast.duration) {
|
|
26
|
-
clearInterval(interval);
|
|
27
|
-
this.closeToast(toast.uuid);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
this.toastShows.update((toasts) => toasts.map((oneToast) => {
|
|
31
|
-
if (oneToast.uuid === toast.uuid) {
|
|
32
|
-
oneToast.durationLeft = toast.duration - duration;
|
|
33
|
-
}
|
|
34
|
-
return oneToast;
|
|
35
|
-
}));
|
|
36
|
-
}
|
|
37
|
-
}, DURATION_TIMEOUT);
|
|
38
|
-
this.removeToastFromQueue(toast.uuid);
|
|
39
|
-
}
|
|
40
|
-
closeToast(uuid) {
|
|
41
|
-
this.toastShows.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
|
|
42
|
-
}
|
|
43
|
-
removeToastFromQueue(uuid) {
|
|
44
|
-
this.toasts.update((toasts) => toasts.filter((t) => t.uuid !== uuid));
|
|
45
|
-
}
|
|
46
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
47
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ToastService, providedIn: 'root' });
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ToastService, decorators: [{
|
|
50
|
-
type: Injectable,
|
|
51
|
-
args: [{
|
|
52
|
-
providedIn: 'root',
|
|
53
|
-
}]
|
|
54
|
-
}] });
|
|
55
|
-
|
|
56
|
-
class DsvToastComponent {
|
|
57
|
-
toastService = inject(ToastService);
|
|
58
|
-
constructor() {
|
|
59
|
-
effect(() => {
|
|
60
|
-
for (const toast of this.toastService.toasts()) {
|
|
61
|
-
if (this.toastService.toastShows().length < MAX_TOASTS) {
|
|
62
|
-
this.toastService.consumeToast(toast);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DsvToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", 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:100000000;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1.2rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:300px;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 .light .dsv-toast-container .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast-container .dsv-toast{background-color:#000;color:#fff}::ng-deep .dark .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast .close-button:hover{background-color:#212121!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
69
|
-
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DsvToastComponent, decorators: [{
|
|
71
|
-
type: Component,
|
|
72
|
-
args: [{ selector: 'dsv-toast', standalone: true, 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:100000000;bottom:0;right:0;display:flex;flex-direction:column;gap:8px;overflow:hidden;padding:5px}.dsv-toast-container .dsv-toast{font-size:1.2rem;border-radius:2px;box-shadow:0 0 0 .5px #0006;min-width:300px;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 .light .dsv-toast-container .dsv-toast{background-color:#fff;color:#000}::ng-deep .dark .dsv-toast-container .dsv-toast{background-color:#000;color:#fff}::ng-deep .dark .dsv-toast .close-button{color:#fff}::ng-deep .dark .dsv-toast .close-button:hover{background-color:#212121!important}\n"] }]
|
|
73
|
-
}], ctorParameters: () => [] });
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Generated bundle index. Do not edit.
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
export { DURATION_DEFAULT, DURATION_TIMEOUT, DsvToastComponent, MAX_TOASTS, ToastService };
|
|
80
|
-
//# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-toast.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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 = 10000;\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 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\nexport type Theme = {\n primary: string;\n text: string;\n};\n\n@Component({\n selector: 'dsv-toast',\n standalone: true,\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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"}
|