@acontplus/ng-notifications 1.1.1 → 1.1.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.
package/README.md
CHANGED
|
@@ -8,12 +8,14 @@ SweetAlert2.
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
# Using npm
|
|
11
|
-
npm install @acontplus/ng-notifications
|
|
11
|
+
npm install @acontplus/ng-notifications @acontplus/ui-kit
|
|
12
12
|
|
|
13
13
|
# Using pnpm
|
|
14
|
-
pnpm add @acontplus/ng-notifications
|
|
14
|
+
pnpm add @acontplus/ng-notifications @acontplus/ui-kit
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
> **Note**: `@acontplus/ng-notifications` depends on `@acontplus/ui-kit` for notification constants (messages, durations, icons). Both packages must be installed.
|
|
18
|
+
|
|
17
19
|
## Features
|
|
18
20
|
|
|
19
21
|
- **Toast Notifications**: Using ngx-toastr for non-blocking notifications
|
|
@@ -284,8 +286,38 @@ this.notificationService.snackbar.info({ message: 'Information' });
|
|
|
284
286
|
### Quick Methods
|
|
285
287
|
|
|
286
288
|
```typescript
|
|
287
|
-
// Predefined messages
|
|
289
|
+
// Predefined messages (from @acontplus/ui-kit)
|
|
288
290
|
this.notificationService.quickSave(); // "Data saved successfully"
|
|
289
291
|
this.notificationService.quickDelete(); // "Item deleted"
|
|
290
292
|
this.notificationService.networkError(); // "Network connection error"
|
|
291
293
|
```
|
|
294
|
+
|
|
295
|
+
## Notification Constants
|
|
296
|
+
|
|
297
|
+
This library re-exports notification constants from `@acontplus/ui-kit` for backward compatibility:
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
import {
|
|
301
|
+
NOTIFICATION_MESSAGES,
|
|
302
|
+
NOTIFICATION_DURATIONS,
|
|
303
|
+
NOTIFICATION_ICONS,
|
|
304
|
+
} from '@acontplus/ng-notifications';
|
|
305
|
+
|
|
306
|
+
// Pre-defined messages
|
|
307
|
+
NOTIFICATION_MESSAGES.SUCCESS.SAVE; // 'Data saved successfully'
|
|
308
|
+
NOTIFICATION_MESSAGES.ERROR.NETWORK; // 'Network error occurred'
|
|
309
|
+
NOTIFICATION_MESSAGES.WARNING.UNSAVED_CHANGES; // 'You have unsaved changes'
|
|
310
|
+
|
|
311
|
+
// Standard durations
|
|
312
|
+
NOTIFICATION_DURATIONS.SHORT; // 3000ms
|
|
313
|
+
NOTIFICATION_DURATIONS.MEDIUM; // 5000ms
|
|
314
|
+
NOTIFICATION_DURATIONS.LONG; // 8000ms
|
|
315
|
+
|
|
316
|
+
// Icon mappings (Material icons)
|
|
317
|
+
NOTIFICATION_ICONS.success; // 'check_circle'
|
|
318
|
+
NOTIFICATION_ICONS.error; // 'error'
|
|
319
|
+
NOTIFICATION_ICONS.warning; // 'warning'
|
|
320
|
+
NOTIFICATION_ICONS.info; // 'info'
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
These constants are defined in `@acontplus/ui-kit` to ensure they're framework-agnostic and reusable across different notification implementations.
|
|
@@ -6,56 +6,7 @@ import { MatSnackBar } from '@angular/material/snack-bar';
|
|
|
6
6
|
import { map } from 'rxjs/operators';
|
|
7
7
|
import Swal from 'sweetalert2';
|
|
8
8
|
import { isPlatformBrowser } from '@angular/common';
|
|
9
|
-
|
|
10
|
-
// Type definitions for notifications
|
|
11
|
-
|
|
12
|
-
const NOTIFICATION_MESSAGES = {
|
|
13
|
-
SUCCESS: {
|
|
14
|
-
SAVE: 'Data saved successfully',
|
|
15
|
-
DELETE: 'Item deleted successfully',
|
|
16
|
-
UPDATE: 'Data updated successfully',
|
|
17
|
-
UPLOAD: 'File uploaded successfully',
|
|
18
|
-
CREATE: 'Item created successfully',
|
|
19
|
-
SYNC: 'Data synchronized successfully',
|
|
20
|
-
},
|
|
21
|
-
ERROR: {
|
|
22
|
-
SAVE: 'Failed to save data',
|
|
23
|
-
DELETE: 'Failed to delete item',
|
|
24
|
-
UPDATE: 'Failed to update data',
|
|
25
|
-
UPLOAD: 'Failed to upload file',
|
|
26
|
-
NETWORK: 'Network error occurred',
|
|
27
|
-
UNKNOWN: 'An unexpected error occurred',
|
|
28
|
-
VALIDATION: 'Validation error',
|
|
29
|
-
UNAUTHORIZED: 'Unauthorized access',
|
|
30
|
-
SERVER: 'Server error occurred',
|
|
31
|
-
},
|
|
32
|
-
WARNING: {
|
|
33
|
-
UNSAVED_CHANGES: 'You have unsaved changes',
|
|
34
|
-
SESSION_EXPIRING: 'Your session is about to expire',
|
|
35
|
-
STORAGE_FULL: 'Storage is running low',
|
|
36
|
-
DEPRECATED: 'This feature is deprecated',
|
|
37
|
-
LIMIT_REACHED: 'Limit reached',
|
|
38
|
-
},
|
|
39
|
-
INFO: {
|
|
40
|
-
LOADING: 'Loading data...',
|
|
41
|
-
PROCESSING: 'Processing request...',
|
|
42
|
-
MAINTENANCE: 'System maintenance scheduled',
|
|
43
|
-
UPDATE_AVAILABLE: 'Update available',
|
|
44
|
-
BACKUP_COMPLETE: 'Backup completed',
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
const NOTIFICATION_DURATIONS = {
|
|
48
|
-
SHORT: 3000,
|
|
49
|
-
MEDIUM: 5000,
|
|
50
|
-
LONG: 8000,
|
|
51
|
-
PERSISTENT: 0,
|
|
52
|
-
};
|
|
53
|
-
const NOTIFICATION_ICONS = {
|
|
54
|
-
success: 'check_circle',
|
|
55
|
-
error: 'error',
|
|
56
|
-
warning: 'warning',
|
|
57
|
-
info: 'info',
|
|
58
|
-
};
|
|
9
|
+
import { NOTIFICATION_MESSAGES } from '@acontplus/ui-kit';
|
|
59
10
|
|
|
60
11
|
const TOASTR_NOTIFICATION_CONFIG = new InjectionToken('toastr-notification-config', {
|
|
61
12
|
providedIn: 'root',
|
|
@@ -464,5 +415,5 @@ function provideNotifications(config, toastrConfig) {
|
|
|
464
415
|
* Generated bundle index. Do not edit.
|
|
465
416
|
*/
|
|
466
417
|
|
|
467
|
-
export { DEFAULT_SNACKBAR_CONFIG, NOTIFICATION_CONFIG,
|
|
418
|
+
export { DEFAULT_SNACKBAR_CONFIG, NOTIFICATION_CONFIG, NotificationProviderBase, NotificationService, SNACKBAR_CONFIG, SnackbarProvider, SweetalertProvider, TOASTR_NOTIFICATION_CONFIG, ToastrProvider, provideNotifications };
|
|
468
419
|
//# sourceMappingURL=acontplus-ng-notifications.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acontplus-ng-notifications.mjs","sources":["../../../../packages/ng-notifications/src/lib/types/notification.types.ts","../../../../packages/ng-notifications/src/lib/constants/notification.constants.ts","../../../../packages/ng-notifications/src/lib/config/toastr-config.ts","../../../../packages/ng-notifications/src/lib/config/snackbar-config.ts","../../../../packages/ng-notifications/src/lib/providers/notification-provider.ts","../../../../packages/ng-notifications/src/lib/providers/toastr-provider.ts","../../../../packages/ng-notifications/src/lib/providers/snackbar-provider.ts","../../../../packages/ng-notifications/src/lib/services/theme-detector.ts","../../../../packages/ng-notifications/src/lib/providers/sweetalert-provider.ts","../../../../packages/ng-notifications/src/lib/services/notification-service.ts","../../../../packages/ng-notifications/src/lib/providers.ts","../../../../packages/ng-notifications/src/acontplus-ng-notifications.ts"],"sourcesContent":["// Type definitions for notifications\n\nexport type NotificationType = 'success' | 'error' | 'warning' | 'info';\nexport type NotificationPosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\n | 'top-center'\n | 'bottom-center';\nexport type NotificationProvider = 'toastr' | 'snackbar' | 'sweetalert';\n\nexport interface BaseNotificationConfig {\n readonly message: string;\n readonly title?: string;\n readonly type?: NotificationType;\n}\n\nexport interface NotificationCallProps extends BaseNotificationConfig {\n readonly config?: unknown;\n}\n\nexport interface SweetAlertConfig extends BaseNotificationConfig {\n readonly html?: string;\n readonly confirmButtonText?: string;\n readonly cancelButtonText?: string;\n readonly showCancelButton?: boolean;\n readonly allowOutsideClick?: boolean;\n readonly customClass?: string;\n}\n\nexport interface NotificationResult {\n isConfirmed?: boolean;\n isDenied?: boolean;\n isDismissed?: boolean;\n value?: unknown;\n}\n","export const NOTIFICATION_MESSAGES = {\n SUCCESS: {\n SAVE: 'Data saved successfully',\n DELETE: 'Item deleted successfully',\n UPDATE: 'Data updated successfully',\n UPLOAD: 'File uploaded successfully',\n CREATE: 'Item created successfully',\n SYNC: 'Data synchronized successfully',\n },\n ERROR: {\n SAVE: 'Failed to save data',\n DELETE: 'Failed to delete item',\n UPDATE: 'Failed to update data',\n UPLOAD: 'Failed to upload file',\n NETWORK: 'Network error occurred',\n UNKNOWN: 'An unexpected error occurred',\n VALIDATION: 'Validation error',\n UNAUTHORIZED: 'Unauthorized access',\n SERVER: 'Server error occurred',\n },\n WARNING: {\n UNSAVED_CHANGES: 'You have unsaved changes',\n SESSION_EXPIRING: 'Your session is about to expire',\n STORAGE_FULL: 'Storage is running low',\n DEPRECATED: 'This feature is deprecated',\n LIMIT_REACHED: 'Limit reached',\n },\n INFO: {\n LOADING: 'Loading data...',\n PROCESSING: 'Processing request...',\n MAINTENANCE: 'System maintenance scheduled',\n UPDATE_AVAILABLE: 'Update available',\n BACKUP_COMPLETE: 'Backup completed',\n },\n} as const;\n\nexport const NOTIFICATION_DURATIONS = {\n SHORT: 3000,\n MEDIUM: 5000,\n LONG: 8000,\n PERSISTENT: 0,\n} as const;\n\nexport const NOTIFICATION_ICONS = {\n success: 'check_circle',\n error: 'error',\n warning: 'warning',\n info: 'info',\n} as const;\n","import { InjectionToken } from '@angular/core';\nimport { IndividualConfig } from 'ngx-toastr';\n\nexport type ToastrNotificationConfig = Partial<IndividualConfig>;\n\nexport const TOASTR_NOTIFICATION_CONFIG = new InjectionToken<ToastrNotificationConfig>(\n 'toastr-notification-config',\n {\n providedIn: 'root',\n factory: () => ({\n positionClass: 'toast-bottom-center',\n timeOut: 5000,\n extendedTimeOut: 1500,\n closeButton: true,\n newestOnTop: true,\n }),\n },\n);\n","import { InjectionToken } from '@angular/core';\nimport { MatSnackBarConfig } from '@angular/material/snack-bar';\n\nexport interface SnackbarConfig extends MatSnackBarConfig {\n readonly defaultAction?: string;\n readonly iconEnabled?: boolean;\n readonly titleEnabled?: boolean;\n}\n\nexport const DEFAULT_SNACKBAR_CONFIG: SnackbarConfig = {\n duration: 5000,\n horizontalPosition: 'center',\n verticalPosition: 'bottom',\n panelClass: [],\n defaultAction: 'Close',\n iconEnabled: true,\n titleEnabled: true,\n};\n\nexport const SNACKBAR_CONFIG = new InjectionToken<SnackbarConfig>('acontplus-snackbar-config', {\n providedIn: 'root',\n factory: () => DEFAULT_SNACKBAR_CONFIG,\n});\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NotificationCallProps,\n NotificationResult,\n SweetAlertConfig,\n NotificationProvider,\n} from '../types/notification.types';\n\nexport const NOTIFICATION_CONFIG = new InjectionToken<NotificationProviderConfig>(\n 'NOTIFICATION_CONFIG',\n);\n\nexport interface NotificationProviderConfig {\n defaultProvider: NotificationProvider;\n toastr?: unknown;\n snackbar?: unknown;\n sweetalert?: {\n defaultTheme?: 'auto' | 'material-ui' | 'material-ui-light' | 'material-ui-dark' | string;\n [key: string]: unknown;\n };\n}\n\n@Injectable()\nexport abstract class NotificationProviderBase {\n abstract success(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract error(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract warning(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract info(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract confirm(config: SweetAlertConfig): Observable<NotificationResult>;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\nimport { Observable, of } from 'rxjs';\nimport { NotificationProviderBase } from './notification-provider';\nimport { TOASTR_NOTIFICATION_CONFIG } from '../config/toastr-config';\nimport {\n NotificationCallProps,\n NotificationResult,\n SweetAlertConfig,\n} from '../types/notification.types';\n\nexport type ToastrType = 'success' | 'error' | 'warning' | 'info';\n\nexport interface ToastrShowProps {\n readonly type: ToastrType;\n readonly message: string;\n readonly title?: string;\n readonly options?: Partial<IndividualConfig>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastrProvider extends NotificationProviderBase {\n private readonly toastrService = inject(ToastrService);\n private readonly config = inject(TOASTR_NOTIFICATION_CONFIG);\n\n /**\n * Generic show method for dynamic toast types\n */\n show(props: ToastrShowProps): void {\n const { type, message, title, options: overrideOptions } = props;\n const finalOptions = { ...this.config, ...overrideOptions };\n\n this.toastrService[type](message, title, finalOptions);\n }\n\n success(props: NotificationCallProps): void {\n this.show({\n type: 'success',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n error(props: NotificationCallProps): void {\n this.show({\n type: 'error',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n warning(props: NotificationCallProps): void {\n this.show({\n type: 'warning',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n info(props: NotificationCallProps): void {\n this.show({\n type: 'info',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n const result = confirm(`${config.title || ''}\\n${config.message}`);\n return of({ isConfirmed: result });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Observable, of } from 'rxjs';\nimport { NotificationProviderBase } from './notification-provider';\nimport { SNACKBAR_CONFIG, SnackbarConfig } from '../config/snackbar-config';\nimport {\n NotificationCallProps,\n NotificationResult,\n SweetAlertConfig,\n} from '../types/notification.types';\nimport { SnackbarProps } from '../models/notification';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackbarProvider extends NotificationProviderBase {\n private readonly snackBar = inject(MatSnackBar);\n private readonly config = inject(SNACKBAR_CONFIG);\n\n /**\n * Display a snackbar with specific type and configuration\n */\n show(props: SnackbarProps): void {\n const {\n type,\n message,\n title,\n action = this.config.defaultAction,\n config: userConfig = {},\n } = props;\n\n const typeClass = `acontplus-snackbar-${type}`;\n const panelClasses = this.buildPanelClasses(typeClass, userConfig.panelClass);\n\n const finalConfig = {\n ...this.config,\n ...userConfig,\n panelClass: panelClasses,\n };\n\n const displayMessage = this.buildMessage(message, title);\n this.snackBar.open(displayMessage, action, finalConfig);\n }\n\n success(props: NotificationCallProps): void {\n this.show({\n type: 'success',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n error(props: NotificationCallProps): void {\n this.show({\n type: 'error',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n warning(props: NotificationCallProps): void {\n this.show({\n type: 'warning',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n info(props: NotificationCallProps): void {\n this.show({\n type: 'info',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n const result = confirm(`${config.title || ''}\\n${config.message}`);\n return of({ isConfirmed: result });\n }\n\n private buildPanelClasses(typeClass: string, userClasses?: string | string[]): string[] {\n const classes = ['acontplus-snackbar', typeClass];\n\n if (userClasses) {\n const normalizedClasses = Array.isArray(userClasses) ? userClasses : [userClasses];\n classes.push(...normalizedClasses);\n }\n\n return classes;\n }\n\n private buildMessage(message: string, title?: string): string {\n if (!this.config.titleEnabled || !title) {\n return message;\n }\n return `${title}: ${message}`;\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeDetector {\n private themeSubject = new BehaviorSubject<string>('material-ui-light');\n private readonly platformId = inject(PLATFORM_ID);\n public theme$ = this.themeSubject.asObservable();\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.detectTheme();\n this.watchThemeChanges();\n }\n }\n\n private detectTheme(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const isDark =\n document.body.classList.contains('dark-theme') ||\n document.documentElement.classList.contains('dark-theme');\n this.themeSubject.next(isDark ? 'material-ui-dark' : 'material-ui-light');\n }\n\n private watchThemeChanges(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const observer = new MutationObserver(() => this.detectTheme());\n observer.observe(document.body, { attributes: true, attributeFilter: ['class'] });\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n }\n\n getCurrentTheme(): string {\n return this.themeSubject.value;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport {\n NotificationProviderBase,\n NotificationProviderConfig,\n NOTIFICATION_CONFIG,\n} from './notification-provider';\nimport {\n NotificationCallProps,\n NotificationResult,\n NotificationType,\n SweetAlertConfig,\n} from '../types/notification.types';\nimport { ThemeDetector } from '../services/theme-detector';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SweetalertProvider extends NotificationProviderBase {\n private config = inject<NotificationProviderConfig>(NOTIFICATION_CONFIG);\n private themeDetector = inject(ThemeDetector);\n\n private getTheme(): string {\n const configTheme = (this.config.sweetalert as any)?.defaultTheme;\n\n // Default to 'auto' if no theme specified\n if (!configTheme || configTheme === 'auto') {\n // Auto-detect theme based on CSS classes\n const isDark =\n document?.body?.classList?.contains('dark-theme') ||\n document?.documentElement?.classList?.contains('dark-theme');\n return isDark ? 'material-ui-dark' : 'material-ui-light';\n }\n\n return configTheme;\n }\n success(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'success' });\n }\n\n error(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'error' });\n }\n\n warning(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'warning' });\n }\n\n info(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'info' });\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n const swalConfig = {\n title: config.title,\n text: config.message,\n html: config.html,\n icon: 'question' as const,\n showCancelButton: config.showCancelButton !== false,\n confirmButtonText: config.confirmButtonText || 'Confirm',\n cancelButtonText: config.cancelButtonText || 'Cancel',\n allowOutsideClick: config.allowOutsideClick !== false,\n customClass: config.customClass ? { container: config.customClass } : undefined,\n theme: this.getTheme(),\n };\n\n return from(Swal.fire(swalConfig as any)).pipe(\n map((result) => ({\n isConfirmed: result.isConfirmed,\n isDenied: result.isDenied,\n isDismissed: result.isDismissed,\n value: result.value,\n })),\n );\n }\n\n private showAlert(\n props: NotificationCallProps & { type: NotificationType },\n ): Observable<NotificationResult> {\n const configOptions = props.config as Record<string, unknown> | undefined;\n const { duration, ...otherConfig } = configOptions || {};\n const swalConfig = {\n title: props.title,\n text: props.message,\n icon: props.type as 'success' | 'error' | 'warning' | 'info',\n theme: this.getTheme(),\n ...(duration ? { timer: duration as number, timerProgressBar: true } : {}),\n ...otherConfig,\n };\n\n return from(Swal.fire(swalConfig as any)).pipe(\n map((result) => ({\n isConfirmed: result.isConfirmed,\n isDenied: result.isDenied,\n isDismissed: result.isDismissed,\n value: result.value,\n })),\n );\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NotificationProviderBase,\n NOTIFICATION_CONFIG,\n NotificationProviderConfig,\n} from '../providers/notification-provider';\nimport { ToastrProvider } from '../providers/toastr-provider';\nimport { SnackbarProvider } from '../providers/snackbar-provider';\nimport { SweetalertProvider } from '../providers/sweetalert-provider';\nimport {\n NotificationCallProps,\n NotificationResult,\n SweetAlertConfig,\n NotificationProvider,\n NotificationType,\n} from '../types/notification.types';\nimport { NOTIFICATION_MESSAGES } from '../constants/notification.constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n private config = inject<NotificationProviderConfig>(NOTIFICATION_CONFIG);\n private toastrProvider = inject(ToastrProvider);\n private snackbarProvider = inject(SnackbarProvider);\n private sweetAlertProvider = inject(SweetalertProvider);\n\n private providers = new Map<NotificationProvider, NotificationProviderBase>();\n private currentProvider: NotificationProviderBase;\n\n // Expose predefined messages\n readonly messages = NOTIFICATION_MESSAGES;\n\n constructor() {\n this.providers.set('toastr', this.toastrProvider);\n this.providers.set('snackbar', this.snackbarProvider);\n this.providers.set('sweetalert', this.sweetAlertProvider);\n\n this.currentProvider =\n this.providers.get(this.config.defaultProvider) || this.sweetAlertProvider;\n }\n\n setProvider(provider: NotificationProvider): void {\n const providerInstance = this.providers.get(provider);\n if (providerInstance) {\n this.currentProvider = providerInstance;\n }\n }\n\n success(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.success(props);\n }\n\n error(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.error(props);\n }\n\n warning(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.warning(props);\n }\n\n info(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.info(props);\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n return this.currentProvider.confirm(config);\n }\n\n show(\n props: { type: NotificationType } & NotificationCallProps,\n ): void | Observable<NotificationResult> {\n return this.currentProvider[props.type]({\n message: props.message,\n title: props.title,\n config: props.config,\n });\n }\n\n // Provider-specific methods maintaining your current API\n get toastr(): ToastrProvider {\n return this.providers.get('toastr') as ToastrProvider;\n }\n\n get snackbar(): SnackbarProvider {\n return this.providers.get('snackbar') as SnackbarProvider;\n }\n\n get sweetAlert(): SweetalertProvider {\n return this.providers.get('sweetalert') as SweetalertProvider;\n }\n\n // Quick methods using predefined messages\n quickSave(type: 'success' | 'error' = 'success'): void {\n const message = type === 'success' ? this.messages.SUCCESS.SAVE : this.messages.ERROR.SAVE;\n this.currentProvider[type]({ message });\n }\n\n quickDelete(type: 'success' | 'error' = 'success'): void {\n const message = type === 'success' ? this.messages.SUCCESS.DELETE : this.messages.ERROR.DELETE;\n this.currentProvider[type]({ message });\n }\n\n quickUpdate(type: 'success' | 'error' = 'success'): void {\n const message = type === 'success' ? this.messages.SUCCESS.UPDATE : this.messages.ERROR.UPDATE;\n this.currentProvider[type]({ message });\n }\n\n networkError(): void {\n this.currentProvider.error({\n message: this.messages.ERROR.NETWORK,\n title: 'Connection Error',\n });\n }\n\n sessionWarning(): void {\n this.currentProvider.warning({\n message: this.messages.WARNING.SESSION_EXPIRING,\n title: 'Session Alert',\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideToastr, GlobalConfig, ToastNoAnimation } from 'ngx-toastr';\nimport { NotificationService } from './services/notification-service';\nimport { NOTIFICATION_CONFIG, NotificationProviderConfig } from './providers/notification-provider';\nimport { ToastrProvider } from './providers/toastr-provider';\nimport { SnackbarProvider } from './providers/snackbar-provider';\nimport { SweetalertProvider } from './providers/sweetalert-provider';\n\n// Default toastr config (can be overridden)\nconst DEFAULT_TOASTR_CONFIG: Partial<GlobalConfig> = {\n positionClass: 'toast-bottom-center',\n timeOut: 5000,\n extendedTimeOut: 1500,\n closeButton: true,\n newestOnTop: true,\n preventDuplicates: true,\n progressBar: true,\n toastComponent: ToastNoAnimation,\n};\n\nexport function provideNotifications(\n config?: Partial<NotificationProviderConfig>,\n toastrConfig?: Partial<GlobalConfig>, // New optional param for dynamic toastr options\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideToastr({\n ...DEFAULT_TOASTR_CONFIG,\n ...toastrConfig, // Merge with user-provided config for flexibility\n }),\n\n // Notification providers\n ToastrProvider,\n SnackbarProvider,\n SweetalertProvider,\n\n // Configuration\n {\n provide: NOTIFICATION_CONFIG,\n useValue: {\n defaultProvider: 'toastr',\n ...config,\n },\n },\n\n // Main service\n NotificationService,\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acontplus-ng-notifications.mjs","sources":["../../../../packages/ng-notifications/src/lib/config/toastr-config.ts","../../../../packages/ng-notifications/src/lib/config/snackbar-config.ts","../../../../packages/ng-notifications/src/lib/providers/notification-provider.ts","../../../../packages/ng-notifications/src/lib/providers/toastr-provider.ts","../../../../packages/ng-notifications/src/lib/providers/snackbar-provider.ts","../../../../packages/ng-notifications/src/lib/services/theme-detector.ts","../../../../packages/ng-notifications/src/lib/providers/sweetalert-provider.ts","../../../../packages/ng-notifications/src/lib/services/notification-service.ts","../../../../packages/ng-notifications/src/lib/providers.ts","../../../../packages/ng-notifications/src/acontplus-ng-notifications.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IndividualConfig } from 'ngx-toastr';\n\nexport type ToastrNotificationConfig = Partial<IndividualConfig>;\n\nexport const TOASTR_NOTIFICATION_CONFIG = new InjectionToken<ToastrNotificationConfig>(\n 'toastr-notification-config',\n {\n providedIn: 'root',\n factory: () => ({\n positionClass: 'toast-bottom-center',\n timeOut: 5000,\n extendedTimeOut: 1500,\n closeButton: true,\n newestOnTop: true,\n }),\n },\n);\n","import { InjectionToken } from '@angular/core';\nimport { MatSnackBarConfig } from '@angular/material/snack-bar';\n\nexport interface SnackbarConfig extends MatSnackBarConfig {\n readonly defaultAction?: string;\n readonly iconEnabled?: boolean;\n readonly titleEnabled?: boolean;\n}\n\nexport const DEFAULT_SNACKBAR_CONFIG: SnackbarConfig = {\n duration: 5000,\n horizontalPosition: 'center',\n verticalPosition: 'bottom',\n panelClass: [],\n defaultAction: 'Close',\n iconEnabled: true,\n titleEnabled: true,\n};\n\nexport const SNACKBAR_CONFIG = new InjectionToken<SnackbarConfig>('acontplus-snackbar-config', {\n providedIn: 'root',\n factory: () => DEFAULT_SNACKBAR_CONFIG,\n});\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport type { NotificationProvider, NotificationResult } from '@acontplus/ui-kit';\nimport {\n NotificationCallProps,\n SweetAlertConfig,\n} from '../types/notification.types';\n\nexport const NOTIFICATION_CONFIG = new InjectionToken<NotificationProviderConfig>(\n 'NOTIFICATION_CONFIG',\n);\n\nexport interface NotificationProviderConfig {\n defaultProvider: NotificationProvider;\n toastr?: unknown;\n snackbar?: unknown;\n sweetalert?: {\n defaultTheme?: 'auto' | 'material-ui' | 'material-ui-light' | 'material-ui-dark' | string;\n [key: string]: unknown;\n };\n}\n\n@Injectable()\nexport abstract class NotificationProviderBase {\n abstract success(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract error(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract warning(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract info(props: NotificationCallProps): void | Observable<NotificationResult>;\n abstract confirm(config: SweetAlertConfig): Observable<NotificationResult>;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\nimport { Observable, of } from 'rxjs';\nimport { NotificationProviderBase } from './notification-provider';\nimport { TOASTR_NOTIFICATION_CONFIG } from '../config/toastr-config';\nimport type { NotificationResult } from '@acontplus/ui-kit';\nimport {\n NotificationCallProps,\n SweetAlertConfig,\n} from '../types/notification.types';\n\nexport type ToastrType = 'success' | 'error' | 'warning' | 'info';\n\nexport interface ToastrShowProps {\n readonly type: ToastrType;\n readonly message: string;\n readonly title?: string;\n readonly options?: Partial<IndividualConfig>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastrProvider extends NotificationProviderBase {\n private readonly toastrService = inject(ToastrService);\n private readonly config = inject(TOASTR_NOTIFICATION_CONFIG);\n\n /**\n * Generic show method for dynamic toast types\n */\n show(props: ToastrShowProps): void {\n const { type, message, title, options: overrideOptions } = props;\n const finalOptions = { ...this.config, ...overrideOptions };\n\n this.toastrService[type](message, title, finalOptions);\n }\n\n success(props: NotificationCallProps): void {\n this.show({\n type: 'success',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n error(props: NotificationCallProps): void {\n this.show({\n type: 'error',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n warning(props: NotificationCallProps): void {\n this.show({\n type: 'warning',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n info(props: NotificationCallProps): void {\n this.show({\n type: 'info',\n message: props.message,\n title: props.title,\n options: props.config as Partial<IndividualConfig>,\n });\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n const result = confirm(`${config.title || ''}\\n${config.message}`);\n return of({ isConfirmed: result });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Observable, of } from 'rxjs';\nimport { NotificationProviderBase } from './notification-provider';\nimport { SNACKBAR_CONFIG, SnackbarConfig } from '../config/snackbar-config';\nimport type { NotificationResult } from '@acontplus/ui-kit';\nimport {\n NotificationCallProps,\n SweetAlertConfig,\n} from '../types/notification.types';\nimport { SnackbarProps } from '../models/notification';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackbarProvider extends NotificationProviderBase {\n private readonly snackBar = inject(MatSnackBar);\n private readonly config = inject(SNACKBAR_CONFIG);\n\n /**\n * Display a snackbar with specific type and configuration\n */\n show(props: SnackbarProps): void {\n const {\n type,\n message,\n title,\n action = this.config.defaultAction,\n config: userConfig = {},\n } = props;\n\n const typeClass = `acontplus-snackbar-${type}`;\n const panelClasses = this.buildPanelClasses(typeClass, userConfig.panelClass);\n\n const finalConfig = {\n ...this.config,\n ...userConfig,\n panelClass: panelClasses,\n };\n\n const displayMessage = this.buildMessage(message, title);\n this.snackBar.open(displayMessage, action, finalConfig);\n }\n\n success(props: NotificationCallProps): void {\n this.show({\n type: 'success',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n error(props: NotificationCallProps): void {\n this.show({\n type: 'error',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n warning(props: NotificationCallProps): void {\n this.show({\n type: 'warning',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n info(props: NotificationCallProps): void {\n this.show({\n type: 'info',\n message: props.message,\n title: props.title,\n config: props.config as Partial<SnackbarConfig>,\n });\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n const result = confirm(`${config.title || ''}\\n${config.message}`);\n return of({ isConfirmed: result });\n }\n\n private buildPanelClasses(typeClass: string, userClasses?: string | string[]): string[] {\n const classes = ['acontplus-snackbar', typeClass];\n\n if (userClasses) {\n const normalizedClasses = Array.isArray(userClasses) ? userClasses : [userClasses];\n classes.push(...normalizedClasses);\n }\n\n return classes;\n }\n\n private buildMessage(message: string, title?: string): string {\n if (!this.config.titleEnabled || !title) {\n return message;\n }\n return `${title}: ${message}`;\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeDetector {\n private themeSubject = new BehaviorSubject<string>('material-ui-light');\n private readonly platformId = inject(PLATFORM_ID);\n public theme$ = this.themeSubject.asObservable();\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.detectTheme();\n this.watchThemeChanges();\n }\n }\n\n private detectTheme(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const isDark =\n document.body.classList.contains('dark-theme') ||\n document.documentElement.classList.contains('dark-theme');\n this.themeSubject.next(isDark ? 'material-ui-dark' : 'material-ui-light');\n }\n\n private watchThemeChanges(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const observer = new MutationObserver(() => this.detectTheme());\n observer.observe(document.body, { attributes: true, attributeFilter: ['class'] });\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n }\n\n getCurrentTheme(): string {\n return this.themeSubject.value;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport {\n NotificationProviderBase,\n NotificationProviderConfig,\n NOTIFICATION_CONFIG,\n} from './notification-provider';\nimport type { NotificationResult, NotificationType } from '@acontplus/ui-kit';\nimport {\n NotificationCallProps,\n SweetAlertConfig,\n} from '../types/notification.types';\nimport { ThemeDetector } from '../services/theme-detector';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SweetalertProvider extends NotificationProviderBase {\n private config = inject<NotificationProviderConfig>(NOTIFICATION_CONFIG);\n private themeDetector = inject(ThemeDetector);\n\n private getTheme(): string {\n const configTheme = (this.config.sweetalert as any)?.defaultTheme;\n\n // Default to 'auto' if no theme specified\n if (!configTheme || configTheme === 'auto') {\n // Auto-detect theme based on CSS classes\n const isDark =\n document?.body?.classList?.contains('dark-theme') ||\n document?.documentElement?.classList?.contains('dark-theme');\n return isDark ? 'material-ui-dark' : 'material-ui-light';\n }\n\n return configTheme;\n }\n success(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'success' });\n }\n\n error(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'error' });\n }\n\n warning(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'warning' });\n }\n\n info(props: NotificationCallProps): Observable<NotificationResult> {\n return this.showAlert({ ...props, type: 'info' });\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n const swalConfig = {\n title: config.title,\n text: config.message,\n html: config.html,\n icon: 'question' as const,\n showCancelButton: config.showCancelButton !== false,\n confirmButtonText: config.confirmButtonText || 'Confirm',\n cancelButtonText: config.cancelButtonText || 'Cancel',\n allowOutsideClick: config.allowOutsideClick !== false,\n customClass: config.customClass ? { container: config.customClass } : undefined,\n theme: this.getTheme(),\n };\n\n return from(Swal.fire(swalConfig as any)).pipe(\n map((result) => ({\n isConfirmed: result.isConfirmed,\n isDenied: result.isDenied,\n isDismissed: result.isDismissed,\n value: result.value,\n })),\n );\n }\n\n private showAlert(\n props: NotificationCallProps & { type: NotificationType },\n ): Observable<NotificationResult> {\n const configOptions = props.config as Record<string, unknown> | undefined;\n const { duration, ...otherConfig } = configOptions || {};\n const swalConfig = {\n title: props.title,\n text: props.message,\n icon: props.type as 'success' | 'error' | 'warning' | 'info',\n theme: this.getTheme(),\n ...(duration ? { timer: duration as number, timerProgressBar: true } : {}),\n ...otherConfig,\n };\n\n return from(Swal.fire(swalConfig as any)).pipe(\n map((result) => ({\n isConfirmed: result.isConfirmed,\n isDenied: result.isDenied,\n isDismissed: result.isDismissed,\n value: result.value,\n })),\n );\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NotificationProviderBase,\n NOTIFICATION_CONFIG,\n NotificationProviderConfig,\n} from '../providers/notification-provider';\nimport { ToastrProvider } from '../providers/toastr-provider';\nimport { SnackbarProvider } from '../providers/snackbar-provider';\nimport { SweetalertProvider } from '../providers/sweetalert-provider';\nimport {\n NOTIFICATION_MESSAGES,\n type NotificationProvider,\n type NotificationResult,\n type NotificationType,\n} from '@acontplus/ui-kit';\nimport {\n NotificationCallProps,\n SweetAlertConfig,\n} from '../types/notification.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n private config = inject<NotificationProviderConfig>(NOTIFICATION_CONFIG);\n private toastrProvider = inject(ToastrProvider);\n private snackbarProvider = inject(SnackbarProvider);\n private sweetAlertProvider = inject(SweetalertProvider);\n\n private providers = new Map<NotificationProvider, NotificationProviderBase>();\n private currentProvider: NotificationProviderBase;\n\n // Expose predefined messages\n readonly messages = NOTIFICATION_MESSAGES;\n\n constructor() {\n this.providers.set('toastr', this.toastrProvider);\n this.providers.set('snackbar', this.snackbarProvider);\n this.providers.set('sweetalert', this.sweetAlertProvider);\n\n this.currentProvider =\n this.providers.get(this.config.defaultProvider) || this.sweetAlertProvider;\n }\n\n setProvider(provider: NotificationProvider): void {\n const providerInstance = this.providers.get(provider);\n if (providerInstance) {\n this.currentProvider = providerInstance;\n }\n }\n\n success(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.success(props);\n }\n\n error(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.error(props);\n }\n\n warning(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.warning(props);\n }\n\n info(props: NotificationCallProps): void | Observable<NotificationResult> {\n return this.currentProvider.info(props);\n }\n\n confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n return this.currentProvider.confirm(config);\n }\n\n show(\n props: { type: NotificationType } & NotificationCallProps,\n ): void | Observable<NotificationResult> {\n return this.currentProvider[props.type]({\n message: props.message,\n title: props.title,\n config: props.config,\n });\n }\n\n // Provider-specific methods maintaining your current API\n get toastr(): ToastrProvider {\n return this.providers.get('toastr') as ToastrProvider;\n }\n\n get snackbar(): SnackbarProvider {\n return this.providers.get('snackbar') as SnackbarProvider;\n }\n\n get sweetAlert(): SweetalertProvider {\n return this.providers.get('sweetalert') as SweetalertProvider;\n }\n\n // Quick methods using predefined messages\n quickSave(type: 'success' | 'error' = 'success'): void {\n const message = type === 'success' ? this.messages.SUCCESS.SAVE : this.messages.ERROR.SAVE;\n this.currentProvider[type]({ message });\n }\n\n quickDelete(type: 'success' | 'error' = 'success'): void {\n const message = type === 'success' ? this.messages.SUCCESS.DELETE : this.messages.ERROR.DELETE;\n this.currentProvider[type]({ message });\n }\n\n quickUpdate(type: 'success' | 'error' = 'success'): void {\n const message = type === 'success' ? this.messages.SUCCESS.UPDATE : this.messages.ERROR.UPDATE;\n this.currentProvider[type]({ message });\n }\n\n networkError(): void {\n this.currentProvider.error({\n message: this.messages.ERROR.NETWORK,\n title: 'Connection Error',\n });\n }\n\n sessionWarning(): void {\n this.currentProvider.warning({\n message: this.messages.WARNING.SESSION_EXPIRING,\n title: 'Session Alert',\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideToastr, GlobalConfig, ToastNoAnimation } from 'ngx-toastr';\nimport { NotificationService } from './services/notification-service';\nimport { NOTIFICATION_CONFIG, NotificationProviderConfig } from './providers/notification-provider';\nimport { ToastrProvider } from './providers/toastr-provider';\nimport { SnackbarProvider } from './providers/snackbar-provider';\nimport { SweetalertProvider } from './providers/sweetalert-provider';\n\n// Default toastr config (can be overridden)\nconst DEFAULT_TOASTR_CONFIG: Partial<GlobalConfig> = {\n positionClass: 'toast-bottom-center',\n timeOut: 5000,\n extendedTimeOut: 1500,\n closeButton: true,\n newestOnTop: true,\n preventDuplicates: true,\n progressBar: true,\n toastComponent: ToastNoAnimation,\n};\n\nexport function provideNotifications(\n config?: Partial<NotificationProviderConfig>,\n toastrConfig?: Partial<GlobalConfig>, // New optional param for dynamic toastr options\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideToastr({\n ...DEFAULT_TOASTR_CONFIG,\n ...toastrConfig, // Merge with user-provided config for flexibility\n }),\n\n // Notification providers\n ToastrProvider,\n SnackbarProvider,\n SweetalertProvider,\n\n // Configuration\n {\n provide: NOTIFICATION_CONFIG,\n useValue: {\n defaultProvider: 'toastr',\n ...config,\n },\n },\n\n // Main service\n NotificationService,\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
|
+
import { BaseNotificationConfig, NotificationType, NotificationProvider, NotificationResult } from '@acontplus/ui-kit';
|
|
1
2
|
import * as i0 from '@angular/core';
|
|
2
3
|
import { InjectionToken, EnvironmentProviders } from '@angular/core';
|
|
3
4
|
import { IndividualConfig, GlobalConfig } from 'ngx-toastr';
|
|
4
5
|
import { MatSnackBarConfig } from '@angular/material/snack-bar';
|
|
5
6
|
import { Observable } from 'rxjs';
|
|
6
7
|
|
|
7
|
-
type NotificationType = 'success' | 'error' | 'warning' | 'info';
|
|
8
|
-
type NotificationPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';
|
|
9
|
-
type NotificationProvider = 'toastr' | 'snackbar' | 'sweetalert';
|
|
10
|
-
interface BaseNotificationConfig {
|
|
11
|
-
readonly message: string;
|
|
12
|
-
readonly title?: string;
|
|
13
|
-
readonly type?: NotificationType;
|
|
14
|
-
}
|
|
15
8
|
interface NotificationCallProps extends BaseNotificationConfig {
|
|
16
9
|
readonly config?: unknown;
|
|
17
10
|
}
|
|
@@ -23,60 +16,6 @@ interface SweetAlertConfig extends BaseNotificationConfig {
|
|
|
23
16
|
readonly allowOutsideClick?: boolean;
|
|
24
17
|
readonly customClass?: string;
|
|
25
18
|
}
|
|
26
|
-
interface NotificationResult {
|
|
27
|
-
isConfirmed?: boolean;
|
|
28
|
-
isDenied?: boolean;
|
|
29
|
-
isDismissed?: boolean;
|
|
30
|
-
value?: unknown;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
declare const NOTIFICATION_MESSAGES: {
|
|
34
|
-
readonly SUCCESS: {
|
|
35
|
-
readonly SAVE: "Data saved successfully";
|
|
36
|
-
readonly DELETE: "Item deleted successfully";
|
|
37
|
-
readonly UPDATE: "Data updated successfully";
|
|
38
|
-
readonly UPLOAD: "File uploaded successfully";
|
|
39
|
-
readonly CREATE: "Item created successfully";
|
|
40
|
-
readonly SYNC: "Data synchronized successfully";
|
|
41
|
-
};
|
|
42
|
-
readonly ERROR: {
|
|
43
|
-
readonly SAVE: "Failed to save data";
|
|
44
|
-
readonly DELETE: "Failed to delete item";
|
|
45
|
-
readonly UPDATE: "Failed to update data";
|
|
46
|
-
readonly UPLOAD: "Failed to upload file";
|
|
47
|
-
readonly NETWORK: "Network error occurred";
|
|
48
|
-
readonly UNKNOWN: "An unexpected error occurred";
|
|
49
|
-
readonly VALIDATION: "Validation error";
|
|
50
|
-
readonly UNAUTHORIZED: "Unauthorized access";
|
|
51
|
-
readonly SERVER: "Server error occurred";
|
|
52
|
-
};
|
|
53
|
-
readonly WARNING: {
|
|
54
|
-
readonly UNSAVED_CHANGES: "You have unsaved changes";
|
|
55
|
-
readonly SESSION_EXPIRING: "Your session is about to expire";
|
|
56
|
-
readonly STORAGE_FULL: "Storage is running low";
|
|
57
|
-
readonly DEPRECATED: "This feature is deprecated";
|
|
58
|
-
readonly LIMIT_REACHED: "Limit reached";
|
|
59
|
-
};
|
|
60
|
-
readonly INFO: {
|
|
61
|
-
readonly LOADING: "Loading data...";
|
|
62
|
-
readonly PROCESSING: "Processing request...";
|
|
63
|
-
readonly MAINTENANCE: "System maintenance scheduled";
|
|
64
|
-
readonly UPDATE_AVAILABLE: "Update available";
|
|
65
|
-
readonly BACKUP_COMPLETE: "Backup completed";
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
declare const NOTIFICATION_DURATIONS: {
|
|
69
|
-
readonly SHORT: 3000;
|
|
70
|
-
readonly MEDIUM: 5000;
|
|
71
|
-
readonly LONG: 8000;
|
|
72
|
-
readonly PERSISTENT: 0;
|
|
73
|
-
};
|
|
74
|
-
declare const NOTIFICATION_ICONS: {
|
|
75
|
-
readonly success: "check_circle";
|
|
76
|
-
readonly error: "error";
|
|
77
|
-
readonly warning: "warning";
|
|
78
|
-
readonly info: "info";
|
|
79
|
-
};
|
|
80
19
|
|
|
81
20
|
type ToastrNotificationConfig = Partial<IndividualConfig>;
|
|
82
21
|
declare const TOASTR_NOTIFICATION_CONFIG: InjectionToken<Partial<IndividualConfig<any>>>;
|
|
@@ -249,5 +188,5 @@ declare class NotificationService {
|
|
|
249
188
|
|
|
250
189
|
declare function provideNotifications(config?: Partial<NotificationProviderConfig>, toastrConfig?: Partial<GlobalConfig>): EnvironmentProviders;
|
|
251
190
|
|
|
252
|
-
export { DEFAULT_SNACKBAR_CONFIG, NOTIFICATION_CONFIG,
|
|
253
|
-
export type {
|
|
191
|
+
export { DEFAULT_SNACKBAR_CONFIG, NOTIFICATION_CONFIG, NotificationProviderBase, NotificationService, SNACKBAR_CONFIG, SnackbarProvider, SweetalertProvider, TOASTR_NOTIFICATION_CONFIG, ToastrProvider, provideNotifications };
|
|
192
|
+
export type { NotificationCallProps, NotificationProviderConfig, SnackbarCallProps, SnackbarConfig, SnackbarProps, SweetAlertConfig, ToastrCallProps, ToastrNotificationConfig, ToastrShowProps, ToastrType };
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acontplus/ng-notifications",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Comprehensive Angular notification system with toast notifications (ngx-toastr), alerts (SweetAlert2), snackbars, theme detection, notification providers, and configurable styling. Supports multiple notification types with Angular Material integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
+
"@acontplus/ui-kit": "^1.0.1",
|
|
6
7
|
"@angular/common": "^20.3.9",
|
|
7
8
|
"@angular/core": "^20.3.9",
|
|
8
9
|
"@angular/material": "^20.2.12",
|