@osumi/angular-tools 1.5.1 → 1.5.2
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.
|
@@ -33,10 +33,10 @@ class AlertDialogComponent {
|
|
|
33
33
|
close(result) {
|
|
34
34
|
this.closeDialog(result);
|
|
35
35
|
}
|
|
36
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
37
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AlertDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: AlertDialogComponent, isStandalone: true, selector: "oat-alert-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AlertDialogComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ selector: 'oat-alert-dialog', imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton], template: "<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n" }]
|
|
42
42
|
}] });
|
|
@@ -66,10 +66,10 @@ class ConfirmDialogComponent {
|
|
|
66
66
|
close(result) {
|
|
67
67
|
this.closeDialog(result);
|
|
68
68
|
}
|
|
69
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
70
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
69
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ConfirmDialogComponent, isStandalone: true, selector: "oat-confirm-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close(false)\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\t[ngClass]=\"{'dialogs-warn': warn()}\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n", styles: [".dialogs-warn{background-color:var(--oat-dialogs-color-warn)!important;color:var(--oat-dialogs-color-white)!important}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
71
71
|
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
74
|
args: [{ selector: 'oat-confirm-dialog', imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton, NgClass], encapsulation: ViewEncapsulation.None, template: "<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close(false)\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\t[ngClass]=\"{'dialogs-warn': warn()}\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n", styles: [".dialogs-warn{background-color:var(--oat-dialogs-color-warn)!important;color:var(--oat-dialogs-color-white)!important}\n"] }]
|
|
75
75
|
}] });
|
|
@@ -109,10 +109,10 @@ class FormDialogComponent {
|
|
|
109
109
|
close(result) {
|
|
110
110
|
this.closeDialog(result);
|
|
111
111
|
}
|
|
112
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
113
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
112
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormDialogComponent, isStandalone: true, selector: "oat-form-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n\t@for (field of fields(); track field.title) {\r\n\t<p>\r\n\t\t<mat-form-field class=\"dialogs-full-width\">\r\n\t\t\t<mat-label>{{ field.title }}</mat-label>\r\n\t\t\t<input matInput\r\n\t\t\t\t [type]=\"field.type\"\r\n\t\t\t\t [(ngModel)]=\"field.value\"\r\n\t\t\t\t [required]=\"field.required || false\">\r\n\t\t\t@if (field.hint) {\r\n\t\t\t<mat-hint>{{ field.hint }}</mat-hint>\r\n\t\t\t}\r\n\t\t</mat-form-field>\r\n\t</p>\r\n\t}\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close()\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t[disabled]=\"!isFormValid()\"\r\n\t\t\t(click)=\"close(fields())\">{{ ok() }}</button>\r\n</div>", styles: [".dialogs-full-width{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
114
114
|
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormDialogComponent, decorators: [{
|
|
116
116
|
type: Component,
|
|
117
117
|
args: [{ selector: 'oat-form-dialog', imports: [
|
|
118
118
|
FormsModule,
|
|
@@ -305,12 +305,12 @@ class OverlayComponent {
|
|
|
305
305
|
clamp(value, min, max) {
|
|
306
306
|
return Math.min(Math.max(value, min), max);
|
|
307
307
|
}
|
|
308
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
309
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
308
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
309
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: OverlayComponent, isStandalone: true, selector: "oat-overlay", viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #modal\r\n\t [class]=\"'modal ' + (inputData.css ? inputData.css : '')\">\r\n\t<div [class]=\"'modal__header modal__header--' + inputData.modalColor\">\r\n\t\t<div class=\"title\">{{ inputData.modalTitle }}</div>\r\n\t\t@if (!inputData.hideCloseBtn) {\r\n\t\t<button mat-icon-button\r\n\t\t\t\tclass=\"btn-close\"\r\n\t\t\t\t(click)=\"close()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</button>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div [class]=\"'modal__content ' + (inputData.contentCss ? inputData.contentCss : '')\">\r\n\t\t<ng-container *ngComponentOutlet=\"content\"></ng-container>\r\n\t</div>\r\n</div>", styles: [":host{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal{border-radius:6px;box-shadow:4px 4px 5px 0 var(--oat-modals-bg-color)}.modal__header{border-top-left-radius:6px;border-top-right-radius:6px;display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:48px;font-size:24px;background-color:var(--oat-modals-main-color)}.modal__header .title{color:var(--oat-modals-color-white)}.modal__header .btn-close{cursor:pointer;color:var(--oat-modals-color-white)}.modal__header--blue{background-color:var(--oat-modals-color-blue)}.modal__header--yellow{background-color:var(--oat-modals-color-yellow);color:var(--oat-modals-color-black)}.modal__header--yellow>.btn-close{color:var(--oat-modals-color-black)}.modal__header--red{background-color:var(--oat-modals-color-red)}.modal__content{padding:20px;border-bottom-left-radius:6px;background-color:var(--oat-modals-color-white);border-bottom-right-radius:6px;height:calc(100% - 48px);overflow-y:auto;box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }] });
|
|
310
310
|
}
|
|
311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverlayComponent, decorators: [{
|
|
312
312
|
type: Component,
|
|
313
|
-
args: [{ selector: 'oat-overlay', imports: [MatIcon, MatIconButton, NgComponentOutlet], template: "<div #modal\r\n\t [class]=\"'modal ' + (inputData.css ? inputData.css : '')\">\r\n\t<div [class]=\"'modal__header modal__header--' + inputData.modalColor\">\r\n\t\t<div class=\"title\">{{ inputData.modalTitle }}</div>\r\n\t\t@if (!inputData.hideCloseBtn) {\r\n\t\t<button mat-icon-button\r\n\t\t\t\tclass=\"btn-close\"\r\n\t\t\t\t(click)=\"close()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</button>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div [class]=\"'modal__content ' + inputData.contentCss\">\r\n\t\t<ng-container *ngComponentOutlet=\"content\"></ng-container>\r\n\t</div>\r\n</div
|
|
313
|
+
args: [{ selector: 'oat-overlay', imports: [MatIcon, MatIconButton, NgComponentOutlet], template: "<div #modal\r\n\t [class]=\"'modal ' + (inputData.css ? inputData.css : '')\">\r\n\t<div [class]=\"'modal__header modal__header--' + inputData.modalColor\">\r\n\t\t<div class=\"title\">{{ inputData.modalTitle }}</div>\r\n\t\t@if (!inputData.hideCloseBtn) {\r\n\t\t<button mat-icon-button\r\n\t\t\t\tclass=\"btn-close\"\r\n\t\t\t\t(click)=\"close()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</button>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div [class]=\"'modal__content ' + (inputData.contentCss ? inputData.contentCss : '')\">\r\n\t\t<ng-container *ngComponentOutlet=\"content\"></ng-container>\r\n\t</div>\r\n</div>", styles: [":host{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal{border-radius:6px;box-shadow:4px 4px 5px 0 var(--oat-modals-bg-color)}.modal__header{border-top-left-radius:6px;border-top-right-radius:6px;display:flex;justify-content:space-between;align-items:center;padding:0 20px;height:48px;font-size:24px;background-color:var(--oat-modals-main-color)}.modal__header .title{color:var(--oat-modals-color-white)}.modal__header .btn-close{cursor:pointer;color:var(--oat-modals-color-white)}.modal__header--blue{background-color:var(--oat-modals-color-blue)}.modal__header--yellow{background-color:var(--oat-modals-color-yellow);color:var(--oat-modals-color-black)}.modal__header--yellow>.btn-close{color:var(--oat-modals-color-black)}.modal__header--red{background-color:var(--oat-modals-color-red)}.modal__content{padding:20px;border-bottom-left-radius:6px;background-color:var(--oat-modals-color-white);border-bottom-right-radius:6px;height:calc(100% - 48px);overflow-y:auto;box-sizing:border-box}\n"] }]
|
|
314
314
|
}], propDecorators: { modal: [{ type: i0.ViewChild, args: ['modal', { isSignal: true }] }] } });
|
|
315
315
|
|
|
316
316
|
/**
|
|
@@ -364,10 +364,10 @@ class SwipeDirective {
|
|
|
364
364
|
this.mouseDownListener();
|
|
365
365
|
this.mouseUpListener();
|
|
366
366
|
}
|
|
367
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
368
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.
|
|
367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SwipeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
368
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: SwipeDirective, isStandalone: true, selector: "[oatSwipe]", outputs: { swipeEnd: "swipeEnd" }, host: { listeners: { "touchstart": "onTouchStart($event)", "touchend": "onTouchEnd($event)", "mousedown": "onMouseDown($event)", "mouseup": "onMouseUp($event)" } }, ngImport: i0 });
|
|
369
369
|
}
|
|
370
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
370
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SwipeDirective, decorators: [{
|
|
371
371
|
type: Directive,
|
|
372
372
|
args: [{
|
|
373
373
|
selector: '[oatSwipe]',
|
|
@@ -633,10 +633,10 @@ class DialogService {
|
|
|
633
633
|
getCloseAnimationDuration(animationDuration) {
|
|
634
634
|
return Math.round(animationDuration * 0.82);
|
|
635
635
|
}
|
|
636
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
637
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
636
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
637
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DialogService, providedIn: 'root' });
|
|
638
638
|
}
|
|
639
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DialogService, decorators: [{
|
|
640
640
|
type: Injectable,
|
|
641
641
|
args: [{ providedIn: 'root' }]
|
|
642
642
|
}] });
|
|
@@ -678,10 +678,10 @@ class OverlayService {
|
|
|
678
678
|
parent: inj,
|
|
679
679
|
});
|
|
680
680
|
}
|
|
681
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
682
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
681
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
682
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverlayService, providedIn: 'root' });
|
|
683
683
|
}
|
|
684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverlayService, decorators: [{
|
|
685
685
|
type: Injectable,
|
|
686
686
|
args: [{ providedIn: 'root' }]
|
|
687
687
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"osumi-angular-tools.mjs","sources":["../../../projects/osumi-angular-tools/src/lib/components/dialogs/alert-dialog/alert-dialog.component.ts","../../../projects/osumi-angular-tools/src/lib/components/dialogs/alert-dialog/alert-dialog.component.html","../../../projects/osumi-angular-tools/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.ts","../../../projects/osumi-angular-tools/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.html","../../../projects/osumi-angular-tools/src/lib/components/dialogs/form-dialog/form-dialog.component.ts","../../../projects/osumi-angular-tools/src/lib/components/dialogs/form-dialog/form-dialog.component.html","../../../projects/osumi-angular-tools/src/lib/model/custom-overlay-ref.model.ts","../../../projects/osumi-angular-tools/src/lib/components/overlay/overlay.component.ts","../../../projects/osumi-angular-tools/src/lib/components/overlay/overlay.component.html","../../../projects/osumi-angular-tools/src/lib/directives/swipe.directive.ts","../../../projects/osumi-angular-tools/src/lib/services/dialog.service.ts","../../../projects/osumi-angular-tools/src/lib/services/overlay.service.ts","../../../projects/osumi-angular-tools/src/public-api.ts","../../../projects/osumi-angular-tools/src/osumi-angular-tools.ts"],"sourcesContent":["import { Component, inject, signal, WritableSignal } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle,\r\n} from '@angular/material/dialog';\r\n\r\n/**\r\n * Componente para mostrar un diálogo de alerta.\r\n *\r\n * Permite mostrar un mensaje de alerta con un título, contenido y un botón de confirmación personalizables.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del diálogo.\r\n */\r\n@Component({\r\n selector: 'oat-alert-dialog',\r\n templateUrl: './alert-dialog.component.html',\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton],\r\n})\r\nexport class AlertDialogComponent {\r\n public dialogRef: MatDialogRef<AlertDialogComponent> = inject(MatDialogRef);\r\n\r\n public title: WritableSignal<string> = signal<string>('');\r\n public content: WritableSignal<string> = signal<string>('');\r\n public ok: WritableSignal<string> = signal<string>('Continuar');\r\n\r\n public closeDialog: (result: boolean) => void = (result: boolean): void => {\r\n this.dialogRef.close(result);\r\n };\r\n\r\n close(result: boolean): void {\r\n this.closeDialog(result);\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, inject, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle,\r\n} from '@angular/material/dialog';\r\n\r\n/**\r\n * Componente para mostrar un diálogo de confirmación.\r\n *\r\n * Permite mostrar un mensaje de confirmación con un título, contenido y botones de confirmación y cancelar personalizables.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del diálogo indicando si se ha confirmado o cancelado la acción.\r\n */\r\n@Component({\r\n selector: 'oat-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrl: './confirm-dialog.component.scss',\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton, NgClass],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ConfirmDialogComponent {\r\n public dialogRef: MatDialogRef<ConfirmDialogComponent> = inject(MatDialogRef);\r\n\r\n public title: WritableSignal<string> = signal<string>('');\r\n public content: WritableSignal<string> = signal<string>('');\r\n public warn: WritableSignal<boolean> = signal<boolean>(false);\r\n public ok: WritableSignal<string> = signal<string>('Continuar');\r\n public cancel: WritableSignal<string> = signal<string>('Cancelar');\r\n\r\n public closeDialog: (result: boolean) => void = (result: boolean): void => {\r\n this.dialogRef.close(result);\r\n };\r\n\r\n close(result: boolean): void {\r\n this.closeDialog(result);\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close(false)\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\t[ngClass]=\"{'dialogs-warn': warn()}\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n","import { Component, inject, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle,\r\n} from '@angular/material/dialog';\r\nimport { MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { DialogField } from '../../../interfaces/dialogs.interface';\r\n\r\n/**\r\n * Componente para mostrar un diálogo con un formulario.\r\n *\r\n * Permite mostrar un mensaje de confirmación con un título, contenido y y un formulario personalizable.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del diálogo con los datos del formulario.\r\n */\r\n@Component({\r\n selector: 'oat-form-dialog',\r\n templateUrl: './form-dialog.component.html',\r\n styleUrl: './form-dialog.component.scss',\r\n imports: [\r\n FormsModule,\r\n MatDialogTitle,\r\n MatDialogContent,\r\n MatDialogActions,\r\n MatFormField,\r\n MatLabel,\r\n MatInput,\r\n MatHint,\r\n MatButton,\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FormDialogComponent {\r\n public dialogRef: MatDialogRef<FormDialogComponent> = inject(MatDialogRef);\r\n\r\n public title: WritableSignal<string> = signal<string>('');\r\n public content: WritableSignal<string> = signal<string>('');\r\n public fields: WritableSignal<DialogField[]> = signal<DialogField[]>([]);\r\n public ok: WritableSignal<string> = signal<string>('Continuar');\r\n public cancel: WritableSignal<string> = signal<string>('Cancelar');\r\n\r\n public closeDialog: (result?: DialogField[]) => void = (result?: DialogField[]): void => {\r\n this.dialogRef.close(result);\r\n };\r\n\r\n /**\r\n * Método para validar el formulario.\r\n * Comprueba si todos los campos requeridos tienen un valor no vacío.\r\n * @returns Devuelve true si el formulario es válido, false en caso contrario.\r\n */\r\n isFormValid(): boolean {\r\n return this.fields().every((field: DialogField): boolean => {\r\n return !field.required || Boolean(field.value && field.value.trim() !== '');\r\n });\r\n }\r\n\r\n close(result?: DialogField[]): void {\r\n this.closeDialog(result);\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n\t@for (field of fields(); track field.title) {\r\n\t<p>\r\n\t\t<mat-form-field class=\"dialogs-full-width\">\r\n\t\t\t<mat-label>{{ field.title }}</mat-label>\r\n\t\t\t<input matInput\r\n\t\t\t\t [type]=\"field.type\"\r\n\t\t\t\t [(ngModel)]=\"field.value\"\r\n\t\t\t\t [required]=\"field.required || false\">\r\n\t\t\t@if (field.hint) {\r\n\t\t\t<mat-hint>{{ field.hint }}</mat-hint>\r\n\t\t\t}\r\n\t\t</mat-form-field>\r\n\t</p>\r\n\t}\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close()\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t[disabled]=\"!isFormValid()\"\r\n\t\t\t(click)=\"close(fields())\">{{ ok() }}</button>\r\n</div>","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { Type } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { OverlayCloseEvent } from '../interfaces/modals.interface';\r\n\r\ntype OverlayCloseAnimation = () => Promise<void>;\r\n\r\n/**\r\n * Clase que representa una referencia a un overlay personalizado.\r\n *\r\n * Permite cerrar el overlay y notificar a los suscriptores sobre el evento de cierre.\r\n *\r\n * @template R Tipo de dato de respuesta.\r\n * @template T Tipo de dato pasado al modal.\r\n */\r\nexport class CustomOverlayRef<R = unknown, T = unknown> {\r\n afterClosed$ = new Subject<OverlayCloseEvent<R | null>>();\r\n private closeAnimation: OverlayCloseAnimation | undefined;\r\n private closing: boolean = false;\r\n\r\n constructor(\r\n public overlay: OverlayRef,\r\n public content: Type<unknown>,\r\n public data: T,\r\n public closeOnBackdropCLick: boolean = true,\r\n public from?: HTMLElement,\r\n public animationDuration?: number,\r\n ) {\r\n if (closeOnBackdropCLick) {\r\n overlay.backdropClick().subscribe({\r\n next: (): void => {\r\n void this._close('backdropClick', null);\r\n },\r\n });\r\n }\r\n }\r\n\r\n close(data?: R): void {\r\n void this._close('close', data ?? null);\r\n }\r\n\r\n registerCloseAnimation(closeAnimation: OverlayCloseAnimation): void {\r\n this.closeAnimation = closeAnimation;\r\n }\r\n\r\n private async _close(type: 'backdropClick' | 'close', data: R | null): Promise<void> {\r\n if (this.closing) {\r\n return;\r\n }\r\n\r\n this.closing = true;\r\n\r\n if (this.closeAnimation !== undefined) {\r\n await this.closeAnimation();\r\n }\r\n\r\n this.overlay.dispose();\r\n this.afterClosed$.next({\r\n type,\r\n data,\r\n });\r\n\r\n this.afterClosed$.complete();\r\n }\r\n}\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n OnInit,\r\n Renderer2,\r\n Signal,\r\n Type,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { Modal } from '../../interfaces/modals.interface';\r\nimport { CustomOverlayRef } from '../../model/custom-overlay-ref.model';\r\n\r\nconst DEFAULT_OVERLAY_ANIMATION_DURATION: number = 220;\r\n\r\n/**\r\n * Componente para mostrar un componente personalizado en una ventana modal.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del modal.\r\n */\r\n@Component({\r\n selector: 'oat-overlay',\r\n templateUrl: './overlay.component.html',\r\n styleUrls: ['./overlay.component.scss'],\r\n imports: [MatIcon, MatIconButton, NgComponentOutlet],\r\n})\r\nexport class OverlayComponent implements OnInit, AfterViewInit {\r\n private customOverlayRef: CustomOverlayRef<unknown, Modal> = inject(CustomOverlayRef);\r\n private renderer: Renderer2 = inject(Renderer2);\r\n private modal: Signal<ElementRef<HTMLElement>> = viewChild.required('modal');\r\n\r\n content: Type<unknown> = this.customOverlayRef.content;\r\n inputData: Modal = { modalTitle: '', modalColor: 'blue' };\r\n\r\n ngOnInit(): void {\r\n this.listenToEscKey();\r\n this.inputData = this.customOverlayRef.data;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.customOverlayRef.registerCloseAnimation((): Promise<void> => {\r\n return this.animateClose();\r\n });\r\n\r\n this.animateOpen();\r\n }\r\n\r\n private listenToEscKey(): void {\r\n this.renderer.listen('window', 'keyup', (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n });\r\n }\r\n\r\n close(): void {\r\n this.customOverlayRef.close(null);\r\n }\r\n\r\n private animateOpen(): void {\r\n const modal: HTMLElement = this.modal().nativeElement;\r\n const animationStart: Keyframe | null = this.getOriginKeyframe(modal);\r\n\r\n if (animationStart === null) {\r\n return;\r\n }\r\n\r\n modal.animate(\r\n [\r\n {\r\n ...animationStart,\r\n opacity: 0,\r\n },\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n ],\r\n {\r\n duration: this.getAnimationDuration(),\r\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\r\n },\r\n );\r\n }\r\n\r\n private animateClose(): Promise<void> {\r\n const modal: HTMLElement = this.modal().nativeElement;\r\n const animationEnd: Keyframe | null = this.getOriginKeyframe(modal);\r\n\r\n if (animationEnd === null) {\r\n return Promise.resolve();\r\n }\r\n\r\n modal.style.pointerEvents = 'none';\r\n\r\n const animation: Animation = modal.animate(\r\n [\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n {\r\n ...animationEnd,\r\n opacity: 0,\r\n },\r\n ],\r\n {\r\n duration: this.getCloseAnimationDuration(),\r\n easing: 'cubic-bezier(0.4, 0, 1, 1)',\r\n fill: 'forwards',\r\n },\r\n );\r\n\r\n return new Promise((resolve: () => void): void => {\r\n animation.onfinish = (): void => {\r\n resolve();\r\n };\r\n animation.oncancel = (): void => {\r\n resolve();\r\n };\r\n });\r\n }\r\n\r\n private getOriginKeyframe(modal: HTMLElement): Keyframe | null {\r\n const from: HTMLElement | undefined = this.customOverlayRef.from;\r\n\r\n if (\r\n from === undefined ||\r\n !from.isConnected ||\r\n this.prefersReducedMotion() ||\r\n typeof modal.animate !== 'function'\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromRect: DOMRect = from.getBoundingClientRect();\r\n const modalRect: DOMRect = modal.getBoundingClientRect();\r\n\r\n if (\r\n fromRect.width === 0 ||\r\n fromRect.height === 0 ||\r\n modalRect.width === 0 ||\r\n modalRect.height === 0\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromCenterX: number = fromRect.left + fromRect.width / 2;\r\n const fromCenterY: number = fromRect.top + fromRect.height / 2;\r\n const modalCenterX: number = modalRect.left + modalRect.width / 2;\r\n const modalCenterY: number = modalRect.top + modalRect.height / 2;\r\n const translateX: number = fromCenterX - modalCenterX;\r\n const translateY: number = fromCenterY - modalCenterY;\r\n const scale: number = this.clamp(\r\n Math.min(fromRect.width / modalRect.width, fromRect.height / modalRect.height),\r\n 0.12,\r\n 0.45,\r\n );\r\n\r\n return {\r\n transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`,\r\n transformOrigin: 'center center',\r\n };\r\n }\r\n\r\n private getAnimationDuration(): number {\r\n return this.clamp(\r\n this.customOverlayRef.animationDuration ?? DEFAULT_OVERLAY_ANIMATION_DURATION,\r\n 0,\r\n 5000,\r\n );\r\n }\r\n\r\n private getCloseAnimationDuration(): number {\r\n return Math.round(this.getAnimationDuration() * 0.82);\r\n }\r\n\r\n private prefersReducedMotion(): boolean {\r\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n }\r\n\r\n private clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n }\r\n}\r\n","<div #modal\r\n\t [class]=\"'modal ' + (inputData.css ? inputData.css : '')\">\r\n\t<div [class]=\"'modal__header modal__header--' + inputData.modalColor\">\r\n\t\t<div class=\"title\">{{ inputData.modalTitle }}</div>\r\n\t\t@if (!inputData.hideCloseBtn) {\r\n\t\t<button mat-icon-button\r\n\t\t\t\tclass=\"btn-close\"\r\n\t\t\t\t(click)=\"close()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</button>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div [class]=\"'modal__content ' + inputData.contentCss\">\r\n\t\t<ng-container *ngComponentOutlet=\"content\"></ng-container>\r\n\t</div>\r\n</div>\r\n","import {\r\n Directive,\r\n ElementRef,\r\n inject,\r\n OnDestroy,\r\n output,\r\n OutputEmitterRef,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { SwipeData } from '../interfaces/swipe.interface';\r\n\r\n/**\r\n * Directiva para detectar gestos de deslizamiento (swipe) en un elemento.\r\n *\r\n * Permite detectar deslizamientos tanto en dispositivos táctiles como con ratón.\r\n *\r\n * @returns Devuelve un observable que emite los datos del deslizamiento (deltaX y deltaY).\r\n */\r\n@Directive({\r\n selector: '[oatSwipe]',\r\n host: {\r\n '(touchstart)': 'onTouchStart($event)',\r\n '(touchend)': 'onTouchEnd($event)',\r\n '(mousedown)': 'onMouseDown($event)',\r\n '(mouseup)': 'onMouseUp($event)',\r\n },\r\n})\r\nexport class SwipeDirective implements OnDestroy {\r\n private el: ElementRef = inject(ElementRef);\r\n private renderer: Renderer2 = inject(Renderer2);\r\n swipeEnd: OutputEmitterRef<SwipeData> = output<SwipeData>();\r\n\r\n private startX: number = 0;\r\n private startY: number = 0;\r\n\r\n private touchStartListener: () => void;\r\n private touchEndListener: () => void;\r\n private mouseDownListener: () => void;\r\n private mouseUpListener: () => void;\r\n\r\n constructor() {\r\n this.touchStartListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'touchstart',\r\n (event: TouchEvent): void => this.onTouchStart(event),\r\n );\r\n this.touchEndListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'touchend',\r\n (event: TouchEvent): void => this.onTouchEnd(event),\r\n );\r\n this.mouseDownListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'mousedown',\r\n (event: MouseEvent): void => this.onMouseDown(event),\r\n );\r\n this.mouseUpListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'mouseup',\r\n (event: MouseEvent): void => this.onMouseUp(event),\r\n );\r\n }\r\n\r\n onTouchStart(event: TouchEvent): void {\r\n this.startX = event.touches[0].clientX;\r\n this.startY = event.touches[0].clientY;\r\n }\r\n\r\n onTouchEnd(event: TouchEvent): void {\r\n const endX: number = event.changedTouches[0].clientX;\r\n const endY: number = event.changedTouches[0].clientY;\r\n const deltaX: number = endX - this.startX;\r\n const deltaY: number = endY - this.startY;\r\n\r\n this.swipeEnd.emit({ x: deltaX, y: deltaY });\r\n }\r\n\r\n onMouseDown(event: MouseEvent): void {\r\n this.startX = event.clientX;\r\n this.startY = event.clientY;\r\n }\r\n\r\n onMouseUp(event: MouseEvent): void {\r\n const endX: number = event.clientX;\r\n const endY: number = event.clientY;\r\n const deltaX: number = endX - this.startX;\r\n const deltaY: number = endY - this.startY;\r\n\r\n this.swipeEnd.emit({ x: deltaX, y: deltaY });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.touchStartListener();\r\n this.touchEndListener();\r\n this.mouseDownListener();\r\n this.mouseUpListener();\r\n }\r\n}\r\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport { inject, Injectable, PLATFORM_ID, Type } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { AlertDialogComponent } from '../components/dialogs/alert-dialog/alert-dialog.component';\r\nimport { ConfirmDialogComponent } from '../components/dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { FormDialogComponent } from '../components/dialogs/form-dialog/form-dialog.component';\r\nimport { DialogField, DialogOptions } from '../interfaces/dialogs.interface';\r\n\r\ntype DialogResult = boolean | DialogField[] | undefined;\r\nconst DEFAULT_DIALOG_ANIMATION_DURATION: number = 220;\r\n\r\n/**\r\n * Servicio para manejar diálogos en la aplicación.\r\n *\r\n * Permite abrir diálogos de alerta, confirmación y formularios personalizados.\r\n *\r\n * Cada método devuelve un observable que emite el resultado del diálogo al cerrarse.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n private dialog: MatDialog = inject(MatDialog);\r\n private document: Document = inject(DOCUMENT);\r\n private platformId: object = inject(PLATFORM_ID);\r\n\r\n private static dialogId: number = 0;\r\n\r\n /**\r\n * Método para mostrar un diálogo de alerta.\r\n * @param options Datos a mostrar en el diálogo, incluyendo título, contenido y texto del botón de confirmación (opcional).\r\n * @returns Devuelve un observable para notificar el cierre del diálogo.\r\n */\r\n public alert(options: DialogOptions): Observable<boolean> {\r\n const dialogRef: MatDialogRef<AlertDialogComponent> = this.openDialog(\r\n AlertDialogComponent,\r\n options,\r\n );\r\n\r\n dialogRef.componentInstance.title.set(options.title);\r\n dialogRef.componentInstance.content.set(options.content);\r\n if (options.ok !== undefined) {\r\n dialogRef.componentInstance.ok.set(options.ok);\r\n }\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n /**\r\n * Método para mostrar un diálogo de confirmación.\r\n * @param options Datos a mostrar en el diálogo, incluyendo título, contenido, si es una advertencia (opcional) y textos para los botones de acción (opcionales).\r\n * @returns Devuelve un observable para notificar el cierre del diálogo con el valor true para diálogo aceptado y false para diálogo cancelado.\r\n */\r\n public confirm(options: DialogOptions): Observable<boolean> {\r\n const dialogRef: MatDialogRef<ConfirmDialogComponent> = this.openDialog(\r\n ConfirmDialogComponent,\r\n options,\r\n );\r\n\r\n dialogRef.componentInstance.title.set(options.title);\r\n dialogRef.componentInstance.content.set(options.content);\r\n if (options.warn !== undefined) {\r\n dialogRef.componentInstance.warn.set(options.warn);\r\n }\r\n if (options.ok !== undefined) {\r\n dialogRef.componentInstance.ok.set(options.ok);\r\n }\r\n if (options.cancel !== undefined) {\r\n dialogRef.componentInstance.cancel.set(options.cancel);\r\n }\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n /**\r\n * Método para mostrar un diálogo con un formulario personalizado.\r\n * @param options Datos a mostrar en el diálogo, incluyendo título, campos a rellenar y textos para los botones de acción (opcionales).\r\n * @returns Devuelve un observable para notificar el cierre del diálogo con los valores introducidos en el formulario.\r\n */\r\n public form(options: DialogOptions): Observable<DialogField[]> {\r\n const dialogRef: MatDialogRef<FormDialogComponent> = this.openDialog(\r\n FormDialogComponent,\r\n options,\r\n );\r\n\r\n dialogRef.componentInstance.title.set(options.title);\r\n dialogRef.componentInstance.content.set(options.content);\r\n if (options.ok !== undefined) {\r\n dialogRef.componentInstance.ok.set(options.ok);\r\n }\r\n if (options.cancel !== undefined) {\r\n dialogRef.componentInstance.cancel.set(options.cancel);\r\n }\r\n if (options.fields !== undefined) {\r\n dialogRef.componentInstance.fields.set(options.fields);\r\n }\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n private openDialog<TComponent>(\r\n component: Type<TComponent>,\r\n options: DialogOptions,\r\n ): MatDialogRef<TComponent> {\r\n const panelClass: string | undefined =\r\n options.from !== undefined ? this.getPanelClass() : undefined;\r\n const dialogConfig: MatDialogConfig = {};\r\n\r\n if (panelClass !== undefined) {\r\n dialogConfig.panelClass = panelClass;\r\n dialogConfig.disableClose = true;\r\n dialogConfig.enterAnimationDuration = '0ms';\r\n dialogConfig.exitAnimationDuration = '0ms';\r\n }\r\n\r\n const dialogRef: MatDialogRef<TComponent> = this.dialog.open(component, dialogConfig);\r\n\r\n const animationDuration: number = this.getAnimationDuration(options);\r\n\r\n this.configureDialogClose(dialogRef, panelClass, options.from, animationDuration);\r\n\r\n if (panelClass !== undefined && options.from !== undefined) {\r\n this.prepareDialogOpen(panelClass);\r\n this.animateDialogOpen(panelClass, options.from, animationDuration);\r\n }\r\n\r\n return dialogRef;\r\n }\r\n\r\n private configureDialogClose<TComponent>(\r\n dialogRef: MatDialogRef<TComponent>,\r\n panelClass: string | undefined,\r\n from: HTMLElement | undefined,\r\n animationDuration: number,\r\n ): void {\r\n let closing: boolean = false;\r\n const closeDialog = (result?: DialogResult): void => {\r\n if (closing) {\r\n return;\r\n }\r\n\r\n closing = true;\r\n void this.closeDialog(dialogRef, panelClass, from, animationDuration, result);\r\n };\r\n\r\n (\r\n dialogRef.componentInstance as TComponent & {\r\n closeDialog?: (result?: DialogResult) => void;\r\n }\r\n ).closeDialog = closeDialog;\r\n\r\n if (panelClass === undefined || from === undefined) {\r\n return;\r\n }\r\n\r\n dialogRef.backdropClick().subscribe({\r\n next: (): void => {\r\n closeDialog();\r\n },\r\n });\r\n\r\n dialogRef.keydownEvents().subscribe({\r\n next: (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n closeDialog();\r\n }\r\n },\r\n });\r\n }\r\n\r\n private getPanelClass(): string {\r\n DialogService.dialogId++;\r\n return `oat-dialog-from-${DialogService.dialogId}`;\r\n }\r\n\r\n private animateDialogOpen(\r\n panelClass: string,\r\n from: HTMLElement,\r\n animationDuration: number,\r\n ): void {\r\n this.runAfterRender((): void => {\r\n const panel: HTMLElement | null = this.getPanel(panelClass);\r\n const animationStart: Keyframe | null = this.getOriginKeyframe(panel, from);\r\n\r\n if (panel === null || animationStart === null) {\r\n if (panel !== null) {\r\n panel.style.opacity = '';\r\n }\r\n return;\r\n }\r\n\r\n const animation: Animation = panel.animate(\r\n [\r\n {\r\n ...animationStart,\r\n opacity: 0,\r\n },\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n ],\r\n {\r\n duration: animationDuration,\r\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\r\n },\r\n );\r\n\r\n animation.onfinish = (): void => {\r\n panel.style.opacity = '';\r\n };\r\n animation.oncancel = (): void => {\r\n panel.style.opacity = '';\r\n };\r\n });\r\n }\r\n\r\n private prepareDialogOpen(panelClass: string): void {\r\n if (!this.canAnimate()) {\r\n return;\r\n }\r\n\r\n const panel: HTMLElement | null = this.getPanel(panelClass);\r\n\r\n if (panel !== null) {\r\n panel.style.opacity = '0';\r\n }\r\n }\r\n\r\n private async closeDialog<TComponent>(\r\n dialogRef: MatDialogRef<TComponent>,\r\n panelClass: string | undefined,\r\n from: HTMLElement | undefined,\r\n animationDuration: number,\r\n result?: DialogResult,\r\n ): Promise<void> {\r\n if (panelClass === undefined || from === undefined) {\r\n dialogRef.close(result);\r\n return;\r\n }\r\n\r\n const panel: HTMLElement | null = this.getPanel(panelClass);\r\n const animationEnd: Keyframe | null = this.getOriginKeyframe(panel, from);\r\n\r\n if (panel === null || animationEnd === null) {\r\n dialogRef.close(result);\r\n return;\r\n }\r\n\r\n await this.animatePanelClose(\r\n panel,\r\n animationEnd,\r\n this.getCloseAnimationDuration(animationDuration),\r\n );\r\n dialogRef.close(result);\r\n }\r\n\r\n private animatePanelClose(\r\n panel: HTMLElement,\r\n animationEnd: Keyframe,\r\n animationDuration: number,\r\n ): Promise<void> {\r\n panel.style.pointerEvents = 'none';\r\n\r\n const animation: Animation = panel.animate(\r\n [\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n {\r\n ...animationEnd,\r\n opacity: 0,\r\n },\r\n ],\r\n {\r\n duration: animationDuration,\r\n easing: 'cubic-bezier(0.4, 0, 1, 1)',\r\n fill: 'forwards',\r\n },\r\n );\r\n\r\n return new Promise((resolve: () => void): void => {\r\n animation.onfinish = (): void => {\r\n resolve();\r\n };\r\n animation.oncancel = (): void => {\r\n resolve();\r\n };\r\n });\r\n }\r\n\r\n private getOriginKeyframe(panel: HTMLElement | null, from: HTMLElement): Keyframe | null {\r\n if (\r\n panel === null ||\r\n !this.canAnimate() ||\r\n !from.isConnected ||\r\n typeof panel.animate !== 'function'\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromRect: DOMRect = from.getBoundingClientRect();\r\n const panelRect: DOMRect = panel.getBoundingClientRect();\r\n\r\n if (\r\n fromRect.width === 0 ||\r\n fromRect.height === 0 ||\r\n panelRect.width === 0 ||\r\n panelRect.height === 0\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromCenterX: number = fromRect.left + fromRect.width / 2;\r\n const fromCenterY: number = fromRect.top + fromRect.height / 2;\r\n const panelCenterX: number = panelRect.left + panelRect.width / 2;\r\n const panelCenterY: number = panelRect.top + panelRect.height / 2;\r\n const translateX: number = fromCenterX - panelCenterX;\r\n const translateY: number = fromCenterY - panelCenterY;\r\n const scale: number = this.clamp(\r\n Math.min(fromRect.width / panelRect.width, fromRect.height / panelRect.height),\r\n 0.12,\r\n 0.45,\r\n );\r\n\r\n return {\r\n transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`,\r\n transformOrigin: 'center center',\r\n };\r\n }\r\n\r\n private getPanel(panelClass: string): HTMLElement | null {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return null;\r\n }\r\n\r\n return this.document.querySelector<HTMLElement>(`.${panelClass}`);\r\n }\r\n\r\n private canAnimate(): boolean {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return false;\r\n }\r\n\r\n const defaultView: Window | null = this.document.defaultView;\r\n\r\n return (\r\n defaultView !== null && !defaultView.matchMedia('(prefers-reduced-motion: reduce)').matches\r\n );\r\n }\r\n\r\n private runAfterRender(callback: () => void): void {\r\n const defaultView: Window | null = this.document.defaultView;\r\n\r\n if (!isPlatformBrowser(this.platformId) || defaultView === null) {\r\n callback();\r\n return;\r\n }\r\n\r\n defaultView.requestAnimationFrame((): void => {\r\n defaultView.requestAnimationFrame(callback);\r\n });\r\n }\r\n\r\n private clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n }\r\n\r\n private getAnimationDuration(options: DialogOptions): number {\r\n return this.clamp(\r\n options.animationDuration ?? DEFAULT_DIALOG_ANIMATION_DURATION,\r\n 0,\r\n 5000,\r\n );\r\n }\r\n\r\n private getCloseAnimationDuration(animationDuration: number): number {\r\n return Math.round(animationDuration * 0.82);\r\n }\r\n}\r\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { OverlayComponent } from '../components/overlay/overlay.component';\r\nimport { Modal } from '../interfaces/modals.interface';\r\nimport { CustomOverlayRef } from '../model/custom-overlay-ref.model';\r\n\r\n/**\r\n * Servicio para manejar modales personalizados en la aplicación.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class OverlayService {\r\n private overlay: Overlay = inject(Overlay);\r\n private injector: Injector = inject(Injector);\r\n\r\n /**\r\n * Método para abrir un componente personalizado en un modal.\r\n * @param content Componente a mostrar en el overlay.\r\n * @param data Datos a pasar al componente del overlay.\r\n * @param panelCssClasses Clases CSS adicionales para el panel del overlay (opcional).\r\n * @param closeOnBackdropCLick Indica si el overlay se cierra al hacer clic en el fondo (opcional, por defecto true).\r\n * @param from Elemento desde el que se anima la apertura y cierre del overlay (opcional).\r\n * @param animationDuration Duración de la animación en milisegundos (opcional).\r\n * @returns Devuelve una referencia personalizada del overlay.\r\n */\r\n open<R = unknown>(\r\n content: Type<unknown>,\r\n data: Modal,\r\n panelCssClasses: string[] = [],\r\n closeOnBackdropCLick: boolean = true,\r\n from?: HTMLElement,\r\n animationDuration?: number\r\n ): CustomOverlayRef<R> {\r\n const _panelCssClasses: string[] = ['modals-panel'].concat(panelCssClasses);\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n panelClass: _panelCssClasses,\r\n backdropClass: 'modals-background',\r\n width: '100%',\r\n height: '100%',\r\n });\r\n\r\n const overlayRef = this.overlay.create(config);\r\n\r\n const customOverlayRef = new CustomOverlayRef<R, Modal>(\r\n overlayRef,\r\n content,\r\n data,\r\n closeOnBackdropCLick,\r\n from,\r\n animationDuration\r\n );\r\n const injector = this.createInjector(customOverlayRef, this.injector);\r\n overlayRef.attach(new ComponentPortal(OverlayComponent, null, injector));\r\n\r\n return customOverlayRef;\r\n }\r\n\r\n private createInjector<R>(\r\n ref: CustomOverlayRef<R, Modal>,\r\n inj: Injector\r\n ): Injector {\r\n return Injector.create({\r\n providers: [{ provide: CustomOverlayRef, useValue: ref }],\r\n parent: inj,\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of osumi-angular-tools\r\n */\r\nexport * from './lib/components/dialogs/alert-dialog/alert-dialog.component';\r\nexport * from './lib/components/dialogs/confirm-dialog/confirm-dialog.component';\r\nexport * from './lib/components/dialogs/form-dialog/form-dialog.component';\r\nexport * from './lib/components/overlay/overlay.component';\r\nexport * from './lib/directives/swipe.directive';\r\nexport * from './lib/interfaces/dialogs.interface';\r\nexport * from './lib/interfaces/modals.interface';\r\nexport * from './lib/interfaces/swipe.interface';\r\nexport * from './lib/model/custom-overlay-ref.model';\r\nexport * from './lib/services/dialog.service';\r\nexport * from './lib/services/overlay.service';\r\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":"osumi-angular-tools.mjs","sources":["../../../projects/osumi-angular-tools/src/lib/components/dialogs/alert-dialog/alert-dialog.component.ts","../../../projects/osumi-angular-tools/src/lib/components/dialogs/alert-dialog/alert-dialog.component.html","../../../projects/osumi-angular-tools/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.ts","../../../projects/osumi-angular-tools/src/lib/components/dialogs/confirm-dialog/confirm-dialog.component.html","../../../projects/osumi-angular-tools/src/lib/components/dialogs/form-dialog/form-dialog.component.ts","../../../projects/osumi-angular-tools/src/lib/components/dialogs/form-dialog/form-dialog.component.html","../../../projects/osumi-angular-tools/src/lib/model/custom-overlay-ref.model.ts","../../../projects/osumi-angular-tools/src/lib/components/overlay/overlay.component.ts","../../../projects/osumi-angular-tools/src/lib/components/overlay/overlay.component.html","../../../projects/osumi-angular-tools/src/lib/directives/swipe.directive.ts","../../../projects/osumi-angular-tools/src/lib/services/dialog.service.ts","../../../projects/osumi-angular-tools/src/lib/services/overlay.service.ts","../../../projects/osumi-angular-tools/src/public-api.ts","../../../projects/osumi-angular-tools/src/osumi-angular-tools.ts"],"sourcesContent":["import { Component, inject, signal, WritableSignal } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle,\r\n} from '@angular/material/dialog';\r\n\r\n/**\r\n * Componente para mostrar un diálogo de alerta.\r\n *\r\n * Permite mostrar un mensaje de alerta con un título, contenido y un botón de confirmación personalizables.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del diálogo.\r\n */\r\n@Component({\r\n selector: 'oat-alert-dialog',\r\n templateUrl: './alert-dialog.component.html',\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton],\r\n})\r\nexport class AlertDialogComponent {\r\n public dialogRef: MatDialogRef<AlertDialogComponent> = inject(MatDialogRef);\r\n\r\n public title: WritableSignal<string> = signal<string>('');\r\n public content: WritableSignal<string> = signal<string>('');\r\n public ok: WritableSignal<string> = signal<string>('Continuar');\r\n\r\n public closeDialog: (result: boolean) => void = (result: boolean): void => {\r\n this.dialogRef.close(result);\r\n };\r\n\r\n close(result: boolean): void {\r\n this.closeDialog(result);\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, inject, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle,\r\n} from '@angular/material/dialog';\r\n\r\n/**\r\n * Componente para mostrar un diálogo de confirmación.\r\n *\r\n * Permite mostrar un mensaje de confirmación con un título, contenido y botones de confirmación y cancelar personalizables.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del diálogo indicando si se ha confirmado o cancelado la acción.\r\n */\r\n@Component({\r\n selector: 'oat-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrl: './confirm-dialog.component.scss',\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton, NgClass],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ConfirmDialogComponent {\r\n public dialogRef: MatDialogRef<ConfirmDialogComponent> = inject(MatDialogRef);\r\n\r\n public title: WritableSignal<string> = signal<string>('');\r\n public content: WritableSignal<string> = signal<string>('');\r\n public warn: WritableSignal<boolean> = signal<boolean>(false);\r\n public ok: WritableSignal<string> = signal<string>('Continuar');\r\n public cancel: WritableSignal<string> = signal<string>('Cancelar');\r\n\r\n public closeDialog: (result: boolean) => void = (result: boolean): void => {\r\n this.dialogRef.close(result);\r\n };\r\n\r\n close(result: boolean): void {\r\n this.closeDialog(result);\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close(false)\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\t[ngClass]=\"{'dialogs-warn': warn()}\"\r\n\t\t\t(click)=\"close(true)\">{{ ok() }}</button>\r\n</div>\r\n","import { Component, inject, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle,\r\n} from '@angular/material/dialog';\r\nimport { MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { DialogField } from '../../../interfaces/dialogs.interface';\r\n\r\n/**\r\n * Componente para mostrar un diálogo con un formulario.\r\n *\r\n * Permite mostrar un mensaje de confirmación con un título, contenido y y un formulario personalizable.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del diálogo con los datos del formulario.\r\n */\r\n@Component({\r\n selector: 'oat-form-dialog',\r\n templateUrl: './form-dialog.component.html',\r\n styleUrl: './form-dialog.component.scss',\r\n imports: [\r\n FormsModule,\r\n MatDialogTitle,\r\n MatDialogContent,\r\n MatDialogActions,\r\n MatFormField,\r\n MatLabel,\r\n MatInput,\r\n MatHint,\r\n MatButton,\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FormDialogComponent {\r\n public dialogRef: MatDialogRef<FormDialogComponent> = inject(MatDialogRef);\r\n\r\n public title: WritableSignal<string> = signal<string>('');\r\n public content: WritableSignal<string> = signal<string>('');\r\n public fields: WritableSignal<DialogField[]> = signal<DialogField[]>([]);\r\n public ok: WritableSignal<string> = signal<string>('Continuar');\r\n public cancel: WritableSignal<string> = signal<string>('Cancelar');\r\n\r\n public closeDialog: (result?: DialogField[]) => void = (result?: DialogField[]): void => {\r\n this.dialogRef.close(result);\r\n };\r\n\r\n /**\r\n * Método para validar el formulario.\r\n * Comprueba si todos los campos requeridos tienen un valor no vacío.\r\n * @returns Devuelve true si el formulario es válido, false en caso contrario.\r\n */\r\n isFormValid(): boolean {\r\n return this.fields().every((field: DialogField): boolean => {\r\n return !field.required || Boolean(field.value && field.value.trim() !== '');\r\n });\r\n }\r\n\r\n close(result?: DialogField[]): void {\r\n this.closeDialog(result);\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ title() }}</h1>\r\n<div mat-dialog-content>\r\n\t<p>{{ content() }}</p>\r\n\t@for (field of fields(); track field.title) {\r\n\t<p>\r\n\t\t<mat-form-field class=\"dialogs-full-width\">\r\n\t\t\t<mat-label>{{ field.title }}</mat-label>\r\n\t\t\t<input matInput\r\n\t\t\t\t [type]=\"field.type\"\r\n\t\t\t\t [(ngModel)]=\"field.value\"\r\n\t\t\t\t [required]=\"field.required || false\">\r\n\t\t\t@if (field.hint) {\r\n\t\t\t<mat-hint>{{ field.hint }}</mat-hint>\r\n\t\t\t}\r\n\t\t</mat-form-field>\r\n\t</p>\r\n\t}\r\n</div>\r\n<div mat-dialog-actions\r\n\t align=\"end\">\r\n\t<button type=\"button\"\r\n\t\t\tmat-button\r\n\t\t\t(click)=\"close()\">{{ cancel() }}</button>\r\n\t<button type=\"button\"\r\n\t\t\tmat-flat-button\r\n\t\t\tcolor=\"primary\"\r\n\t\t\t[disabled]=\"!isFormValid()\"\r\n\t\t\t(click)=\"close(fields())\">{{ ok() }}</button>\r\n</div>","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { Type } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { OverlayCloseEvent } from '../interfaces/modals.interface';\r\n\r\ntype OverlayCloseAnimation = () => Promise<void>;\r\n\r\n/**\r\n * Clase que representa una referencia a un overlay personalizado.\r\n *\r\n * Permite cerrar el overlay y notificar a los suscriptores sobre el evento de cierre.\r\n *\r\n * @template R Tipo de dato de respuesta.\r\n * @template T Tipo de dato pasado al modal.\r\n */\r\nexport class CustomOverlayRef<R = unknown, T = unknown> {\r\n afterClosed$ = new Subject<OverlayCloseEvent<R | null>>();\r\n private closeAnimation: OverlayCloseAnimation | undefined;\r\n private closing: boolean = false;\r\n\r\n constructor(\r\n public overlay: OverlayRef,\r\n public content: Type<unknown>,\r\n public data: T,\r\n public closeOnBackdropCLick: boolean = true,\r\n public from?: HTMLElement,\r\n public animationDuration?: number,\r\n ) {\r\n if (closeOnBackdropCLick) {\r\n overlay.backdropClick().subscribe({\r\n next: (): void => {\r\n void this._close('backdropClick', null);\r\n },\r\n });\r\n }\r\n }\r\n\r\n close(data?: R): void {\r\n void this._close('close', data ?? null);\r\n }\r\n\r\n registerCloseAnimation(closeAnimation: OverlayCloseAnimation): void {\r\n this.closeAnimation = closeAnimation;\r\n }\r\n\r\n private async _close(type: 'backdropClick' | 'close', data: R | null): Promise<void> {\r\n if (this.closing) {\r\n return;\r\n }\r\n\r\n this.closing = true;\r\n\r\n if (this.closeAnimation !== undefined) {\r\n await this.closeAnimation();\r\n }\r\n\r\n this.overlay.dispose();\r\n this.afterClosed$.next({\r\n type,\r\n data,\r\n });\r\n\r\n this.afterClosed$.complete();\r\n }\r\n}\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n OnInit,\r\n Renderer2,\r\n Signal,\r\n Type,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { Modal } from '../../interfaces/modals.interface';\r\nimport { CustomOverlayRef } from '../../model/custom-overlay-ref.model';\r\n\r\nconst DEFAULT_OVERLAY_ANIMATION_DURATION: number = 220;\r\n\r\n/**\r\n * Componente para mostrar un componente personalizado en una ventana modal.\r\n *\r\n * @returns Devuelve mediante un observable la notificación de cierre del modal.\r\n */\r\n@Component({\r\n selector: 'oat-overlay',\r\n templateUrl: './overlay.component.html',\r\n styleUrls: ['./overlay.component.scss'],\r\n imports: [MatIcon, MatIconButton, NgComponentOutlet],\r\n})\r\nexport class OverlayComponent implements OnInit, AfterViewInit {\r\n private customOverlayRef: CustomOverlayRef<unknown, Modal> = inject(CustomOverlayRef);\r\n private renderer: Renderer2 = inject(Renderer2);\r\n private modal: Signal<ElementRef<HTMLElement>> = viewChild.required('modal');\r\n\r\n content: Type<unknown> = this.customOverlayRef.content;\r\n inputData: Modal = { modalTitle: '', modalColor: 'blue' };\r\n\r\n ngOnInit(): void {\r\n this.listenToEscKey();\r\n this.inputData = this.customOverlayRef.data;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.customOverlayRef.registerCloseAnimation((): Promise<void> => {\r\n return this.animateClose();\r\n });\r\n\r\n this.animateOpen();\r\n }\r\n\r\n private listenToEscKey(): void {\r\n this.renderer.listen('window', 'keyup', (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n });\r\n }\r\n\r\n close(): void {\r\n this.customOverlayRef.close(null);\r\n }\r\n\r\n private animateOpen(): void {\r\n const modal: HTMLElement = this.modal().nativeElement;\r\n const animationStart: Keyframe | null = this.getOriginKeyframe(modal);\r\n\r\n if (animationStart === null) {\r\n return;\r\n }\r\n\r\n modal.animate(\r\n [\r\n {\r\n ...animationStart,\r\n opacity: 0,\r\n },\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n ],\r\n {\r\n duration: this.getAnimationDuration(),\r\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\r\n },\r\n );\r\n }\r\n\r\n private animateClose(): Promise<void> {\r\n const modal: HTMLElement = this.modal().nativeElement;\r\n const animationEnd: Keyframe | null = this.getOriginKeyframe(modal);\r\n\r\n if (animationEnd === null) {\r\n return Promise.resolve();\r\n }\r\n\r\n modal.style.pointerEvents = 'none';\r\n\r\n const animation: Animation = modal.animate(\r\n [\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n {\r\n ...animationEnd,\r\n opacity: 0,\r\n },\r\n ],\r\n {\r\n duration: this.getCloseAnimationDuration(),\r\n easing: 'cubic-bezier(0.4, 0, 1, 1)',\r\n fill: 'forwards',\r\n },\r\n );\r\n\r\n return new Promise((resolve: () => void): void => {\r\n animation.onfinish = (): void => {\r\n resolve();\r\n };\r\n animation.oncancel = (): void => {\r\n resolve();\r\n };\r\n });\r\n }\r\n\r\n private getOriginKeyframe(modal: HTMLElement): Keyframe | null {\r\n const from: HTMLElement | undefined = this.customOverlayRef.from;\r\n\r\n if (\r\n from === undefined ||\r\n !from.isConnected ||\r\n this.prefersReducedMotion() ||\r\n typeof modal.animate !== 'function'\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromRect: DOMRect = from.getBoundingClientRect();\r\n const modalRect: DOMRect = modal.getBoundingClientRect();\r\n\r\n if (\r\n fromRect.width === 0 ||\r\n fromRect.height === 0 ||\r\n modalRect.width === 0 ||\r\n modalRect.height === 0\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromCenterX: number = fromRect.left + fromRect.width / 2;\r\n const fromCenterY: number = fromRect.top + fromRect.height / 2;\r\n const modalCenterX: number = modalRect.left + modalRect.width / 2;\r\n const modalCenterY: number = modalRect.top + modalRect.height / 2;\r\n const translateX: number = fromCenterX - modalCenterX;\r\n const translateY: number = fromCenterY - modalCenterY;\r\n const scale: number = this.clamp(\r\n Math.min(fromRect.width / modalRect.width, fromRect.height / modalRect.height),\r\n 0.12,\r\n 0.45,\r\n );\r\n\r\n return {\r\n transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`,\r\n transformOrigin: 'center center',\r\n };\r\n }\r\n\r\n private getAnimationDuration(): number {\r\n return this.clamp(\r\n this.customOverlayRef.animationDuration ?? DEFAULT_OVERLAY_ANIMATION_DURATION,\r\n 0,\r\n 5000,\r\n );\r\n }\r\n\r\n private getCloseAnimationDuration(): number {\r\n return Math.round(this.getAnimationDuration() * 0.82);\r\n }\r\n\r\n private prefersReducedMotion(): boolean {\r\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n }\r\n\r\n private clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n }\r\n}\r\n","<div #modal\r\n\t [class]=\"'modal ' + (inputData.css ? inputData.css : '')\">\r\n\t<div [class]=\"'modal__header modal__header--' + inputData.modalColor\">\r\n\t\t<div class=\"title\">{{ inputData.modalTitle }}</div>\r\n\t\t@if (!inputData.hideCloseBtn) {\r\n\t\t<button mat-icon-button\r\n\t\t\t\tclass=\"btn-close\"\r\n\t\t\t\t(click)=\"close()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</button>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div [class]=\"'modal__content ' + (inputData.contentCss ? inputData.contentCss : '')\">\r\n\t\t<ng-container *ngComponentOutlet=\"content\"></ng-container>\r\n\t</div>\r\n</div>","import {\r\n Directive,\r\n ElementRef,\r\n inject,\r\n OnDestroy,\r\n output,\r\n OutputEmitterRef,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { SwipeData } from '../interfaces/swipe.interface';\r\n\r\n/**\r\n * Directiva para detectar gestos de deslizamiento (swipe) en un elemento.\r\n *\r\n * Permite detectar deslizamientos tanto en dispositivos táctiles como con ratón.\r\n *\r\n * @returns Devuelve un observable que emite los datos del deslizamiento (deltaX y deltaY).\r\n */\r\n@Directive({\r\n selector: '[oatSwipe]',\r\n host: {\r\n '(touchstart)': 'onTouchStart($event)',\r\n '(touchend)': 'onTouchEnd($event)',\r\n '(mousedown)': 'onMouseDown($event)',\r\n '(mouseup)': 'onMouseUp($event)',\r\n },\r\n})\r\nexport class SwipeDirective implements OnDestroy {\r\n private el: ElementRef = inject(ElementRef);\r\n private renderer: Renderer2 = inject(Renderer2);\r\n swipeEnd: OutputEmitterRef<SwipeData> = output<SwipeData>();\r\n\r\n private startX: number = 0;\r\n private startY: number = 0;\r\n\r\n private touchStartListener: () => void;\r\n private touchEndListener: () => void;\r\n private mouseDownListener: () => void;\r\n private mouseUpListener: () => void;\r\n\r\n constructor() {\r\n this.touchStartListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'touchstart',\r\n (event: TouchEvent): void => this.onTouchStart(event),\r\n );\r\n this.touchEndListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'touchend',\r\n (event: TouchEvent): void => this.onTouchEnd(event),\r\n );\r\n this.mouseDownListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'mousedown',\r\n (event: MouseEvent): void => this.onMouseDown(event),\r\n );\r\n this.mouseUpListener = this.renderer.listen(\r\n this.el.nativeElement,\r\n 'mouseup',\r\n (event: MouseEvent): void => this.onMouseUp(event),\r\n );\r\n }\r\n\r\n onTouchStart(event: TouchEvent): void {\r\n this.startX = event.touches[0].clientX;\r\n this.startY = event.touches[0].clientY;\r\n }\r\n\r\n onTouchEnd(event: TouchEvent): void {\r\n const endX: number = event.changedTouches[0].clientX;\r\n const endY: number = event.changedTouches[0].clientY;\r\n const deltaX: number = endX - this.startX;\r\n const deltaY: number = endY - this.startY;\r\n\r\n this.swipeEnd.emit({ x: deltaX, y: deltaY });\r\n }\r\n\r\n onMouseDown(event: MouseEvent): void {\r\n this.startX = event.clientX;\r\n this.startY = event.clientY;\r\n }\r\n\r\n onMouseUp(event: MouseEvent): void {\r\n const endX: number = event.clientX;\r\n const endY: number = event.clientY;\r\n const deltaX: number = endX - this.startX;\r\n const deltaY: number = endY - this.startY;\r\n\r\n this.swipeEnd.emit({ x: deltaX, y: deltaY });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.touchStartListener();\r\n this.touchEndListener();\r\n this.mouseDownListener();\r\n this.mouseUpListener();\r\n }\r\n}\r\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport { inject, Injectable, PLATFORM_ID, Type } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { AlertDialogComponent } from '../components/dialogs/alert-dialog/alert-dialog.component';\r\nimport { ConfirmDialogComponent } from '../components/dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { FormDialogComponent } from '../components/dialogs/form-dialog/form-dialog.component';\r\nimport { DialogField, DialogOptions } from '../interfaces/dialogs.interface';\r\n\r\ntype DialogResult = boolean | DialogField[] | undefined;\r\nconst DEFAULT_DIALOG_ANIMATION_DURATION: number = 220;\r\n\r\n/**\r\n * Servicio para manejar diálogos en la aplicación.\r\n *\r\n * Permite abrir diálogos de alerta, confirmación y formularios personalizados.\r\n *\r\n * Cada método devuelve un observable que emite el resultado del diálogo al cerrarse.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n private dialog: MatDialog = inject(MatDialog);\r\n private document: Document = inject(DOCUMENT);\r\n private platformId: object = inject(PLATFORM_ID);\r\n\r\n private static dialogId: number = 0;\r\n\r\n /**\r\n * Método para mostrar un diálogo de alerta.\r\n * @param options Datos a mostrar en el diálogo, incluyendo título, contenido y texto del botón de confirmación (opcional).\r\n * @returns Devuelve un observable para notificar el cierre del diálogo.\r\n */\r\n public alert(options: DialogOptions): Observable<boolean> {\r\n const dialogRef: MatDialogRef<AlertDialogComponent> = this.openDialog(\r\n AlertDialogComponent,\r\n options,\r\n );\r\n\r\n dialogRef.componentInstance.title.set(options.title);\r\n dialogRef.componentInstance.content.set(options.content);\r\n if (options.ok !== undefined) {\r\n dialogRef.componentInstance.ok.set(options.ok);\r\n }\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n /**\r\n * Método para mostrar un diálogo de confirmación.\r\n * @param options Datos a mostrar en el diálogo, incluyendo título, contenido, si es una advertencia (opcional) y textos para los botones de acción (opcionales).\r\n * @returns Devuelve un observable para notificar el cierre del diálogo con el valor true para diálogo aceptado y false para diálogo cancelado.\r\n */\r\n public confirm(options: DialogOptions): Observable<boolean> {\r\n const dialogRef: MatDialogRef<ConfirmDialogComponent> = this.openDialog(\r\n ConfirmDialogComponent,\r\n options,\r\n );\r\n\r\n dialogRef.componentInstance.title.set(options.title);\r\n dialogRef.componentInstance.content.set(options.content);\r\n if (options.warn !== undefined) {\r\n dialogRef.componentInstance.warn.set(options.warn);\r\n }\r\n if (options.ok !== undefined) {\r\n dialogRef.componentInstance.ok.set(options.ok);\r\n }\r\n if (options.cancel !== undefined) {\r\n dialogRef.componentInstance.cancel.set(options.cancel);\r\n }\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n /**\r\n * Método para mostrar un diálogo con un formulario personalizado.\r\n * @param options Datos a mostrar en el diálogo, incluyendo título, campos a rellenar y textos para los botones de acción (opcionales).\r\n * @returns Devuelve un observable para notificar el cierre del diálogo con los valores introducidos en el formulario.\r\n */\r\n public form(options: DialogOptions): Observable<DialogField[]> {\r\n const dialogRef: MatDialogRef<FormDialogComponent> = this.openDialog(\r\n FormDialogComponent,\r\n options,\r\n );\r\n\r\n dialogRef.componentInstance.title.set(options.title);\r\n dialogRef.componentInstance.content.set(options.content);\r\n if (options.ok !== undefined) {\r\n dialogRef.componentInstance.ok.set(options.ok);\r\n }\r\n if (options.cancel !== undefined) {\r\n dialogRef.componentInstance.cancel.set(options.cancel);\r\n }\r\n if (options.fields !== undefined) {\r\n dialogRef.componentInstance.fields.set(options.fields);\r\n }\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n private openDialog<TComponent>(\r\n component: Type<TComponent>,\r\n options: DialogOptions,\r\n ): MatDialogRef<TComponent> {\r\n const panelClass: string | undefined =\r\n options.from !== undefined ? this.getPanelClass() : undefined;\r\n const dialogConfig: MatDialogConfig = {};\r\n\r\n if (panelClass !== undefined) {\r\n dialogConfig.panelClass = panelClass;\r\n dialogConfig.disableClose = true;\r\n dialogConfig.enterAnimationDuration = '0ms';\r\n dialogConfig.exitAnimationDuration = '0ms';\r\n }\r\n\r\n const dialogRef: MatDialogRef<TComponent> = this.dialog.open(component, dialogConfig);\r\n\r\n const animationDuration: number = this.getAnimationDuration(options);\r\n\r\n this.configureDialogClose(dialogRef, panelClass, options.from, animationDuration);\r\n\r\n if (panelClass !== undefined && options.from !== undefined) {\r\n this.prepareDialogOpen(panelClass);\r\n this.animateDialogOpen(panelClass, options.from, animationDuration);\r\n }\r\n\r\n return dialogRef;\r\n }\r\n\r\n private configureDialogClose<TComponent>(\r\n dialogRef: MatDialogRef<TComponent>,\r\n panelClass: string | undefined,\r\n from: HTMLElement | undefined,\r\n animationDuration: number,\r\n ): void {\r\n let closing: boolean = false;\r\n const closeDialog = (result?: DialogResult): void => {\r\n if (closing) {\r\n return;\r\n }\r\n\r\n closing = true;\r\n void this.closeDialog(dialogRef, panelClass, from, animationDuration, result);\r\n };\r\n\r\n (\r\n dialogRef.componentInstance as TComponent & {\r\n closeDialog?: (result?: DialogResult) => void;\r\n }\r\n ).closeDialog = closeDialog;\r\n\r\n if (panelClass === undefined || from === undefined) {\r\n return;\r\n }\r\n\r\n dialogRef.backdropClick().subscribe({\r\n next: (): void => {\r\n closeDialog();\r\n },\r\n });\r\n\r\n dialogRef.keydownEvents().subscribe({\r\n next: (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n closeDialog();\r\n }\r\n },\r\n });\r\n }\r\n\r\n private getPanelClass(): string {\r\n DialogService.dialogId++;\r\n return `oat-dialog-from-${DialogService.dialogId}`;\r\n }\r\n\r\n private animateDialogOpen(\r\n panelClass: string,\r\n from: HTMLElement,\r\n animationDuration: number,\r\n ): void {\r\n this.runAfterRender((): void => {\r\n const panel: HTMLElement | null = this.getPanel(panelClass);\r\n const animationStart: Keyframe | null = this.getOriginKeyframe(panel, from);\r\n\r\n if (panel === null || animationStart === null) {\r\n if (panel !== null) {\r\n panel.style.opacity = '';\r\n }\r\n return;\r\n }\r\n\r\n const animation: Animation = panel.animate(\r\n [\r\n {\r\n ...animationStart,\r\n opacity: 0,\r\n },\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n ],\r\n {\r\n duration: animationDuration,\r\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\r\n },\r\n );\r\n\r\n animation.onfinish = (): void => {\r\n panel.style.opacity = '';\r\n };\r\n animation.oncancel = (): void => {\r\n panel.style.opacity = '';\r\n };\r\n });\r\n }\r\n\r\n private prepareDialogOpen(panelClass: string): void {\r\n if (!this.canAnimate()) {\r\n return;\r\n }\r\n\r\n const panel: HTMLElement | null = this.getPanel(panelClass);\r\n\r\n if (panel !== null) {\r\n panel.style.opacity = '0';\r\n }\r\n }\r\n\r\n private async closeDialog<TComponent>(\r\n dialogRef: MatDialogRef<TComponent>,\r\n panelClass: string | undefined,\r\n from: HTMLElement | undefined,\r\n animationDuration: number,\r\n result?: DialogResult,\r\n ): Promise<void> {\r\n if (panelClass === undefined || from === undefined) {\r\n dialogRef.close(result);\r\n return;\r\n }\r\n\r\n const panel: HTMLElement | null = this.getPanel(panelClass);\r\n const animationEnd: Keyframe | null = this.getOriginKeyframe(panel, from);\r\n\r\n if (panel === null || animationEnd === null) {\r\n dialogRef.close(result);\r\n return;\r\n }\r\n\r\n await this.animatePanelClose(\r\n panel,\r\n animationEnd,\r\n this.getCloseAnimationDuration(animationDuration),\r\n );\r\n dialogRef.close(result);\r\n }\r\n\r\n private animatePanelClose(\r\n panel: HTMLElement,\r\n animationEnd: Keyframe,\r\n animationDuration: number,\r\n ): Promise<void> {\r\n panel.style.pointerEvents = 'none';\r\n\r\n const animation: Animation = panel.animate(\r\n [\r\n {\r\n transform: 'translate(0, 0) scale(1)',\r\n opacity: 1,\r\n },\r\n {\r\n ...animationEnd,\r\n opacity: 0,\r\n },\r\n ],\r\n {\r\n duration: animationDuration,\r\n easing: 'cubic-bezier(0.4, 0, 1, 1)',\r\n fill: 'forwards',\r\n },\r\n );\r\n\r\n return new Promise((resolve: () => void): void => {\r\n animation.onfinish = (): void => {\r\n resolve();\r\n };\r\n animation.oncancel = (): void => {\r\n resolve();\r\n };\r\n });\r\n }\r\n\r\n private getOriginKeyframe(panel: HTMLElement | null, from: HTMLElement): Keyframe | null {\r\n if (\r\n panel === null ||\r\n !this.canAnimate() ||\r\n !from.isConnected ||\r\n typeof panel.animate !== 'function'\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromRect: DOMRect = from.getBoundingClientRect();\r\n const panelRect: DOMRect = panel.getBoundingClientRect();\r\n\r\n if (\r\n fromRect.width === 0 ||\r\n fromRect.height === 0 ||\r\n panelRect.width === 0 ||\r\n panelRect.height === 0\r\n ) {\r\n return null;\r\n }\r\n\r\n const fromCenterX: number = fromRect.left + fromRect.width / 2;\r\n const fromCenterY: number = fromRect.top + fromRect.height / 2;\r\n const panelCenterX: number = panelRect.left + panelRect.width / 2;\r\n const panelCenterY: number = panelRect.top + panelRect.height / 2;\r\n const translateX: number = fromCenterX - panelCenterX;\r\n const translateY: number = fromCenterY - panelCenterY;\r\n const scale: number = this.clamp(\r\n Math.min(fromRect.width / panelRect.width, fromRect.height / panelRect.height),\r\n 0.12,\r\n 0.45,\r\n );\r\n\r\n return {\r\n transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`,\r\n transformOrigin: 'center center',\r\n };\r\n }\r\n\r\n private getPanel(panelClass: string): HTMLElement | null {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return null;\r\n }\r\n\r\n return this.document.querySelector<HTMLElement>(`.${panelClass}`);\r\n }\r\n\r\n private canAnimate(): boolean {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return false;\r\n }\r\n\r\n const defaultView: Window | null = this.document.defaultView;\r\n\r\n return (\r\n defaultView !== null && !defaultView.matchMedia('(prefers-reduced-motion: reduce)').matches\r\n );\r\n }\r\n\r\n private runAfterRender(callback: () => void): void {\r\n const defaultView: Window | null = this.document.defaultView;\r\n\r\n if (!isPlatformBrowser(this.platformId) || defaultView === null) {\r\n callback();\r\n return;\r\n }\r\n\r\n defaultView.requestAnimationFrame((): void => {\r\n defaultView.requestAnimationFrame(callback);\r\n });\r\n }\r\n\r\n private clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n }\r\n\r\n private getAnimationDuration(options: DialogOptions): number {\r\n return this.clamp(\r\n options.animationDuration ?? DEFAULT_DIALOG_ANIMATION_DURATION,\r\n 0,\r\n 5000,\r\n );\r\n }\r\n\r\n private getCloseAnimationDuration(animationDuration: number): number {\r\n return Math.round(animationDuration * 0.82);\r\n }\r\n}\r\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { OverlayComponent } from '../components/overlay/overlay.component';\r\nimport { Modal } from '../interfaces/modals.interface';\r\nimport { CustomOverlayRef } from '../model/custom-overlay-ref.model';\r\n\r\n/**\r\n * Servicio para manejar modales personalizados en la aplicación.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class OverlayService {\r\n private overlay: Overlay = inject(Overlay);\r\n private injector: Injector = inject(Injector);\r\n\r\n /**\r\n * Método para abrir un componente personalizado en un modal.\r\n * @param content Componente a mostrar en el overlay.\r\n * @param data Datos a pasar al componente del overlay.\r\n * @param panelCssClasses Clases CSS adicionales para el panel del overlay (opcional).\r\n * @param closeOnBackdropCLick Indica si el overlay se cierra al hacer clic en el fondo (opcional, por defecto true).\r\n * @param from Elemento desde el que se anima la apertura y cierre del overlay (opcional).\r\n * @param animationDuration Duración de la animación en milisegundos (opcional).\r\n * @returns Devuelve una referencia personalizada del overlay.\r\n */\r\n open<R = unknown>(\r\n content: Type<unknown>,\r\n data: Modal,\r\n panelCssClasses: string[] = [],\r\n closeOnBackdropCLick: boolean = true,\r\n from?: HTMLElement,\r\n animationDuration?: number\r\n ): CustomOverlayRef<R> {\r\n const _panelCssClasses: string[] = ['modals-panel'].concat(panelCssClasses);\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n panelClass: _panelCssClasses,\r\n backdropClass: 'modals-background',\r\n width: '100%',\r\n height: '100%',\r\n });\r\n\r\n const overlayRef = this.overlay.create(config);\r\n\r\n const customOverlayRef = new CustomOverlayRef<R, Modal>(\r\n overlayRef,\r\n content,\r\n data,\r\n closeOnBackdropCLick,\r\n from,\r\n animationDuration\r\n );\r\n const injector = this.createInjector(customOverlayRef, this.injector);\r\n overlayRef.attach(new ComponentPortal(OverlayComponent, null, injector));\r\n\r\n return customOverlayRef;\r\n }\r\n\r\n private createInjector<R>(\r\n ref: CustomOverlayRef<R, Modal>,\r\n inj: Injector\r\n ): Injector {\r\n return Injector.create({\r\n providers: [{ provide: CustomOverlayRef, useValue: ref }],\r\n parent: inj,\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of osumi-angular-tools\r\n */\r\nexport * from './lib/components/dialogs/alert-dialog/alert-dialog.component';\r\nexport * from './lib/components/dialogs/confirm-dialog/confirm-dialog.component';\r\nexport * from './lib/components/dialogs/form-dialog/form-dialog.component';\r\nexport * from './lib/components/overlay/overlay.component';\r\nexport * from './lib/directives/swipe.directive';\r\nexport * from './lib/interfaces/dialogs.interface';\r\nexport * from './lib/interfaces/modals.interface';\r\nexport * from './lib/interfaces/swipe.interface';\r\nexport * from './lib/model/custom-overlay-ref.model';\r\nexport * from './lib/services/dialog.service';\r\nexport * from './lib/services/overlay.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -95,6 +95,11 @@
|
|
|
95
95
|
"description": "Corrección para ng update",
|
|
96
96
|
"version": "1.5.1",
|
|
97
97
|
"factory": "./noop/index.cjs#noop"
|
|
98
|
+
},
|
|
99
|
+
"osumi-angular-tools-1-5-2": {
|
|
100
|
+
"description": "Corrección de estilos en modales",
|
|
101
|
+
"version": "1.5.2",
|
|
102
|
+
"factory": "./noop/index.cjs#noop"
|
|
98
103
|
}
|
|
99
104
|
}
|
|
100
105
|
}
|