@filip.mazev/toastr 1.0.8 → 1.0.10
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.
|
@@ -58,61 +58,86 @@ class ToastCore {
|
|
|
58
58
|
isVisible = signal(false, ...(ngDevMode ? [{ debugName: "isVisible" }] : []));
|
|
59
59
|
currentTranslateY = signal(0, ...(ngDevMode ? [{ debugName: "currentTranslateY" }] : []));
|
|
60
60
|
isSwipingFinished = signal(false, ...(ngDevMode ? [{ debugName: "isSwipingFinished" }] : []));
|
|
61
|
+
isCollapsing = signal(false, ...(ngDevMode ? [{ debugName: "isCollapsing" }] : []));
|
|
61
62
|
isAnimated = computed(() => this.config?.animate !== false, ...(ngDevMode ? [{ debugName: "isAnimated" }] : []));
|
|
63
|
+
isBottom = computed(() => (this.config?.position ?? 'top-right').includes('bottom'), ...(ngDevMode ? [{ debugName: "isBottom" }] : []));
|
|
62
64
|
dynamicContainer;
|
|
63
65
|
toastSwipeTarget;
|
|
66
|
+
animatorWrapper;
|
|
64
67
|
wrapperClasses = computed(() => {
|
|
65
68
|
const isTop = (this.config?.position ?? 'top-right').includes('top');
|
|
66
69
|
const animClass = isTop ? 'anim-dir-top' : 'anim-dir-bottom';
|
|
67
70
|
const wrapperClass = this.config?.wrapperClass ?? 'default-wrapper' + (this.config?.hasDefaultBackground === false ? ' no-bg' : '');
|
|
68
71
|
return `${animClass} ${wrapperClass}`;
|
|
69
72
|
}, ...(ngDevMode ? [{ debugName: "wrapperClasses" }] : []));
|
|
70
|
-
|
|
73
|
+
toastrTransform = computed(() => {
|
|
71
74
|
if (!this.isAnimated())
|
|
72
75
|
return null;
|
|
73
76
|
const isTop = (this.config?.position ?? 'top-right').includes('top');
|
|
74
77
|
if (this.isSwipingFinished()) {
|
|
75
|
-
return isTop ? 'translateY(-
|
|
78
|
+
return isTop ? 'translateY(-150px)' : 'translateY(150px)';
|
|
76
79
|
}
|
|
77
80
|
if (this.currentTranslateY() !== 0) {
|
|
78
81
|
return `translateY(${this.currentTranslateY()}px)`;
|
|
79
82
|
}
|
|
80
83
|
return null;
|
|
81
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
84
|
+
}, ...(ngDevMode ? [{ debugName: "toastrTransform" }] : []));
|
|
85
|
+
originalCloseFn;
|
|
86
|
+
closeResult;
|
|
82
87
|
isTrackingSwipe = false;
|
|
88
|
+
isTouchActive = false;
|
|
83
89
|
autoCloseTimeout;
|
|
84
90
|
hasEmittedClose = false;
|
|
85
91
|
cleanupListeners = [];
|
|
92
|
+
swipeCleanupListeners = null;
|
|
93
|
+
globalResizeCleanup = null;
|
|
86
94
|
ngOnInit() {
|
|
87
95
|
this.dynamicContainer.insert(this.componentRef.hostView);
|
|
96
|
+
this.originalCloseFn = this.toastRef.close.bind(this.toastRef);
|
|
97
|
+
this.toastRef.close = (result) => {
|
|
98
|
+
this.closeToast(result);
|
|
99
|
+
};
|
|
88
100
|
setTimeout(() => this.isVisible.set(true), 10);
|
|
89
101
|
if (this.config?.swipeToDismiss !== false) {
|
|
90
102
|
this.startVerticalSwipeDetection();
|
|
103
|
+
this.monitorInputType();
|
|
91
104
|
}
|
|
92
105
|
if (this.config?.durationInMs) {
|
|
93
106
|
this.autoCloseTimeout = setTimeout(() => this.closeToast(), this.config.durationInMs);
|
|
94
107
|
}
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
if (event.propertyName !== '
|
|
108
|
+
const animatorTarget = this.animatorWrapper.nativeElement;
|
|
109
|
+
const onAnimatorTransitionEnd = (event) => {
|
|
110
|
+
if (event.target !== animatorTarget || event.propertyName !== 'grid-template-rows')
|
|
98
111
|
return;
|
|
99
|
-
if (
|
|
112
|
+
if (this.isCollapsing() && !this.hasEmittedClose) {
|
|
100
113
|
this.hasEmittedClose = true;
|
|
101
|
-
this.
|
|
114
|
+
this.originalCloseFn(this.closeResult);
|
|
102
115
|
}
|
|
103
116
|
};
|
|
104
|
-
|
|
105
|
-
this.cleanupListeners.push(() =>
|
|
117
|
+
animatorTarget.addEventListener('transitionend', onAnimatorTransitionEnd);
|
|
118
|
+
this.cleanupListeners.push(() => animatorTarget.removeEventListener('transitionend', onAnimatorTransitionEnd));
|
|
106
119
|
}
|
|
107
120
|
ngOnDestroy() {
|
|
108
121
|
clearTimeout(this.autoCloseTimeout);
|
|
109
|
-
this.
|
|
122
|
+
this.stopVerticalSwipeDetection();
|
|
123
|
+
this.globalResizeCleanup?.();
|
|
110
124
|
this.cleanupListeners.forEach((fn) => fn());
|
|
111
125
|
this.cleanupListeners = [];
|
|
112
126
|
}
|
|
113
|
-
closeToast() {
|
|
127
|
+
closeToast(result, fromSwipe = false) {
|
|
128
|
+
this.closeResult = result !== undefined ? result : this.closeResult;
|
|
129
|
+
if (!this.isAnimated()) {
|
|
130
|
+
if (!this.hasEmittedClose) {
|
|
131
|
+
this.hasEmittedClose = true;
|
|
132
|
+
this.originalCloseFn(this.closeResult);
|
|
133
|
+
}
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
114
136
|
this.isVisible.set(false);
|
|
115
|
-
this.
|
|
137
|
+
this.isCollapsing.set(true);
|
|
138
|
+
if (fromSwipe) {
|
|
139
|
+
this.isSwipingFinished.set(true);
|
|
140
|
+
}
|
|
116
141
|
}
|
|
117
142
|
//#region Swipe Logic
|
|
118
143
|
startVerticalSwipeDetection() {
|
|
@@ -159,7 +184,7 @@ class ToastCore {
|
|
|
159
184
|
const velocityY = Math.abs(deltaY / duration);
|
|
160
185
|
const crossedLimit = isTop ? deltaY < -limit : deltaY > limit;
|
|
161
186
|
if (crossedLimit || velocityY > 0.3) {
|
|
162
|
-
this.closeToast();
|
|
187
|
+
this.closeToast(undefined, true);
|
|
163
188
|
}
|
|
164
189
|
else {
|
|
165
190
|
this.currentTranslateY.set(0);
|
|
@@ -172,25 +197,54 @@ class ToastCore {
|
|
|
172
197
|
target.addEventListener('pointermove', pointerMove, { passive: false });
|
|
173
198
|
target.addEventListener('pointerup', pointerUp);
|
|
174
199
|
target.addEventListener('pointercancel', pointerUp);
|
|
175
|
-
this.
|
|
200
|
+
this.swipeCleanupListeners = () => {
|
|
176
201
|
target.removeEventListener('pointerdown', pointerDown);
|
|
177
202
|
target.removeEventListener('pointermove', pointerMove);
|
|
178
203
|
target.removeEventListener('pointerup', pointerUp);
|
|
179
204
|
target.removeEventListener('pointercancel', pointerUp);
|
|
180
|
-
}
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
stopVerticalSwipeDetection() {
|
|
208
|
+
if (!this.isTrackingSwipe)
|
|
209
|
+
return;
|
|
210
|
+
this.isTrackingSwipe = false;
|
|
211
|
+
if (this.swipeCleanupListeners) {
|
|
212
|
+
this.swipeCleanupListeners();
|
|
213
|
+
this.swipeCleanupListeners = null;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
monitorInputType() {
|
|
217
|
+
if (this.globalResizeCleanup)
|
|
218
|
+
return;
|
|
219
|
+
const handler = (event) => {
|
|
220
|
+
const isTouch = event.pointerType === 'touch';
|
|
221
|
+
if (isTouch && !this.isTouchActive) {
|
|
222
|
+
this.isTouchActive = true;
|
|
223
|
+
this.startVerticalSwipeDetection();
|
|
224
|
+
}
|
|
225
|
+
else if (!isTouch && this.isTouchActive) {
|
|
226
|
+
this.isTouchActive = false;
|
|
227
|
+
this.stopVerticalSwipeDetection();
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
window.addEventListener('pointerdown', handler);
|
|
231
|
+
this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);
|
|
181
232
|
}
|
|
182
233
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ToastCore, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: ToastCore, isStandalone: true, selector: "app-toast-core", viewQueries: [{ propertyName: "dynamicContainer", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "toastSwipeTarget", first: true, predicate: ["toastSwipeTarget"], descendants: true, static: true }], ngImport: i0, template: "<div #toastSwipeTarget class=\"toast-wrapper\" [ngClass]=\"wrapperClasses()\" [class.show]=\"isVisible()\"\n
|
|
234
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: ToastCore, isStandalone: true, selector: "app-toast-core", viewQueries: [{ propertyName: "dynamicContainer", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "toastSwipeTarget", first: true, predicate: ["toastSwipeTarget"], descendants: true, static: true }, { propertyName: "animatorWrapper", first: true, predicate: ["animatorWrapper"], descendants: true, static: true }], ngImport: i0, template: "<div #animatorWrapper class=\"toast-animator\" [class.collapsing]=\"isCollapsing()\" [class.is-bottom]=\"isBottom()\">\n <div #toastSwipeTarget class=\"toast-wrapper\" [ngClass]=\"wrapperClasses()\" [class.show]=\"isVisible()\"\n [class.no-animate]=\"!isAnimated()\" [style.transform]=\"toastrTransform()\">\n <ng-container #dynamicContainer></ng-container>\n </div>\n</div>", styles: [":host{display:block;width:100%}::ng-deep .toast-container{position:fixed;z-index:9999;display:flex;pointer-events:none}@media(max-width:768px){::ng-deep .toast-container{left:1rem!important;right:1rem!important;width:calc(100% - 2rem)}}::ng-deep .toast-container-top-right{top:1rem;right:1rem;flex-direction:column;align-items:flex-end}::ng-deep .toast-container-top-left{top:1rem;left:1rem;flex-direction:column;align-items:flex-start}::ng-deep .toast-container-top-center{top:1rem;left:50%;transform:translate(-50%);flex-direction:column;align-items:center}::ng-deep .toast-container-bottom-right{bottom:1rem;right:1rem;flex-direction:column-reverse;align-items:flex-end}::ng-deep .toast-container-bottom-left{bottom:1rem;left:1rem;flex-direction:column-reverse;align-items:flex-start}::ng-deep .toast-container-bottom-center{bottom:1rem;left:50%;transform:translate(-50%);flex-direction:column-reverse;align-items:center}@media(max-width:768px){::ng-deep .toast-container[class*=-top-]{top:1rem!important;bottom:auto!important;flex-direction:column!important;transform:none!important;align-items:center!important}::ng-deep .toast-container[class*=-bottom-]{bottom:1rem!important;top:auto!important;flex-direction:column-reverse!important;transform:none!important;align-items:center!important}}.toast-animator{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1);margin-bottom:1rem}.toast-animator.is-bottom{margin-bottom:0;margin-top:1rem}.toast-animator.collapsing{grid-template-rows:0fr;margin-top:0!important;margin-bottom:0!important}.toast-wrapper{position:relative;pointer-events:auto;opacity:0;min-height:0;overflow:hidden;transition:opacity .4s cubic-bezier(.25,.8,.25,1),transform .4s cubic-bezier(.25,.8,.25,1);transition-duration:calc(.4s * (1 - var(--a11y-reduced-motion, 0)))}.toast-wrapper.default-wrapper{background-color:var(--toast-bg, #fff);color:var(--toast-text, #000);border-radius:8px;box-shadow:0 4px 12px #00000026;width:24rem;max-width:100%}.toast-wrapper.default-wrapper.no-bg{background-color:transparent}.toast-wrapper.anim-dir-top{transform:translateY(-30px)}.toast-wrapper.anim-dir-bottom{transform:translateY(30px)}.toast-wrapper.show{opacity:1;transform:translateY(0)}.toast-wrapper.no-animate{transition:none!important;transform:none!important}@media(max-width:768px){.toast-wrapper.default-wrapper{width:100%}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
184
235
|
}
|
|
185
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ToastCore, decorators: [{
|
|
186
237
|
type: Component,
|
|
187
|
-
args: [{ selector: 'app-toast-core', imports: [NgClass], template: "<div #toastSwipeTarget class=\"toast-wrapper\" [ngClass]=\"wrapperClasses()\" [class.show]=\"isVisible()\"\n
|
|
238
|
+
args: [{ selector: 'app-toast-core', imports: [NgClass], template: "<div #animatorWrapper class=\"toast-animator\" [class.collapsing]=\"isCollapsing()\" [class.is-bottom]=\"isBottom()\">\n <div #toastSwipeTarget class=\"toast-wrapper\" [ngClass]=\"wrapperClasses()\" [class.show]=\"isVisible()\"\n [class.no-animate]=\"!isAnimated()\" [style.transform]=\"toastrTransform()\">\n <ng-container #dynamicContainer></ng-container>\n </div>\n</div>", styles: [":host{display:block;width:100%}::ng-deep .toast-container{position:fixed;z-index:9999;display:flex;pointer-events:none}@media(max-width:768px){::ng-deep .toast-container{left:1rem!important;right:1rem!important;width:calc(100% - 2rem)}}::ng-deep .toast-container-top-right{top:1rem;right:1rem;flex-direction:column;align-items:flex-end}::ng-deep .toast-container-top-left{top:1rem;left:1rem;flex-direction:column;align-items:flex-start}::ng-deep .toast-container-top-center{top:1rem;left:50%;transform:translate(-50%);flex-direction:column;align-items:center}::ng-deep .toast-container-bottom-right{bottom:1rem;right:1rem;flex-direction:column-reverse;align-items:flex-end}::ng-deep .toast-container-bottom-left{bottom:1rem;left:1rem;flex-direction:column-reverse;align-items:flex-start}::ng-deep .toast-container-bottom-center{bottom:1rem;left:50%;transform:translate(-50%);flex-direction:column-reverse;align-items:center}@media(max-width:768px){::ng-deep .toast-container[class*=-top-]{top:1rem!important;bottom:auto!important;flex-direction:column!important;transform:none!important;align-items:center!important}::ng-deep .toast-container[class*=-bottom-]{bottom:1rem!important;top:auto!important;flex-direction:column-reverse!important;transform:none!important;align-items:center!important}}.toast-animator{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1);margin-bottom:1rem}.toast-animator.is-bottom{margin-bottom:0;margin-top:1rem}.toast-animator.collapsing{grid-template-rows:0fr;margin-top:0!important;margin-bottom:0!important}.toast-wrapper{position:relative;pointer-events:auto;opacity:0;min-height:0;overflow:hidden;transition:opacity .4s cubic-bezier(.25,.8,.25,1),transform .4s cubic-bezier(.25,.8,.25,1);transition-duration:calc(.4s * (1 - var(--a11y-reduced-motion, 0)))}.toast-wrapper.default-wrapper{background-color:var(--toast-bg, #fff);color:var(--toast-text, #000);border-radius:8px;box-shadow:0 4px 12px #00000026;width:24rem;max-width:100%}.toast-wrapper.default-wrapper.no-bg{background-color:transparent}.toast-wrapper.anim-dir-top{transform:translateY(-30px)}.toast-wrapper.anim-dir-bottom{transform:translateY(30px)}.toast-wrapper.show{opacity:1;transform:translateY(0)}.toast-wrapper.no-animate{transition:none!important;transform:none!important}@media(max-width:768px){.toast-wrapper.default-wrapper{width:100%}}\n"] }]
|
|
188
239
|
}], propDecorators: { dynamicContainer: [{
|
|
189
240
|
type: ViewChild,
|
|
190
241
|
args: ['dynamicContainer', { read: ViewContainerRef, static: true }]
|
|
191
242
|
}], toastSwipeTarget: [{
|
|
192
243
|
type: ViewChild,
|
|
193
244
|
args: ['toastSwipeTarget', { static: true }]
|
|
245
|
+
}], animatorWrapper: [{
|
|
246
|
+
type: ViewChild,
|
|
247
|
+
args: ['animatorWrapper', { static: true }]
|
|
194
248
|
}] } });
|
|
195
249
|
|
|
196
250
|
class Toast {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filip.mazev-toastr.mjs","sources":["../../../projects/toastr/src/lib/classes/toast-ref.ts","../../../projects/toastr/src/lib/tokens/toast-data.token.ts","../../../projects/toastr/src/lib/services/toastr-global-settings.service.ts","../../../projects/toastr/src/lib/components/toast-core.ts","../../../projects/toastr/src/lib/components/toast-core.html","../../../projects/toastr/src/lib/classes/toast.ts","../../../projects/toastr/src/lib/components/views/simple-toast/simple-toast.ts","../../../projects/toastr/src/lib/components/views/simple-toast/simple-toast.html","../../../projects/toastr/src/lib/services/toastr.service.ts","../../../projects/toastr/src/public-api.ts","../../../projects/toastr/src/filip.mazev-toastr.ts"],"sourcesContent":["import { Subject } from 'rxjs';\n\nexport class ToastRef<R = unknown> {\n private readonly afterClosedSubject = new Subject<R | undefined>();\n public readonly afterClosed$ = this.afterClosedSubject.asObservable();\n\n public close(result?: R): void {\n this.afterClosedSubject.next(result);\n this.afterClosedSubject.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const TOAST_DATA = new InjectionToken<any>('TOAST_DATA');\n","import { Injectable, signal } from '@angular/core';\nimport { ToastPosition } from '../types/toastr.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastrGlobalSettingsService {\n public readonly position = signal<ToastPosition>('top-right');\n public readonly animate = signal<boolean>(true);\n public readonly wrapperClass = signal<string | undefined>(undefined);\n public readonly durationInMs = signal<number>(5000);\n public readonly swipeToDismiss = signal<boolean>(true);\n public readonly maxOpened = signal<number>(4);\n\n /**\n * Updates the global toast settings with the provided values.\n * @param settings An object containing the settings to be updated.\n */\n public update(\n settings: Partial<{\n position: ToastPosition;\n animate: boolean;\n wrapperClass: string;\n durationInMs: number;\n swipeToDismiss: boolean;\n maxOpened: number;\n }>\n ): void {\n if (settings.position !== undefined) this.position.set(settings.position);\n if (settings.animate !== undefined) this.animate.set(settings.animate);\n if (settings.wrapperClass !== undefined) this.wrapperClass.set(settings.wrapperClass);\n if (settings.durationInMs !== undefined) this.durationInMs.set(settings.durationInMs);\n if (settings.swipeToDismiss !== undefined) this.swipeToDismiss.set(settings.swipeToDismiss);\n if (settings.maxOpened !== undefined) this.maxOpened.set(settings.maxOpened);\n }\n}\n","import { Component, ViewChild, ViewContainerRef, ComponentRef, ElementRef, OnInit, OnDestroy, signal, computed } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { IToastConfig } from '../interfaces/itoast-config.interface';\nimport { ToastRef } from '../classes/toast-ref';\nimport { IToast } from '../interfaces/itoast.interface';\n\n@Component({\n selector: 'app-toast-core',\n imports: [NgClass],\n templateUrl: './toast-core.html',\n styleUrl: './toast-core.scss'\n})\nexport class ToastCore<D, R, C extends IToast<D, R> = IToast<D, R>> implements OnInit, OnDestroy {\n public componentRef!: ComponentRef<C>;\n public config?: IToastConfig<D>;\n public toastRef!: ToastRef<R>;\n\n public isVisible = signal(false);\n public currentTranslateY = signal(0);\n public isSwipingFinished = signal(false);\n\n protected isAnimated = computed(() => this.config?.animate !== false);\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef, static: true }) protected dynamicContainer!: ViewContainerRef;\n @ViewChild('toastSwipeTarget', { static: true }) protected toastSwipeTarget!: ElementRef;\n\n protected wrapperClasses = computed(() => {\n const isTop = (this.config?.position ?? 'top-right').includes('top');\n const animClass = isTop ? 'anim-dir-top' : 'anim-dir-bottom';\n const wrapperClass = this.config?.wrapperClass ?? 'default-wrapper' + (this.config?.hasDefaultBackground === false ? ' no-bg' : '');\n return `${animClass} ${wrapperClass}`;\n });\n\n protected modalTransform = computed(() => {\n if (!this.isAnimated()) return null;\n\n const isTop = (this.config?.position ?? 'top-right').includes('top');\n\n if (this.isSwipingFinished()) {\n return isTop ? 'translateY(-120%)' : 'translateY(120%)';\n }\n\n if (this.currentTranslateY() !== 0) {\n return `translateY(${this.currentTranslateY()}px)`;\n }\n\n return null;\n });\n\n private isTrackingSwipe = false;\n private autoCloseTimeout?: ReturnType<typeof setTimeout>;\n private hasEmittedClose = false;\n private cleanupListeners: Array<() => void> = [];\n\n public ngOnInit(): void {\n this.dynamicContainer.insert(this.componentRef.hostView);\n\n setTimeout(() => this.isVisible.set(true), 10);\n\n if (this.config?.swipeToDismiss !== false) {\n this.startVerticalSwipeDetection();\n }\n\n if (this.config?.durationInMs) {\n this.autoCloseTimeout = setTimeout(() => this.closeToast(), this.config.durationInMs);\n }\n\n const target = this.toastSwipeTarget.nativeElement;\n\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.propertyName !== 'transform') return;\n if (!this.isVisible() && !this.hasEmittedClose) {\n this.hasEmittedClose = true;\n this.toastRef.close();\n }\n };\n\n target.addEventListener('transitionend', onTransitionEnd);\n this.cleanupListeners.push(() => target.removeEventListener('transitionend', onTransitionEnd));\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.autoCloseTimeout);\n this.isTrackingSwipe = false;\n this.cleanupListeners.forEach((fn) => fn());\n this.cleanupListeners = [];\n }\n\n public closeToast(): void {\n this.isVisible.set(false);\n this.isSwipingFinished.set(true);\n }\n\n //#region Swipe Logic\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.isTrackingSwipe = true;\n const target = this.toastSwipeTarget.nativeElement;\n const isTop = (this.config?.position ?? 'top-right').includes('top');\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n let limit = 0;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const toastHeight = target.offsetHeight || 0;\n limit = toastHeight / 3;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n clearTimeout(this.autoCloseTimeout);\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n const currentY = event.clientY - startY;\n\n if ((isTop && currentY < 0) || (!isTop && currentY > 0)) {\n if (event.cancelable) event.preventDefault();\n this.currentTranslateY.set(currentY);\n }\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n isPointerDown = false;\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = Math.abs(deltaY / duration);\n\n const crossedLimit = isTop ? deltaY < -limit : deltaY > limit;\n\n if (crossedLimit || velocityY > 0.3) {\n this.closeToast();\n } else {\n this.currentTranslateY.set(0);\n if (this.config?.durationInMs) {\n this.autoCloseTimeout = setTimeout(() => this.closeToast(), this.config.durationInMs);\n }\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners.push(() => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n });\n }\n\n //#endregion\n}\n","<div #toastSwipeTarget class=\"toast-wrapper\" [ngClass]=\"wrapperClasses()\" [class.show]=\"isVisible()\"\n [class.no-animate]=\"!isAnimated()\" [style.transform]=\"modalTransform()\">\n <ng-container #dynamicContainer></ng-container>\n</div>","import { inject, Injectable } from '@angular/core';\nimport { ToastRef } from './toast-ref';\nimport { TOAST_DATA } from '../tokens/toast-data.token';\nimport { IToast } from '../interfaces/itoast.interface';\n\n@Injectable()\nexport abstract class Toast<D = unknown, R = unknown> implements IToast<D, R> {\n /**\n * Data injected into the toast component.\n */\n public data = inject<D>(TOAST_DATA);\n\n /**\n * Reference to the ToastRef instance associated with this toast.\n */\n public toast!: ToastRef<R>;\n\n /**\n * Called when the toast is initialized.\n */\n public onToastInit(): void {}\n\n /**\n * Closes the toast with an optional result.\n * @param result The result to be passed when closing the toast.\n */\n public close(result?: R): void {\n this.toast?.close(result);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Toast } from '../../../classes/toast';\nimport { ISimpleToastData } from '../../../interfaces/isimple-toast.interface';\n\n@Component({\n selector: 'app-simple-toast',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './simple-toast.html',\n styleUrl: './simple-toast.scss'\n})\nexport class SimpleToast extends Toast<ISimpleToastData, undefined> {\n protected dismiss(): void {\n this.toast?.close();\n }\n}\n","<div class=\"simple-toast\" [ngClass]=\"data.type\">\n <button class=\"simple-toast-close-button\" (click)=\"dismiss()\" aria-label=\"Close toast\" [ngClass]=\"data.type\">\n ✕\n </button>\n\n <div class=\"simple-toast-content\">\n @if(data.title ) {\n <h4 class=\"simple-toast-title\">{{ data.title }}</h4>\n <p class=\"simple-toast-message\">{{ data.message }}</p>\n } @else {\n <p class=\"simple-toast-message large-message\">{{ data.message }}</p>\n }\n </div>\n</div>","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, ComponentRef } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { IToastConfig } from '../interfaces/itoast-config.interface';\nimport { ToastRef } from '../classes/toast-ref';\nimport { TOAST_DATA } from '../tokens/toast-data.token';\nimport { IToast } from '../interfaces/itoast.interface';\nimport { ToastrGlobalSettingsService } from './toastr-global-settings.service';\nimport { ToastPosition } from '../types/toastr.types';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { ToastCore } from '../components/toast-core';\nimport { take } from 'rxjs';\nimport { SimpleToast } from '../components/views/simple-toast/simple-toast';\nimport { ISimpleToastData } from '../interfaces/isimple-toast.interface';\nimport { IQueueSimpleToastRequest } from '../interfaces/iqueue-simple-toast-request.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastrService {\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly document = inject(DOCUMENT);\n private readonly globalSettings = inject(ToastrGlobalSettingsService);\n\n private readonly toastQueue: Array<() => void> = [];\n private readonly activeToasts: Array<ComponentRef<ToastCore<unknown, unknown, IToast<unknown, unknown>>>> = [];\n private readonly containers = new Map<ToastPosition, HTMLElement>();\n\n /**\n * Displays a toast notification with the specified component and configuration.\n * @param componentType\n * @param config\n * @returns\n */\n public queueToast<D, R, C extends IToast<D, R>>(componentType: ComponentType<C>, config?: IToastConfig<D>): ToastRef<R> {\n const resolvedConfig = this.resolveConfig(config);\n const toastRef = new ToastRef<R>();\n\n this.toastQueue.push(() => this.buildAndAttachToast(componentType, resolvedConfig, toastRef));\n\n this.processQueue();\n\n return toastRef;\n }\n\n /**\n * Queues a simple success toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueSuccess(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'success'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n /**\n * Queues a simple info toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueInfo(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'info'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n /**\n * Queues a simple warning toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueWarning(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'warn'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n /**\n * Queues a simple error toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueError(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'error'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n //#region Helper Methods\n\n private processQueue(): void {\n const max = this.globalSettings.maxOpened();\n\n while (this.activeToasts.length < max && this.toastQueue.length > 0) {\n const buildNext = this.toastQueue.shift();\n if (buildNext) {\n buildNext();\n }\n }\n }\n\n private buildAndAttachToast<D, R, C extends IToast<D, R>>(componentType: ComponentType<C>, config: IToastConfig<D>, toastRef: ToastRef<R>): void {\n const dataInjector = Injector.create({\n providers: [{ provide: TOAST_DATA, useValue: config.data }],\n parent: this.injector\n });\n\n const contentRef = createComponent(componentType, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n if (this.isIToast<D, R, C>(contentRef.instance)) {\n contentRef.instance.toast = toastRef;\n contentRef.instance.onToastInit?.();\n }\n\n const wrapperInjector = Injector.create({\n providers: [{ provide: ToastRef, useValue: toastRef }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent<ToastCore<D, R, C>>(ToastCore, {\n environmentInjector: this.environmentInjector,\n elementInjector: wrapperInjector\n });\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = config;\n wrapperRef.instance.toastRef = toastRef;\n\n this.appRef.attachView(wrapperRef.hostView);\n\n const container = this.getContainer(config.position || 'top-right');\n container.appendChild(wrapperRef.location.nativeElement);\n\n this.activeToasts.push(wrapperRef as ComponentRef<ToastCore<unknown, unknown, IToast<unknown, unknown>>>);\n\n toastRef.afterClosed$.pipe(take(1)).subscribe(() => this.finalizeToast(wrapperRef));\n }\n\n private finalizeToast<D, R, C extends IToast<D, R>>(wrapperRef: ComponentRef<ToastCore<D, R, C>>): void {\n const index = this.activeToasts.indexOf(wrapperRef as ComponentRef<ToastCore<unknown, unknown, IToast<unknown, unknown>>>);\n\n if (index > -1) {\n this.activeToasts.splice(index, 1);\n }\n\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n wrapperRef.destroy();\n\n this.processQueue();\n }\n\n private getContainer(position: ToastPosition): HTMLElement {\n if (this.containers.has(position)) {\n return this.containers.get(position) as HTMLElement;\n }\n\n const container = this.document.createElement('div');\n container.classList.add('toast-container', `toast-container-${position}`);\n this.document.body.appendChild(container);\n\n this.containers.set(position, container);\n\n return container;\n }\n\n private resolveConfig<D>(config?: IToastConfig<D>): IToastConfig<D> {\n return {\n ...config,\n position: config?.position ?? this.globalSettings.position(),\n animate: config?.animate ?? this.globalSettings.animate(),\n wrapperClass: config?.wrapperClass ?? this.globalSettings.wrapperClass(),\n durationInMs: config?.durationInMs ?? this.globalSettings.durationInMs(),\n swipeToDismiss: config?.swipeToDismiss ?? this.globalSettings.swipeToDismiss()\n };\n }\n\n private isIToast<D, R, C extends IToast<D, R>>(component: unknown): component is C {\n return typeof component === 'object' && component !== null && 'toast' in component;\n }\n\n //#endregion\n}\n","/*\n * Public API Surface of toastr\n */\n\nexport * from './lib/services/toastr.service';\nexport * from './lib/services/toastr-global-settings.service';\n\nexport * from './lib/components/toast-core';\nexport * from './lib/components/views/simple-toast/simple-toast';\n\nexport * from './lib/interfaces/itoast-config.interface';\nexport * from './lib/interfaces/itoast.interface';\nexport * from './lib/interfaces/isimple-toast.interface';\n\nexport * from './lib/types/toastr.types';\n\nexport * from './lib/tokens/toast-data.token';\n\nexport * from './lib/classes/toast-ref';\nexport * from './lib/classes/toast';\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":"filip.mazev-toastr.mjs","sources":["../../../projects/toastr/src/lib/classes/toast-ref.ts","../../../projects/toastr/src/lib/tokens/toast-data.token.ts","../../../projects/toastr/src/lib/services/toastr-global-settings.service.ts","../../../projects/toastr/src/lib/components/toast-core.ts","../../../projects/toastr/src/lib/components/toast-core.html","../../../projects/toastr/src/lib/classes/toast.ts","../../../projects/toastr/src/lib/components/views/simple-toast/simple-toast.ts","../../../projects/toastr/src/lib/components/views/simple-toast/simple-toast.html","../../../projects/toastr/src/lib/services/toastr.service.ts","../../../projects/toastr/src/public-api.ts","../../../projects/toastr/src/filip.mazev-toastr.ts"],"sourcesContent":["import { Subject } from 'rxjs';\n\nexport class ToastRef<R = unknown> {\n private readonly afterClosedSubject = new Subject<R | undefined>();\n public readonly afterClosed$ = this.afterClosedSubject.asObservable();\n\n public close(result?: R): void {\n this.afterClosedSubject.next(result);\n this.afterClosedSubject.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const TOAST_DATA = new InjectionToken<any>('TOAST_DATA');\n","import { Injectable, signal } from '@angular/core';\nimport { ToastPosition } from '../types/toastr.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastrGlobalSettingsService {\n public readonly position = signal<ToastPosition>('top-right');\n public readonly animate = signal<boolean>(true);\n public readonly wrapperClass = signal<string | undefined>(undefined);\n public readonly durationInMs = signal<number>(5000);\n public readonly swipeToDismiss = signal<boolean>(true);\n public readonly maxOpened = signal<number>(4);\n\n /**\n * Updates the global toast settings with the provided values.\n * @param settings An object containing the settings to be updated.\n */\n public update(\n settings: Partial<{\n position: ToastPosition;\n animate: boolean;\n wrapperClass: string;\n durationInMs: number;\n swipeToDismiss: boolean;\n maxOpened: number;\n }>\n ): void {\n if (settings.position !== undefined) this.position.set(settings.position);\n if (settings.animate !== undefined) this.animate.set(settings.animate);\n if (settings.wrapperClass !== undefined) this.wrapperClass.set(settings.wrapperClass);\n if (settings.durationInMs !== undefined) this.durationInMs.set(settings.durationInMs);\n if (settings.swipeToDismiss !== undefined) this.swipeToDismiss.set(settings.swipeToDismiss);\n if (settings.maxOpened !== undefined) this.maxOpened.set(settings.maxOpened);\n }\n}\n","import { Component, ViewChild, ViewContainerRef, ComponentRef, ElementRef, OnInit, OnDestroy, signal, computed } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { IToastConfig } from '../interfaces/itoast-config.interface';\nimport { ToastRef } from '../classes/toast-ref';\nimport { IToast } from '../interfaces/itoast.interface';\n\n@Component({\n selector: 'app-toast-core',\n imports: [NgClass],\n templateUrl: './toast-core.html',\n styleUrl: './toast-core.scss'\n})\nexport class ToastCore<D, R, C extends IToast<D, R> = IToast<D, R>> implements OnInit, OnDestroy {\n public componentRef!: ComponentRef<C>;\n public config?: IToastConfig<D>;\n public toastRef!: ToastRef<R>;\n\n public isVisible = signal(false);\n public currentTranslateY = signal(0);\n public isSwipingFinished = signal(false);\n\n public isCollapsing = signal(false);\n\n protected isAnimated = computed(() => this.config?.animate !== false);\n protected isBottom = computed(() => (this.config?.position ?? 'top-right').includes('bottom'));\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef, static: true }) protected dynamicContainer!: ViewContainerRef;\n @ViewChild('toastSwipeTarget', { static: true }) protected toastSwipeTarget!: ElementRef;\n @ViewChild('animatorWrapper', { static: true }) protected animatorWrapper!: ElementRef;\n\n protected wrapperClasses = computed(() => {\n const isTop = (this.config?.position ?? 'top-right').includes('top');\n const animClass = isTop ? 'anim-dir-top' : 'anim-dir-bottom';\n const wrapperClass = this.config?.wrapperClass ?? 'default-wrapper' + (this.config?.hasDefaultBackground === false ? ' no-bg' : '');\n return `${animClass} ${wrapperClass}`;\n });\n\n protected toastrTransform = computed(() => {\n if (!this.isAnimated()) return null;\n\n const isTop = (this.config?.position ?? 'top-right').includes('top');\n\n if (this.isSwipingFinished()) {\n return isTop ? 'translateY(-150px)' : 'translateY(150px)';\n }\n\n if (this.currentTranslateY() !== 0) {\n return `translateY(${this.currentTranslateY()}px)`;\n }\n\n return null;\n });\n\n private originalCloseFn!: (result?: R) => void;\n private closeResult?: R;\n\n private isTrackingSwipe = false;\n private isTouchActive = false;\n private autoCloseTimeout?: ReturnType<typeof setTimeout>;\n private hasEmittedClose = false;\n\n private cleanupListeners: Array<() => void> = [];\n private swipeCleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.dynamicContainer.insert(this.componentRef.hostView);\n\n this.originalCloseFn = this.toastRef.close.bind(this.toastRef);\n this.toastRef.close = (result?: R) => {\n this.closeToast(result);\n };\n\n setTimeout(() => this.isVisible.set(true), 10);\n\n if (this.config?.swipeToDismiss !== false) {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n if (this.config?.durationInMs) {\n this.autoCloseTimeout = setTimeout(() => this.closeToast(), this.config.durationInMs);\n }\n\n const animatorTarget = this.animatorWrapper.nativeElement;\n\n const onAnimatorTransitionEnd = (event: TransitionEvent) => {\n if (event.target !== animatorTarget || event.propertyName !== 'grid-template-rows') return;\n if (this.isCollapsing() && !this.hasEmittedClose) {\n this.hasEmittedClose = true;\n this.originalCloseFn(this.closeResult);\n }\n };\n\n animatorTarget.addEventListener('transitionend', onAnimatorTransitionEnd);\n this.cleanupListeners.push(() => animatorTarget.removeEventListener('transitionend', onAnimatorTransitionEnd));\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.autoCloseTimeout);\n\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n\n this.cleanupListeners.forEach((fn) => fn());\n this.cleanupListeners = [];\n }\n\n public closeToast(result?: R, fromSwipe = false): void {\n this.closeResult = result !== undefined ? result : this.closeResult;\n\n if (!this.isAnimated()) {\n if (!this.hasEmittedClose) {\n this.hasEmittedClose = true;\n this.originalCloseFn(this.closeResult);\n }\n return;\n }\n\n this.isVisible.set(false);\n this.isCollapsing.set(true);\n\n if (fromSwipe) {\n this.isSwipingFinished.set(true);\n }\n }\n\n //#region Swipe Logic\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.isTrackingSwipe = true;\n const target = this.toastSwipeTarget.nativeElement;\n const isTop = (this.config?.position ?? 'top-right').includes('top');\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n let limit = 0;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const toastHeight = target.offsetHeight || 0;\n limit = toastHeight / 3;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n clearTimeout(this.autoCloseTimeout);\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n const currentY = event.clientY - startY;\n\n if ((isTop && currentY < 0) || (!isTop && currentY > 0)) {\n if (event.cancelable) event.preventDefault();\n this.currentTranslateY.set(currentY);\n }\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n isPointerDown = false;\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = Math.abs(deltaY / duration);\n\n const crossedLimit = isTop ? deltaY < -limit : deltaY > limit;\n\n if (crossedLimit || velocityY > 0.3) {\n this.closeToast(undefined, true);\n } else {\n this.currentTranslateY.set(0);\n if (this.config?.durationInMs) {\n this.autoCloseTimeout = setTimeout(() => this.closeToast(), this.config.durationInMs);\n }\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.swipeCleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.swipeCleanupListeners) {\n this.swipeCleanupListeners();\n this.swipeCleanupListeners = null;\n }\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div #animatorWrapper class=\"toast-animator\" [class.collapsing]=\"isCollapsing()\" [class.is-bottom]=\"isBottom()\">\n <div #toastSwipeTarget class=\"toast-wrapper\" [ngClass]=\"wrapperClasses()\" [class.show]=\"isVisible()\"\n [class.no-animate]=\"!isAnimated()\" [style.transform]=\"toastrTransform()\">\n <ng-container #dynamicContainer></ng-container>\n </div>\n</div>","import { inject, Injectable } from '@angular/core';\nimport { ToastRef } from './toast-ref';\nimport { TOAST_DATA } from '../tokens/toast-data.token';\nimport { IToast } from '../interfaces/itoast.interface';\n\n@Injectable()\nexport abstract class Toast<D = unknown, R = unknown> implements IToast<D, R> {\n /**\n * Data injected into the toast component.\n */\n public data = inject<D>(TOAST_DATA);\n\n /**\n * Reference to the ToastRef instance associated with this toast.\n */\n public toast!: ToastRef<R>;\n\n /**\n * Called when the toast is initialized.\n */\n public onToastInit(): void {}\n\n /**\n * Closes the toast with an optional result.\n * @param result The result to be passed when closing the toast.\n */\n public close(result?: R): void {\n this.toast?.close(result);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Toast } from '../../../classes/toast';\nimport { ISimpleToastData } from '../../../interfaces/isimple-toast.interface';\n\n@Component({\n selector: 'app-simple-toast',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './simple-toast.html',\n styleUrl: './simple-toast.scss'\n})\nexport class SimpleToast extends Toast<ISimpleToastData, undefined> {\n protected dismiss(): void {\n this.toast?.close();\n }\n}\n","<div class=\"simple-toast\" [ngClass]=\"data.type\">\n <button class=\"simple-toast-close-button\" (click)=\"dismiss()\" aria-label=\"Close toast\" [ngClass]=\"data.type\">\n ✕\n </button>\n\n <div class=\"simple-toast-content\">\n @if(data.title ) {\n <h4 class=\"simple-toast-title\">{{ data.title }}</h4>\n <p class=\"simple-toast-message\">{{ data.message }}</p>\n } @else {\n <p class=\"simple-toast-message large-message\">{{ data.message }}</p>\n }\n </div>\n</div>","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, ComponentRef } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { IToastConfig } from '../interfaces/itoast-config.interface';\nimport { ToastRef } from '../classes/toast-ref';\nimport { TOAST_DATA } from '../tokens/toast-data.token';\nimport { IToast } from '../interfaces/itoast.interface';\nimport { ToastrGlobalSettingsService } from './toastr-global-settings.service';\nimport { ToastPosition } from '../types/toastr.types';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { ToastCore } from '../components/toast-core';\nimport { take } from 'rxjs';\nimport { SimpleToast } from '../components/views/simple-toast/simple-toast';\nimport { ISimpleToastData } from '../interfaces/isimple-toast.interface';\nimport { IQueueSimpleToastRequest } from '../interfaces/iqueue-simple-toast-request.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastrService {\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly document = inject(DOCUMENT);\n private readonly globalSettings = inject(ToastrGlobalSettingsService);\n\n private readonly toastQueue: Array<() => void> = [];\n private readonly activeToasts: Array<ComponentRef<ToastCore<unknown, unknown, IToast<unknown, unknown>>>> = [];\n private readonly containers = new Map<ToastPosition, HTMLElement>();\n\n /**\n * Displays a toast notification with the specified component and configuration.\n * @param componentType\n * @param config\n * @returns\n */\n public queueToast<D, R, C extends IToast<D, R>>(componentType: ComponentType<C>, config?: IToastConfig<D>): ToastRef<R> {\n const resolvedConfig = this.resolveConfig(config);\n const toastRef = new ToastRef<R>();\n\n this.toastQueue.push(() => this.buildAndAttachToast(componentType, resolvedConfig, toastRef));\n\n this.processQueue();\n\n return toastRef;\n }\n\n /**\n * Queues a simple success toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueSuccess(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'success'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n /**\n * Queues a simple info toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueInfo(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'info'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n /**\n * Queues a simple warning toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueWarning(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'warn'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n /**\n * Queues a simple error toast notification with the specified message and optional title, position, and duration.\n * @param request An object containing the message, optional title, optional position, and duration for the toast notification.\n * @returns A ToastRef instance representing the queued toast.\n */\n public queueError(request: IQueueSimpleToastRequest): ToastRef<undefined> {\n return this.queueToast<ISimpleToastData, undefined, SimpleToast>(SimpleToast, {\n position: request.position ?? this.globalSettings.position(),\n data: {\n title: request.title,\n message: request.message,\n type: 'error'\n },\n hasDefaultBackground: false,\n durationInMs: request.durationInMs ?? this.globalSettings.durationInMs(),\n animate: this.globalSettings.animate()\n });\n }\n\n //#region Helper Methods\n\n private processQueue(): void {\n const max = this.globalSettings.maxOpened();\n\n while (this.activeToasts.length < max && this.toastQueue.length > 0) {\n const buildNext = this.toastQueue.shift();\n if (buildNext) {\n buildNext();\n }\n }\n }\n\n private buildAndAttachToast<D, R, C extends IToast<D, R>>(componentType: ComponentType<C>, config: IToastConfig<D>, toastRef: ToastRef<R>): void {\n const dataInjector = Injector.create({\n providers: [{ provide: TOAST_DATA, useValue: config.data }],\n parent: this.injector\n });\n\n const contentRef = createComponent(componentType, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n if (this.isIToast<D, R, C>(contentRef.instance)) {\n contentRef.instance.toast = toastRef;\n contentRef.instance.onToastInit?.();\n }\n\n const wrapperInjector = Injector.create({\n providers: [{ provide: ToastRef, useValue: toastRef }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent<ToastCore<D, R, C>>(ToastCore, {\n environmentInjector: this.environmentInjector,\n elementInjector: wrapperInjector\n });\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = config;\n wrapperRef.instance.toastRef = toastRef;\n\n this.appRef.attachView(wrapperRef.hostView);\n\n const container = this.getContainer(config.position || 'top-right');\n container.appendChild(wrapperRef.location.nativeElement);\n\n this.activeToasts.push(wrapperRef as ComponentRef<ToastCore<unknown, unknown, IToast<unknown, unknown>>>);\n\n toastRef.afterClosed$.pipe(take(1)).subscribe(() => this.finalizeToast(wrapperRef));\n }\n\n private finalizeToast<D, R, C extends IToast<D, R>>(wrapperRef: ComponentRef<ToastCore<D, R, C>>): void {\n const index = this.activeToasts.indexOf(wrapperRef as ComponentRef<ToastCore<unknown, unknown, IToast<unknown, unknown>>>);\n\n if (index > -1) {\n this.activeToasts.splice(index, 1);\n }\n\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n wrapperRef.destroy();\n\n this.processQueue();\n }\n\n private getContainer(position: ToastPosition): HTMLElement {\n if (this.containers.has(position)) {\n return this.containers.get(position) as HTMLElement;\n }\n\n const container = this.document.createElement('div');\n container.classList.add('toast-container', `toast-container-${position}`);\n this.document.body.appendChild(container);\n\n this.containers.set(position, container);\n\n return container;\n }\n\n private resolveConfig<D>(config?: IToastConfig<D>): IToastConfig<D> {\n return {\n ...config,\n position: config?.position ?? this.globalSettings.position(),\n animate: config?.animate ?? this.globalSettings.animate(),\n wrapperClass: config?.wrapperClass ?? this.globalSettings.wrapperClass(),\n durationInMs: config?.durationInMs ?? this.globalSettings.durationInMs(),\n swipeToDismiss: config?.swipeToDismiss ?? this.globalSettings.swipeToDismiss()\n };\n }\n\n private isIToast<D, R, C extends IToast<D, R>>(component: unknown): component is C {\n return typeof component === 'object' && component !== null && 'toast' in component;\n }\n\n //#endregion\n}\n","/*\n * Public API Surface of toastr\n */\n\nexport * from './lib/services/toastr.service';\nexport * from './lib/services/toastr-global-settings.service';\n\nexport * from './lib/components/toast-core';\nexport * from './lib/components/views/simple-toast/simple-toast';\n\nexport * from './lib/interfaces/itoast-config.interface';\nexport * from './lib/interfaces/itoast.interface';\nexport * from './lib/interfaces/isimple-toast.interface';\n\nexport * from './lib/types/toastr.types';\n\nexport * from './lib/tokens/toast-data.token';\n\nexport * from './lib/classes/toast-ref';\nexport * from './lib/classes/toast';\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
|
@@ -115,19 +115,29 @@ declare class ToastCore<D, R, C extends IToast<D, R> = IToast<D, R>> implements
|
|
|
115
115
|
isVisible: _angular_core.WritableSignal<boolean>;
|
|
116
116
|
currentTranslateY: _angular_core.WritableSignal<number>;
|
|
117
117
|
isSwipingFinished: _angular_core.WritableSignal<boolean>;
|
|
118
|
+
isCollapsing: _angular_core.WritableSignal<boolean>;
|
|
118
119
|
protected isAnimated: _angular_core.Signal<boolean>;
|
|
120
|
+
protected isBottom: _angular_core.Signal<boolean>;
|
|
119
121
|
protected dynamicContainer: ViewContainerRef;
|
|
120
122
|
protected toastSwipeTarget: ElementRef;
|
|
123
|
+
protected animatorWrapper: ElementRef;
|
|
121
124
|
protected wrapperClasses: _angular_core.Signal<string>;
|
|
122
|
-
protected
|
|
125
|
+
protected toastrTransform: _angular_core.Signal<string | null>;
|
|
126
|
+
private originalCloseFn;
|
|
127
|
+
private closeResult?;
|
|
123
128
|
private isTrackingSwipe;
|
|
129
|
+
private isTouchActive;
|
|
124
130
|
private autoCloseTimeout?;
|
|
125
131
|
private hasEmittedClose;
|
|
126
132
|
private cleanupListeners;
|
|
133
|
+
private swipeCleanupListeners;
|
|
134
|
+
private globalResizeCleanup;
|
|
127
135
|
ngOnInit(): void;
|
|
128
136
|
ngOnDestroy(): void;
|
|
129
|
-
closeToast(): void;
|
|
137
|
+
closeToast(result?: R, fromSwipe?: boolean): void;
|
|
130
138
|
private startVerticalSwipeDetection;
|
|
139
|
+
private stopVerticalSwipeDetection;
|
|
140
|
+
private monitorInputType;
|
|
131
141
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastCore<any, any, any>, never>;
|
|
132
142
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastCore<any, any, any>, "app-toast-core", never, {}, {}, never, never, true, never>;
|
|
133
143
|
}
|