@muxima-ui/confirmation-dialog 1.0.0

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.
@@ -0,0 +1,3 @@
1
+ export * from './lib/confirmation-dialog/confirmation-dialog.component';
2
+ export * from './lib/confirmation-dialog/confirmation-dialog.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9vdmVybGF5L2NvbmZpcm1hdGlvbi1kaWFsb2cvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx1REFBdUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuc2VydmljZSc7XHJcbiJdfQ==
@@ -0,0 +1,109 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./confirmation-dialog.service";
5
+ import * as i2 from "@angular/common";
6
+ export class ConfirmationDialogComponent {
7
+ constructor(confirmationService) {
8
+ this.confirmationService = confirmationService;
9
+ this.title = 'Confirmar Ação';
10
+ this.message = 'Tem certeza que deseja realizar esta ação?';
11
+ this.variant = 'info';
12
+ this.confirmText = 'Confirmar';
13
+ this.cancelText = 'Cancelar';
14
+ this.isOpen = false;
15
+ this.confirmed = new EventEmitter();
16
+ this.cancelled = new EventEmitter();
17
+ this.closed = new EventEmitter();
18
+ }
19
+ ngOnInit() {
20
+ this.subscription = this.confirmationService.openDialog$.subscribe((config) => {
21
+ this.applyConfig(config);
22
+ this.open();
23
+ });
24
+ }
25
+ ngOnDestroy() {
26
+ this.subscription?.unsubscribe();
27
+ }
28
+ onEscapeKey() {
29
+ if (this.isOpen) {
30
+ this.cancel();
31
+ }
32
+ }
33
+ open() {
34
+ this.isOpen = true;
35
+ document.body.style.overflow = 'hidden';
36
+ }
37
+ close() {
38
+ this.isOpen = false;
39
+ this.closed.emit();
40
+ document.body.style.overflow = '';
41
+ }
42
+ confirm() {
43
+ this.confirmed.emit();
44
+ this.confirmationService.sendResult(true);
45
+ this.close();
46
+ }
47
+ cancel() {
48
+ this.cancelled.emit();
49
+ this.confirmationService.sendResult(false);
50
+ this.close();
51
+ }
52
+ applyConfig(config) {
53
+ this.title = config.title;
54
+ this.message = config.message;
55
+ if (config.variant)
56
+ this.variant = config.variant;
57
+ if (config.confirmText)
58
+ this.confirmText = config.confirmText;
59
+ if (config.cancelText)
60
+ this.cancelText = config.cancelText;
61
+ if (config.icon)
62
+ this.icon = config.icon;
63
+ }
64
+ getVariantIcon() {
65
+ if (this.icon)
66
+ return this.icon;
67
+ switch (this.variant) {
68
+ case 'danger':
69
+ return '⚠️';
70
+ case 'warning':
71
+ return '⚡';
72
+ case 'success':
73
+ return '✅';
74
+ case 'info':
75
+ default:
76
+ return 'ℹ️';
77
+ }
78
+ }
79
+ }
80
+ ConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1.ConfirmationDialogService }], target: i0.ɵɵFactoryTarget.Component });
81
+ ConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ConfirmationDialogComponent, isStandalone: true, selector: "muxima-confirmation-dialog", inputs: { title: "title", message: "message", variant: "variant", confirmText: "confirmText", cancelText: "cancelText", icon: "icon", isOpen: "isOpen" }, outputs: { confirmed: "confirmed", cancelled: "cancelled", closed: "closed" }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: "<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation-dialog-container{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-panel{position:relative;background:white;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:500px;width:100%;padding:32px;animation:scaleIn .3s cubic-bezier(.4,0,.2,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dialog-icon{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.dialog-icon .icon-emoji{font-size:64px;animation:bounceIn .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes bounceIn{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.dialog-header{margin-bottom:16px;text-align:center}.dialog-title{font-size:28px;font-weight:800;color:#1f2937;margin:0}.dialog-content{margin-bottom:32px;text-align:center}.dialog-message{font-size:16px;line-height:1.6;color:#6b7280;margin:0}.dialog-footer{display:flex;gap:12px;justify-content:flex-end}.btn{padding:12px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;outline:none}.btn:active{transform:scale(.95)}.btn-cancel{background:#f3f4f6;color:#6b7280}.btn-cancel:hover{background:#e5e7eb;color:#374151}.btn-confirm{color:#fff;min-width:120px}.btn-info{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);box-shadow:0 4px 12px #667eea66}.btn-info:hover{box-shadow:0 6px 16px #667eea80;transform:translateY(-2px)}.btn-success{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 4px 12px #10b98166}.btn-success:hover{box-shadow:0 6px 16px #10b98180;transform:translateY(-2px)}.btn-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 4px 12px #f59e0b66}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b80;transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 12px #ef444466}.btn-danger:hover{box-shadow:0 6px 16px #ef444480;transform:translateY(-2px)}.variant-danger{border-top:4px solid #ef4444}.variant-warning{border-top:4px solid #f59e0b}.variant-success{border-top:4px solid #10b981}.variant-info{border-top:4px solid #667eea}@media (max-width: 640px){.dialog-panel{padding:24px}.dialog-icon .icon-emoji{font-size:48px}.dialog-title{font-size:24px}.dialog-message{font-size:14px}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'muxima-confirmation-dialog', standalone: true, imports: [CommonModule], template: "<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation-dialog-container{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-panel{position:relative;background:white;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:500px;width:100%;padding:32px;animation:scaleIn .3s cubic-bezier(.4,0,.2,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dialog-icon{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.dialog-icon .icon-emoji{font-size:64px;animation:bounceIn .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes bounceIn{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.dialog-header{margin-bottom:16px;text-align:center}.dialog-title{font-size:28px;font-weight:800;color:#1f2937;margin:0}.dialog-content{margin-bottom:32px;text-align:center}.dialog-message{font-size:16px;line-height:1.6;color:#6b7280;margin:0}.dialog-footer{display:flex;gap:12px;justify-content:flex-end}.btn{padding:12px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;outline:none}.btn:active{transform:scale(.95)}.btn-cancel{background:#f3f4f6;color:#6b7280}.btn-cancel:hover{background:#e5e7eb;color:#374151}.btn-confirm{color:#fff;min-width:120px}.btn-info{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);box-shadow:0 4px 12px #667eea66}.btn-info:hover{box-shadow:0 6px 16px #667eea80;transform:translateY(-2px)}.btn-success{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 4px 12px #10b98166}.btn-success:hover{box-shadow:0 6px 16px #10b98180;transform:translateY(-2px)}.btn-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 4px 12px #f59e0b66}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b80;transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 12px #ef444466}.btn-danger:hover{box-shadow:0 6px 16px #ef444480;transform:translateY(-2px)}.variant-danger{border-top:4px solid #ef4444}.variant-warning{border-top:4px solid #f59e0b}.variant-success{border-top:4px solid #10b981}.variant-info{border-top:4px solid #667eea}@media (max-width: 640px){.dialog-panel{padding:24px}.dialog-icon .icon-emoji{font-size:48px}.dialog-title{font-size:24px}.dialog-message{font-size:14px}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}\n"] }]
85
+ }], ctorParameters: function () { return [{ type: i1.ConfirmationDialogService }]; }, propDecorators: { title: [{
86
+ type: Input
87
+ }], message: [{
88
+ type: Input
89
+ }], variant: [{
90
+ type: Input
91
+ }], confirmText: [{
92
+ type: Input
93
+ }], cancelText: [{
94
+ type: Input
95
+ }], icon: [{
96
+ type: Input
97
+ }], isOpen: [{
98
+ type: Input
99
+ }], confirmed: [{
100
+ type: Output
101
+ }], cancelled: [{
102
+ type: Output
103
+ }], closed: [{
104
+ type: Output
105
+ }], onEscapeKey: [{
106
+ type: HostListener,
107
+ args: ['document:keydown.escape']
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9vdmVybGF5L2NvbmZpcm1hdGlvbi1kaWFsb2cvc3JjL2xpYi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcmxheS9jb25maXJtYXRpb24tZGlhbG9nL3NyYy9saWIvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFXL0MsTUFBTSxPQUFPLDJCQUEyQjtJQWV0QyxZQUFvQixtQkFBOEM7UUFBOUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUEyQjtRQWR6RCxVQUFLLEdBQUcsZ0JBQWdCLENBQUM7UUFDekIsWUFBTyxHQUFHLDRDQUE0QyxDQUFDO1FBQ3ZELFlBQU8sR0FBd0IsTUFBTSxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzFCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFFeEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVkLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBSXlCLENBQUM7SUFFdEUsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUs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bEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBa0JQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlLCBDb25maXJtYXRpb25Db25maWcsIENvbmZpcm1hdGlvblZhcmlhbnQgfSBmcm9tICcuL2NvbmZpcm1hdGlvbi1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtdXhpbWEtY29uZmlybWF0aW9uLWRpYWxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgdGl0bGUgPSAnQ29uZmlybWFyIEHDp8Ojbyc7XHJcbiAgQElucHV0KCkgbWVzc2FnZSA9ICdUZW0gY2VydGV6YSBxdWUgZGVzZWphIHJlYWxpemFyIGVzdGEgYcOnw6NvPyc7XHJcbiAgQElucHV0KCkgdmFyaWFudDogQ29uZmlybWF0aW9uVmFyaWFudCA9ICdpbmZvJztcclxuICBASW5wdXQoKSBjb25maXJtVGV4dCA9ICdDb25maXJtYXInO1xyXG4gIEBJbnB1dCgpIGNhbmNlbFRleHQgPSAnQ2FuY2VsYXInO1xyXG4gIEBJbnB1dCgpIGljb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XHJcbiAgXHJcbiAgQE91dHB1dCgpIGNvbmZpcm1lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgXHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5vcGVuRGlhbG9nJC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICB0aGlzLmFwcGx5Q29uZmlnKGNvbmZpZyk7XHJcbiAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxyXG4gIG9uRXNjYXBlS2V5KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlybWVkLmVtaXQoKTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5zZW5kUmVzdWx0KHRydWUpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLnNlbmRSZXN1bHQoZmFsc2UpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbmZpZyhjb25maWc6IENvbmZpcm1hdGlvbkNvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy50aXRsZSA9IGNvbmZpZy50aXRsZTtcclxuICAgIHRoaXMubWVzc2FnZSA9IGNvbmZpZy5tZXNzYWdlO1xyXG4gICAgaWYgKGNvbmZpZy52YXJpYW50KSB0aGlzLnZhcmlhbnQgPSBjb25maWcudmFyaWFudDtcclxuICAgIGlmIChjb25maWcuY29uZmlybVRleHQpIHRoaXMuY29uZmlybVRleHQgPSBjb25maWcuY29uZmlybVRleHQ7XHJcbiAgICBpZiAoY29uZmlnLmNhbmNlbFRleHQpIHRoaXMuY2FuY2VsVGV4dCA9IGNvbmZpZy5jYW5jZWxUZXh0O1xyXG4gICAgaWYgKGNvbmZpZy5pY29uKSB0aGlzLmljb24gPSBjb25maWcuaWNvbjtcclxuICB9XHJcblxyXG4gIGdldFZhcmlhbnRJY29uKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pY29uKSByZXR1cm4gdGhpcy5pY29uO1xyXG4gICAgXHJcbiAgICBzd2l0Y2ggKHRoaXMudmFyaWFudCkge1xyXG4gICAgICBjYXNlICdkYW5nZXInOlxyXG4gICAgICAgIHJldHVybiAn4pqg77iPJztcclxuICAgICAgY2FzZSAnd2FybmluZyc6XHJcbiAgICAgICAgcmV0dXJuICfimqEnO1xyXG4gICAgICBjYXNlICdzdWNjZXNzJzpcclxuICAgICAgICByZXR1cm4gJ+KchSc7XHJcbiAgICAgIGNhc2UgJ2luZm8nOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAn4oS577iPJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi1kaWFsb2ctY29udGFpbmVyXCIgKm5nSWY9XCJpc09wZW5cIj5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWJhY2tkcm9wXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+PC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctcGFuZWxcIiBbY2xhc3NdPVwiJ3ZhcmlhbnQtJyArIHZhcmlhbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaWNvblwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImljb24tZW1vamlcIj57eyBnZXRWYXJpYW50SWNvbigpIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cclxuICAgICAgPGgyIGNsYXNzPVwiZGlhbG9nLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiZGlhbG9nLW1lc3NhZ2VcIj57eyBtZXNzYWdlIH19PC9wPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tY2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgICAge3sgY2FuY2VsVGV4dCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tY29uZmlybVwiIFtjbGFzc109XCInYnRuLScgKyB2YXJpYW50XCIgKGNsaWNrKT1cImNvbmZpcm0oKVwiPlxyXG4gICAgICAgIHt7IGNvbmZpcm1UZXh0IH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ConfirmationDialogService {
5
+ constructor() {
6
+ this.openDialogSubject = new Subject();
7
+ this.dialogResultSubject = new Subject();
8
+ this.openDialog$ = this.openDialogSubject.asObservable();
9
+ this.dialogResult$ = this.dialogResultSubject.asObservable();
10
+ }
11
+ confirm(config) {
12
+ return new Promise((resolve) => {
13
+ this.openDialogSubject.next(config);
14
+ const subscription = this.dialogResult$.subscribe((result) => {
15
+ resolve(result.confirmed);
16
+ subscription.unsubscribe();
17
+ });
18
+ });
19
+ }
20
+ sendResult(confirmed) {
21
+ this.dialogResultSubject.next({ confirmed });
22
+ }
23
+ }
24
+ ConfirmationDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ ConfirmationDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, providedIn: 'root' });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, decorators: [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root'
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vb3ZlcmxheS9jb25maXJtYXRpb24tZGlhbG9nL3NyYy9saWIvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQW9CL0IsTUFBTSxPQUFPLHlCQUF5QjtJQUh0QztRQUlVLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBQ3RELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRWhFLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BELGtCQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0tBZ0J6RDtJQWRDLE9BQU8sQ0FBQyxNQUEwQjtRQUNoQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVwQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMzRCxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxQixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBa0I7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7dUhBcEJVLHlCQUF5QjsySEFBekIseUJBQXlCLGNBRnhCLE1BQU07NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlybWF0aW9uVmFyaWFudCA9ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ3N1Y2Nlc3MnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25Db25maWcge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHZhcmlhbnQ/OiBDb25maXJtYXRpb25WYXJpYW50O1xyXG4gIGNvbmZpcm1UZXh0Pzogc3RyaW5nO1xyXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25SZXN1bHQge1xyXG4gIGNvbmZpcm1lZDogYm9vbGVhbjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBvcGVuRGlhbG9nU3ViamVjdCA9IG5ldyBTdWJqZWN0PENvbmZpcm1hdGlvbkNvbmZpZz4oKTtcclxuICBwcml2YXRlIGRpYWxvZ1Jlc3VsdFN1YmplY3QgPSBuZXcgU3ViamVjdDxDb25maXJtYXRpb25SZXN1bHQ+KCk7XHJcblxyXG4gIG9wZW5EaWFsb2ckID0gdGhpcy5vcGVuRGlhbG9nU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICBkaWFsb2dSZXN1bHQkID0gdGhpcy5kaWFsb2dSZXN1bHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25maXJtKGNvbmZpZzogQ29uZmlybWF0aW9uQ29uZmlnKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5vcGVuRGlhbG9nU3ViamVjdC5uZXh0KGNvbmZpZyk7XHJcblxyXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmRpYWxvZ1Jlc3VsdCQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICByZXNvbHZlKHJlc3VsdC5jb25maXJtZWQpO1xyXG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VuZFJlc3VsdChjb25maXJtZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVzdWx0U3ViamVjdC5uZXh0KHsgY29uZmlybWVkIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV4aW1hLXVpLWNvbmZpcm1hdGlvbi1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9vdmVybGF5L2NvbmZpcm1hdGlvbi1kaWFsb2cvc3JjL211eGltYS11aS1jb25maXJtYXRpb24tZGlhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,146 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, EventEmitter, Component, Input, Output, HostListener } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { Subject } from 'rxjs';
6
+
7
+ class ConfirmationDialogService {
8
+ constructor() {
9
+ this.openDialogSubject = new Subject();
10
+ this.dialogResultSubject = new Subject();
11
+ this.openDialog$ = this.openDialogSubject.asObservable();
12
+ this.dialogResult$ = this.dialogResultSubject.asObservable();
13
+ }
14
+ confirm(config) {
15
+ return new Promise((resolve) => {
16
+ this.openDialogSubject.next(config);
17
+ const subscription = this.dialogResult$.subscribe((result) => {
18
+ resolve(result.confirmed);
19
+ subscription.unsubscribe();
20
+ });
21
+ });
22
+ }
23
+ sendResult(confirmed) {
24
+ this.dialogResultSubject.next({ confirmed });
25
+ }
26
+ }
27
+ ConfirmationDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ ConfirmationDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, providedIn: 'root' });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root'
33
+ }]
34
+ }] });
35
+
36
+ class ConfirmationDialogComponent {
37
+ constructor(confirmationService) {
38
+ this.confirmationService = confirmationService;
39
+ this.title = 'Confirmar Ação';
40
+ this.message = 'Tem certeza que deseja realizar esta ação?';
41
+ this.variant = 'info';
42
+ this.confirmText = 'Confirmar';
43
+ this.cancelText = 'Cancelar';
44
+ this.isOpen = false;
45
+ this.confirmed = new EventEmitter();
46
+ this.cancelled = new EventEmitter();
47
+ this.closed = new EventEmitter();
48
+ }
49
+ ngOnInit() {
50
+ this.subscription = this.confirmationService.openDialog$.subscribe((config) => {
51
+ this.applyConfig(config);
52
+ this.open();
53
+ });
54
+ }
55
+ ngOnDestroy() {
56
+ var _a;
57
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
58
+ }
59
+ onEscapeKey() {
60
+ if (this.isOpen) {
61
+ this.cancel();
62
+ }
63
+ }
64
+ open() {
65
+ this.isOpen = true;
66
+ document.body.style.overflow = 'hidden';
67
+ }
68
+ close() {
69
+ this.isOpen = false;
70
+ this.closed.emit();
71
+ document.body.style.overflow = '';
72
+ }
73
+ confirm() {
74
+ this.confirmed.emit();
75
+ this.confirmationService.sendResult(true);
76
+ this.close();
77
+ }
78
+ cancel() {
79
+ this.cancelled.emit();
80
+ this.confirmationService.sendResult(false);
81
+ this.close();
82
+ }
83
+ applyConfig(config) {
84
+ this.title = config.title;
85
+ this.message = config.message;
86
+ if (config.variant)
87
+ this.variant = config.variant;
88
+ if (config.confirmText)
89
+ this.confirmText = config.confirmText;
90
+ if (config.cancelText)
91
+ this.cancelText = config.cancelText;
92
+ if (config.icon)
93
+ this.icon = config.icon;
94
+ }
95
+ getVariantIcon() {
96
+ if (this.icon)
97
+ return this.icon;
98
+ switch (this.variant) {
99
+ case 'danger':
100
+ return '⚠️';
101
+ case 'warning':
102
+ return '⚡';
103
+ case 'success':
104
+ return '✅';
105
+ case 'info':
106
+ default:
107
+ return 'ℹ️';
108
+ }
109
+ }
110
+ }
111
+ ConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: ConfirmationDialogService }], target: i0.ɵɵFactoryTarget.Component });
112
+ ConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ConfirmationDialogComponent, isStandalone: true, selector: "muxima-confirmation-dialog", inputs: { title: "title", message: "message", variant: "variant", confirmText: "confirmText", cancelText: "cancelText", icon: "icon", isOpen: "isOpen" }, outputs: { confirmed: "confirmed", cancelled: "cancelled", closed: "closed" }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: "<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation-dialog-container{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-panel{position:relative;background:white;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:500px;width:100%;padding:32px;animation:scaleIn .3s cubic-bezier(.4,0,.2,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dialog-icon{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.dialog-icon .icon-emoji{font-size:64px;animation:bounceIn .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes bounceIn{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.dialog-header{margin-bottom:16px;text-align:center}.dialog-title{font-size:28px;font-weight:800;color:#1f2937;margin:0}.dialog-content{margin-bottom:32px;text-align:center}.dialog-message{font-size:16px;line-height:1.6;color:#6b7280;margin:0}.dialog-footer{display:flex;gap:12px;justify-content:flex-end}.btn{padding:12px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;outline:none}.btn:active{transform:scale(.95)}.btn-cancel{background:#f3f4f6;color:#6b7280}.btn-cancel:hover{background:#e5e7eb;color:#374151}.btn-confirm{color:#fff;min-width:120px}.btn-info{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);box-shadow:0 4px 12px #667eea66}.btn-info:hover{box-shadow:0 6px 16px #667eea80;transform:translateY(-2px)}.btn-success{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 4px 12px #10b98166}.btn-success:hover{box-shadow:0 6px 16px #10b98180;transform:translateY(-2px)}.btn-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 4px 12px #f59e0b66}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b80;transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 12px #ef444466}.btn-danger:hover{box-shadow:0 6px 16px #ef444480;transform:translateY(-2px)}.variant-danger{border-top:4px solid #ef4444}.variant-warning{border-top:4px solid #f59e0b}.variant-success{border-top:4px solid #10b981}.variant-info{border-top:4px solid #667eea}@media (max-width: 640px){.dialog-panel{padding:24px}.dialog-icon .icon-emoji{font-size:48px}.dialog-title{font-size:24px}.dialog-message{font-size:14px}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: 'muxima-confirmation-dialog', standalone: true, imports: [CommonModule], template: "<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation-dialog-container{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-panel{position:relative;background:white;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:500px;width:100%;padding:32px;animation:scaleIn .3s cubic-bezier(.4,0,.2,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dialog-icon{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.dialog-icon .icon-emoji{font-size:64px;animation:bounceIn .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes bounceIn{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.dialog-header{margin-bottom:16px;text-align:center}.dialog-title{font-size:28px;font-weight:800;color:#1f2937;margin:0}.dialog-content{margin-bottom:32px;text-align:center}.dialog-message{font-size:16px;line-height:1.6;color:#6b7280;margin:0}.dialog-footer{display:flex;gap:12px;justify-content:flex-end}.btn{padding:12px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;outline:none}.btn:active{transform:scale(.95)}.btn-cancel{background:#f3f4f6;color:#6b7280}.btn-cancel:hover{background:#e5e7eb;color:#374151}.btn-confirm{color:#fff;min-width:120px}.btn-info{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);box-shadow:0 4px 12px #667eea66}.btn-info:hover{box-shadow:0 6px 16px #667eea80;transform:translateY(-2px)}.btn-success{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 4px 12px #10b98166}.btn-success:hover{box-shadow:0 6px 16px #10b98180;transform:translateY(-2px)}.btn-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 4px 12px #f59e0b66}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b80;transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 12px #ef444466}.btn-danger:hover{box-shadow:0 6px 16px #ef444480;transform:translateY(-2px)}.variant-danger{border-top:4px solid #ef4444}.variant-warning{border-top:4px solid #f59e0b}.variant-success{border-top:4px solid #10b981}.variant-info{border-top:4px solid #667eea}@media (max-width: 640px){.dialog-panel{padding:24px}.dialog-icon .icon-emoji{font-size:48px}.dialog-title{font-size:24px}.dialog-message{font-size:14px}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}\n"] }]
116
+ }], ctorParameters: function () { return [{ type: ConfirmationDialogService }]; }, propDecorators: { title: [{
117
+ type: Input
118
+ }], message: [{
119
+ type: Input
120
+ }], variant: [{
121
+ type: Input
122
+ }], confirmText: [{
123
+ type: Input
124
+ }], cancelText: [{
125
+ type: Input
126
+ }], icon: [{
127
+ type: Input
128
+ }], isOpen: [{
129
+ type: Input
130
+ }], confirmed: [{
131
+ type: Output
132
+ }], cancelled: [{
133
+ type: Output
134
+ }], closed: [{
135
+ type: Output
136
+ }], onEscapeKey: [{
137
+ type: HostListener,
138
+ args: ['document:keydown.escape']
139
+ }] } });
140
+
141
+ /**
142
+ * Generated bundle index. Do not edit.
143
+ */
144
+
145
+ export { ConfirmationDialogComponent, ConfirmationDialogService };
146
+ //# sourceMappingURL=muxima-ui-confirmation-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"muxima-ui-confirmation-dialog.mjs","sources":["../../../../overlay/confirmation-dialog/src/lib/confirmation-dialog/confirmation-dialog.service.ts","../../../../overlay/confirmation-dialog/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../../overlay/confirmation-dialog/src/lib/confirmation-dialog/confirmation-dialog.component.html","../../../../overlay/confirmation-dialog/src/muxima-ui-confirmation-dialog.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type ConfirmationVariant = 'info' | 'warning' | 'danger' | 'success';\r\n\r\nexport interface ConfirmationConfig {\r\n title: string;\r\n message: string;\r\n variant?: ConfirmationVariant;\r\n confirmText?: string;\r\n cancelText?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ConfirmationResult {\r\n confirmed: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmationDialogService {\r\n private openDialogSubject = new Subject<ConfirmationConfig>();\r\n private dialogResultSubject = new Subject<ConfirmationResult>();\r\n\r\n openDialog$ = this.openDialogSubject.asObservable();\r\n dialogResult$ = this.dialogResultSubject.asObservable();\r\n\r\n confirm(config: ConfirmationConfig): Promise<boolean> {\r\n return new Promise((resolve) => {\r\n this.openDialogSubject.next(config);\r\n\r\n const subscription = this.dialogResult$.subscribe((result) => {\r\n resolve(result.confirmed);\r\n subscription.unsubscribe();\r\n });\r\n });\r\n }\r\n\r\n sendResult(confirmed: boolean): void {\r\n this.dialogResultSubject.next({ confirmed });\r\n }\r\n}\r\n","import { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfirmationDialogService, ConfirmationConfig, ConfirmationVariant } from './confirmation-dialog.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'muxima-confirmation-dialog',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.scss']\r\n})\r\nexport class ConfirmationDialogComponent implements OnInit, OnDestroy {\r\n @Input() title = 'Confirmar Ação';\r\n @Input() message = 'Tem certeza que deseja realizar esta ação?';\r\n @Input() variant: ConfirmationVariant = 'info';\r\n @Input() confirmText = 'Confirmar';\r\n @Input() cancelText = 'Cancelar';\r\n @Input() icon?: string;\r\n @Input() isOpen = false;\r\n \r\n @Output() confirmed = new EventEmitter<void>();\r\n @Output() cancelled = new EventEmitter<void>();\r\n @Output() closed = new EventEmitter<void>();\r\n \r\n private subscription?: Subscription;\r\n\r\n constructor(private confirmationService: ConfirmationDialogService) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.confirmationService.openDialog$.subscribe((config) => {\r\n this.applyConfig(config);\r\n this.open();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscapeKey(): void {\r\n if (this.isOpen) {\r\n this.cancel();\r\n }\r\n }\r\n\r\n open(): void {\r\n this.isOpen = true;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n close(): void {\r\n this.isOpen = false;\r\n this.closed.emit();\r\n document.body.style.overflow = '';\r\n }\r\n\r\n confirm(): void {\r\n this.confirmed.emit();\r\n this.confirmationService.sendResult(true);\r\n this.close();\r\n }\r\n\r\n cancel(): void {\r\n this.cancelled.emit();\r\n this.confirmationService.sendResult(false);\r\n this.close();\r\n }\r\n\r\n private applyConfig(config: ConfirmationConfig): void {\r\n this.title = config.title;\r\n this.message = config.message;\r\n if (config.variant) this.variant = config.variant;\r\n if (config.confirmText) this.confirmText = config.confirmText;\r\n if (config.cancelText) this.cancelText = config.cancelText;\r\n if (config.icon) this.icon = config.icon;\r\n }\r\n\r\n getVariantIcon(): string {\r\n if (this.icon) return this.icon;\r\n \r\n switch (this.variant) {\r\n case 'danger':\r\n return '⚠️';\r\n case 'warning':\r\n return '⚡';\r\n case 'success':\r\n return '✅';\r\n case 'info':\r\n default:\r\n return 'ℹ️';\r\n }\r\n }\r\n}\r\n","<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ConfirmationDialogService"],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, EventEmitter, Component, Input, Output, HostListener } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { Subject } from 'rxjs';
6
+
7
+ class ConfirmationDialogService {
8
+ constructor() {
9
+ this.openDialogSubject = new Subject();
10
+ this.dialogResultSubject = new Subject();
11
+ this.openDialog$ = this.openDialogSubject.asObservable();
12
+ this.dialogResult$ = this.dialogResultSubject.asObservable();
13
+ }
14
+ confirm(config) {
15
+ return new Promise((resolve) => {
16
+ this.openDialogSubject.next(config);
17
+ const subscription = this.dialogResult$.subscribe((result) => {
18
+ resolve(result.confirmed);
19
+ subscription.unsubscribe();
20
+ });
21
+ });
22
+ }
23
+ sendResult(confirmed) {
24
+ this.dialogResultSubject.next({ confirmed });
25
+ }
26
+ }
27
+ ConfirmationDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ ConfirmationDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, providedIn: 'root' });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogService, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root'
33
+ }]
34
+ }] });
35
+
36
+ class ConfirmationDialogComponent {
37
+ constructor(confirmationService) {
38
+ this.confirmationService = confirmationService;
39
+ this.title = 'Confirmar Ação';
40
+ this.message = 'Tem certeza que deseja realizar esta ação?';
41
+ this.variant = 'info';
42
+ this.confirmText = 'Confirmar';
43
+ this.cancelText = 'Cancelar';
44
+ this.isOpen = false;
45
+ this.confirmed = new EventEmitter();
46
+ this.cancelled = new EventEmitter();
47
+ this.closed = new EventEmitter();
48
+ }
49
+ ngOnInit() {
50
+ this.subscription = this.confirmationService.openDialog$.subscribe((config) => {
51
+ this.applyConfig(config);
52
+ this.open();
53
+ });
54
+ }
55
+ ngOnDestroy() {
56
+ this.subscription?.unsubscribe();
57
+ }
58
+ onEscapeKey() {
59
+ if (this.isOpen) {
60
+ this.cancel();
61
+ }
62
+ }
63
+ open() {
64
+ this.isOpen = true;
65
+ document.body.style.overflow = 'hidden';
66
+ }
67
+ close() {
68
+ this.isOpen = false;
69
+ this.closed.emit();
70
+ document.body.style.overflow = '';
71
+ }
72
+ confirm() {
73
+ this.confirmed.emit();
74
+ this.confirmationService.sendResult(true);
75
+ this.close();
76
+ }
77
+ cancel() {
78
+ this.cancelled.emit();
79
+ this.confirmationService.sendResult(false);
80
+ this.close();
81
+ }
82
+ applyConfig(config) {
83
+ this.title = config.title;
84
+ this.message = config.message;
85
+ if (config.variant)
86
+ this.variant = config.variant;
87
+ if (config.confirmText)
88
+ this.confirmText = config.confirmText;
89
+ if (config.cancelText)
90
+ this.cancelText = config.cancelText;
91
+ if (config.icon)
92
+ this.icon = config.icon;
93
+ }
94
+ getVariantIcon() {
95
+ if (this.icon)
96
+ return this.icon;
97
+ switch (this.variant) {
98
+ case 'danger':
99
+ return '⚠️';
100
+ case 'warning':
101
+ return '⚡';
102
+ case 'success':
103
+ return '✅';
104
+ case 'info':
105
+ default:
106
+ return 'ℹ️';
107
+ }
108
+ }
109
+ }
110
+ ConfirmationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: ConfirmationDialogService }], target: i0.ɵɵFactoryTarget.Component });
111
+ ConfirmationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ConfirmationDialogComponent, isStandalone: true, selector: "muxima-confirmation-dialog", inputs: { title: "title", message: "message", variant: "variant", confirmText: "confirmText", cancelText: "cancelText", icon: "icon", isOpen: "isOpen" }, outputs: { confirmed: "confirmed", cancelled: "cancelled", closed: "closed" }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: "<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation-dialog-container{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-panel{position:relative;background:white;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:500px;width:100%;padding:32px;animation:scaleIn .3s cubic-bezier(.4,0,.2,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dialog-icon{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.dialog-icon .icon-emoji{font-size:64px;animation:bounceIn .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes bounceIn{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.dialog-header{margin-bottom:16px;text-align:center}.dialog-title{font-size:28px;font-weight:800;color:#1f2937;margin:0}.dialog-content{margin-bottom:32px;text-align:center}.dialog-message{font-size:16px;line-height:1.6;color:#6b7280;margin:0}.dialog-footer{display:flex;gap:12px;justify-content:flex-end}.btn{padding:12px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;outline:none}.btn:active{transform:scale(.95)}.btn-cancel{background:#f3f4f6;color:#6b7280}.btn-cancel:hover{background:#e5e7eb;color:#374151}.btn-confirm{color:#fff;min-width:120px}.btn-info{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);box-shadow:0 4px 12px #667eea66}.btn-info:hover{box-shadow:0 6px 16px #667eea80;transform:translateY(-2px)}.btn-success{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 4px 12px #10b98166}.btn-success:hover{box-shadow:0 6px 16px #10b98180;transform:translateY(-2px)}.btn-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 4px 12px #f59e0b66}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b80;transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 12px #ef444466}.btn-danger:hover{box-shadow:0 6px 16px #ef444480;transform:translateY(-2px)}.variant-danger{border-top:4px solid #ef4444}.variant-warning{border-top:4px solid #f59e0b}.variant-success{border-top:4px solid #10b981}.variant-info{border-top:4px solid #667eea}@media (max-width: 640px){.dialog-panel{padding:24px}.dialog-icon .icon-emoji{font-size:48px}.dialog-title{font-size:24px}.dialog-message{font-size:14px}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
113
+ type: Component,
114
+ args: [{ selector: 'muxima-confirmation-dialog', standalone: true, imports: [CommonModule], template: "<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".confirmation-dialog-container{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}.dialog-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-panel{position:relative;background:white;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:500px;width:100%;padding:32px;animation:scaleIn .3s cubic-bezier(.4,0,.2,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dialog-icon{display:flex;align-items:center;justify-content:center;margin-bottom:24px}.dialog-icon .icon-emoji{font-size:64px;animation:bounceIn .5s cubic-bezier(.68,-.55,.265,1.55)}@keyframes bounceIn{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}.dialog-header{margin-bottom:16px;text-align:center}.dialog-title{font-size:28px;font-weight:800;color:#1f2937;margin:0}.dialog-content{margin-bottom:32px;text-align:center}.dialog-message{font-size:16px;line-height:1.6;color:#6b7280;margin:0}.dialog-footer{display:flex;gap:12px;justify-content:flex-end}.btn{padding:12px 24px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;outline:none}.btn:active{transform:scale(.95)}.btn-cancel{background:#f3f4f6;color:#6b7280}.btn-cancel:hover{background:#e5e7eb;color:#374151}.btn-confirm{color:#fff;min-width:120px}.btn-info{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);box-shadow:0 4px 12px #667eea66}.btn-info:hover{box-shadow:0 6px 16px #667eea80;transform:translateY(-2px)}.btn-success{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 4px 12px #10b98166}.btn-success:hover{box-shadow:0 6px 16px #10b98180;transform:translateY(-2px)}.btn-warning{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 4px 12px #f59e0b66}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b80;transform:translateY(-2px)}.btn-danger{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);box-shadow:0 4px 12px #ef444466}.btn-danger:hover{box-shadow:0 6px 16px #ef444480;transform:translateY(-2px)}.variant-danger{border-top:4px solid #ef4444}.variant-warning{border-top:4px solid #f59e0b}.variant-success{border-top:4px solid #10b981}.variant-info{border-top:4px solid #667eea}@media (max-width: 640px){.dialog-panel{padding:24px}.dialog-icon .icon-emoji{font-size:48px}.dialog-title{font-size:24px}.dialog-message{font-size:14px}.dialog-footer{flex-direction:column-reverse}.dialog-footer .btn{width:100%}}\n"] }]
115
+ }], ctorParameters: function () { return [{ type: ConfirmationDialogService }]; }, propDecorators: { title: [{
116
+ type: Input
117
+ }], message: [{
118
+ type: Input
119
+ }], variant: [{
120
+ type: Input
121
+ }], confirmText: [{
122
+ type: Input
123
+ }], cancelText: [{
124
+ type: Input
125
+ }], icon: [{
126
+ type: Input
127
+ }], isOpen: [{
128
+ type: Input
129
+ }], confirmed: [{
130
+ type: Output
131
+ }], cancelled: [{
132
+ type: Output
133
+ }], closed: [{
134
+ type: Output
135
+ }], onEscapeKey: [{
136
+ type: HostListener,
137
+ args: ['document:keydown.escape']
138
+ }] } });
139
+
140
+ /**
141
+ * Generated bundle index. Do not edit.
142
+ */
143
+
144
+ export { ConfirmationDialogComponent, ConfirmationDialogService };
145
+ //# sourceMappingURL=muxima-ui-confirmation-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"muxima-ui-confirmation-dialog.mjs","sources":["../../../../overlay/confirmation-dialog/src/lib/confirmation-dialog/confirmation-dialog.service.ts","../../../../overlay/confirmation-dialog/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../../overlay/confirmation-dialog/src/lib/confirmation-dialog/confirmation-dialog.component.html","../../../../overlay/confirmation-dialog/src/muxima-ui-confirmation-dialog.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type ConfirmationVariant = 'info' | 'warning' | 'danger' | 'success';\r\n\r\nexport interface ConfirmationConfig {\r\n title: string;\r\n message: string;\r\n variant?: ConfirmationVariant;\r\n confirmText?: string;\r\n cancelText?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ConfirmationResult {\r\n confirmed: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmationDialogService {\r\n private openDialogSubject = new Subject<ConfirmationConfig>();\r\n private dialogResultSubject = new Subject<ConfirmationResult>();\r\n\r\n openDialog$ = this.openDialogSubject.asObservable();\r\n dialogResult$ = this.dialogResultSubject.asObservable();\r\n\r\n confirm(config: ConfirmationConfig): Promise<boolean> {\r\n return new Promise((resolve) => {\r\n this.openDialogSubject.next(config);\r\n\r\n const subscription = this.dialogResult$.subscribe((result) => {\r\n resolve(result.confirmed);\r\n subscription.unsubscribe();\r\n });\r\n });\r\n }\r\n\r\n sendResult(confirmed: boolean): void {\r\n this.dialogResultSubject.next({ confirmed });\r\n }\r\n}\r\n","import { Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfirmationDialogService, ConfirmationConfig, ConfirmationVariant } from './confirmation-dialog.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'muxima-confirmation-dialog',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.scss']\r\n})\r\nexport class ConfirmationDialogComponent implements OnInit, OnDestroy {\r\n @Input() title = 'Confirmar Ação';\r\n @Input() message = 'Tem certeza que deseja realizar esta ação?';\r\n @Input() variant: ConfirmationVariant = 'info';\r\n @Input() confirmText = 'Confirmar';\r\n @Input() cancelText = 'Cancelar';\r\n @Input() icon?: string;\r\n @Input() isOpen = false;\r\n \r\n @Output() confirmed = new EventEmitter<void>();\r\n @Output() cancelled = new EventEmitter<void>();\r\n @Output() closed = new EventEmitter<void>();\r\n \r\n private subscription?: Subscription;\r\n\r\n constructor(private confirmationService: ConfirmationDialogService) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.confirmationService.openDialog$.subscribe((config) => {\r\n this.applyConfig(config);\r\n this.open();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscapeKey(): void {\r\n if (this.isOpen) {\r\n this.cancel();\r\n }\r\n }\r\n\r\n open(): void {\r\n this.isOpen = true;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n close(): void {\r\n this.isOpen = false;\r\n this.closed.emit();\r\n document.body.style.overflow = '';\r\n }\r\n\r\n confirm(): void {\r\n this.confirmed.emit();\r\n this.confirmationService.sendResult(true);\r\n this.close();\r\n }\r\n\r\n cancel(): void {\r\n this.cancelled.emit();\r\n this.confirmationService.sendResult(false);\r\n this.close();\r\n }\r\n\r\n private applyConfig(config: ConfirmationConfig): void {\r\n this.title = config.title;\r\n this.message = config.message;\r\n if (config.variant) this.variant = config.variant;\r\n if (config.confirmText) this.confirmText = config.confirmText;\r\n if (config.cancelText) this.cancelText = config.cancelText;\r\n if (config.icon) this.icon = config.icon;\r\n }\r\n\r\n getVariantIcon(): string {\r\n if (this.icon) return this.icon;\r\n \r\n switch (this.variant) {\r\n case 'danger':\r\n return '⚠️';\r\n case 'warning':\r\n return '⚡';\r\n case 'success':\r\n return '✅';\r\n case 'info':\r\n default:\r\n return 'ℹ️';\r\n }\r\n }\r\n}\r\n","<div class=\"confirmation-dialog-container\" *ngIf=\"isOpen\">\r\n <div class=\"dialog-backdrop\" (click)=\"cancel()\"></div>\r\n\r\n <div class=\"dialog-panel\" [class]=\"'variant-' + variant\">\r\n <div class=\"dialog-icon\">\r\n <span class=\"icon-emoji\">{{ getVariantIcon() }}</span>\r\n </div>\r\n\r\n <div class=\"dialog-header\">\r\n <h2 class=\"dialog-title\">{{ title }}</h2>\r\n </div>\r\n\r\n <div class=\"dialog-content\">\r\n <p class=\"dialog-message\">{{ message }}</p>\r\n </div>\r\n\r\n <div class=\"dialog-footer\">\r\n <button class=\"btn btn-cancel\" (click)=\"cancel()\">\r\n {{ cancelText }}\r\n </button>\r\n <button class=\"btn btn-confirm\" [class]=\"'btn-' + variant\" (click)=\"confirm()\">\r\n {{ confirmText }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ConfirmationDialogService"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib/confirmation-dialog/confirmation-dialog.component';
2
+ export * from './lib/confirmation-dialog/confirmation-dialog.service';
@@ -0,0 +1,29 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { ConfirmationDialogService, ConfirmationVariant } from './confirmation-dialog.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ConfirmationDialogComponent implements OnInit, OnDestroy {
5
+ private confirmationService;
6
+ title: string;
7
+ message: string;
8
+ variant: ConfirmationVariant;
9
+ confirmText: string;
10
+ cancelText: string;
11
+ icon?: string;
12
+ isOpen: boolean;
13
+ confirmed: EventEmitter<void>;
14
+ cancelled: EventEmitter<void>;
15
+ closed: EventEmitter<void>;
16
+ private subscription?;
17
+ constructor(confirmationService: ConfirmationDialogService);
18
+ ngOnInit(): void;
19
+ ngOnDestroy(): void;
20
+ onEscapeKey(): void;
21
+ open(): void;
22
+ close(): void;
23
+ confirm(): void;
24
+ cancel(): void;
25
+ private applyConfig;
26
+ getVariantIcon(): string;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationDialogComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmationDialogComponent, "muxima-confirmation-dialog", never, { "title": "title"; "message": "message"; "variant": "variant"; "confirmText": "confirmText"; "cancelText": "cancelText"; "icon": "icon"; "isOpen": "isOpen"; }, { "confirmed": "confirmed"; "cancelled": "cancelled"; "closed": "closed"; }, never, never, true, never>;
29
+ }
@@ -0,0 +1,23 @@
1
+ import * as i0 from "@angular/core";
2
+ export type ConfirmationVariant = 'info' | 'warning' | 'danger' | 'success';
3
+ export interface ConfirmationConfig {
4
+ title: string;
5
+ message: string;
6
+ variant?: ConfirmationVariant;
7
+ confirmText?: string;
8
+ cancelText?: string;
9
+ icon?: string;
10
+ }
11
+ export interface ConfirmationResult {
12
+ confirmed: boolean;
13
+ }
14
+ export declare class ConfirmationDialogService {
15
+ private openDialogSubject;
16
+ private dialogResultSubject;
17
+ openDialog$: import("rxjs").Observable<ConfirmationConfig>;
18
+ dialogResult$: import("rxjs").Observable<ConfirmationResult>;
19
+ confirm(config: ConfirmationConfig): Promise<boolean>;
20
+ sendResult(confirmed: boolean): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationDialogService, never>;
22
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationDialogService>;
23
+ }
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@muxima-ui/confirmation-dialog",
3
+ "version": "1.0.0",
4
+ "description": "Confirmation dialog component for Angular 18+ - Muxima UI",
5
+ "keywords": [
6
+ "angular",
7
+ "confirmation",
8
+ "dialog",
9
+ "confirm",
10
+ "alert",
11
+ "overlay",
12
+ "muxima-ui"
13
+ ],
14
+ "author": "Muxima UI Team (jokerscript)",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/Aldemiro20/muxima-ui.git",
19
+ "directory": "packages/overlay/confirmation-dialog"
20
+ },
21
+ "homepage": "https://muxima-ui.vercel.app/components/confirmation-dialog",
22
+ "bugs": {
23
+ "url": "https://github.com/Aldemiro20/muxima-ui/issues"
24
+ },
25
+ "documentation": "https://muxima-ui.vercel.app",
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "peerDependencies": {
30
+ "@angular/common": "^18.0.0",
31
+ "@angular/core": "^18.0.0"
32
+ },
33
+ "dependencies": {
34
+ "tslib": "^2.3.0"
35
+ },
36
+ "sideEffects": false,
37
+ "module": "fesm2015/muxima-ui-confirmation-dialog.mjs",
38
+ "es2020": "fesm2020/muxima-ui-confirmation-dialog.mjs",
39
+ "esm2020": "esm2020/muxima-ui-confirmation-dialog.mjs",
40
+ "fesm2020": "fesm2020/muxima-ui-confirmation-dialog.mjs",
41
+ "fesm2015": "fesm2015/muxima-ui-confirmation-dialog.mjs",
42
+ "typings": "index.d.ts",
43
+ "exports": {
44
+ "./package.json": {
45
+ "default": "./package.json"
46
+ },
47
+ ".": {
48
+ "types": "./index.d.ts",
49
+ "esm2020": "./esm2020/muxima-ui-confirmation-dialog.mjs",
50
+ "es2020": "./fesm2020/muxima-ui-confirmation-dialog.mjs",
51
+ "es2015": "./fesm2015/muxima-ui-confirmation-dialog.mjs",
52
+ "node": "./fesm2015/muxima-ui-confirmation-dialog.mjs",
53
+ "default": "./fesm2020/muxima-ui-confirmation-dialog.mjs"
54
+ }
55
+ }
56
+ }