@memberjunction/ng-explorer-core 5.30.1 → 5.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-routing.module.d.ts +9 -0
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +13 -1
- package/dist/app-routing.module.js.map +1 -1
- package/dist/generated/lazy-feature-config.d.ts +1 -1
- package/dist/generated/lazy-feature-config.d.ts.map +1 -1
- package/dist/generated/lazy-feature-config.js +5 -3
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts +2 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +12 -11
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
- package/dist/lib/guards/entities.guard.d.ts +2 -1
- package/dist/lib/guards/entities.guard.d.ts.map +1 -1
- package/dist/lib/guards/entities.guard.js +14 -1
- package/dist/lib/guards/entities.guard.js.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.d.ts +2 -1
- package/dist/lib/oauth/oauth-callback.component.d.ts.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.js +7 -6
- package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.js +2 -3
- package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +3 -3
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +4 -4
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +1 -2
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +5 -5
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js +2 -2
- package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +2 -2
- package/dist/lib/resource-wrappers/query-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.d.ts +2 -2
- package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +8 -7
- package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +3 -3
- package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +3 -3
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/services/startup-validation.service.d.ts +9 -0
- package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
- package/dist/lib/services/startup-validation.service.js +13 -1
- package/dist/lib/services/startup-validation.service.js.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +2 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.js +7 -5
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts +5 -2
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +43 -27
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts +3 -2
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +8 -6
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +1 -2
- package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +2 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +18 -16
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/lib/single-record/single-record.component.d.ts +2 -1
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +7 -5
- package/dist/lib/single-record/single-record.component.js.map +1 -1
- package/dist/lib/single-search-result/single-search-result.component.d.ts +2 -1
- package/dist/lib/single-search-result/single-search-result.component.d.ts.map +1 -1
- package/dist/lib/single-search-result/single-search-result.component.js +8 -6
- package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts +2 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +9 -7
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/lib/user-profile/user-profile.component.d.ts +2 -1
- package/dist/lib/user-profile/user-profile.component.d.ts.map +1 -1
- package/dist/lib/user-profile/user-profile.component.js +6 -5
- package/dist/lib/user-profile/user-profile.component.js.map +1 -1
- package/package.json +42 -41
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-profile.component.js","sourceRoot":"","sources":["../../../src/lib/user-profile/user-profile.component.ts","../../../src/lib/user-profile/user-profile.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { AuthService } from '@auth0/auth0-angular';\nimport { MJAuthBase, StandardUserInfo } from '@memberjunction/ng-auth-services';\nimport { UserInfoEngine, MJUserNotificationPreferenceEntity } from '@memberjunction/core-entities';\nimport { Metadata } from '@memberjunction/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface NotificationSummary {\n InAppEnabled: boolean;\n EmailEnabled: boolean;\n SMSEnabled: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'app-user-profile',\n templateUrl: './user-profile.component.html',\n styleUrls: ['./user-profile.component.css']\n})\nexport class UserProfileComponent implements OnInit, OnDestroy {\n public JSON: any = JSON;\n public User: Observable<StandardUserInfo | null>;\n public Loading = true;\n public Saving = false;\n public UnreadNotificationCount = 0;\n public NotificationSummary: NotificationSummary = {\n InAppEnabled: true,\n EmailEnabled: false,\n SMSEnabled: false\n };\n\n private destroy$ = new Subject<void>();\n\n constructor(\n public authBase: MJAuthBase,\n private sharedService: SharedService,\n private cdr: ChangeDetectorRef\n ) {\n // v3.0 API - User is now an observable that the template subscribes to\n this.User = authBase.getUserInfo();\n }\n\n async ngOnInit() {\n await this.LoadNotificationData();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Loads notification data from UserInfoEngine\n */\n private async LoadNotificationData() {\n try {\n this.Loading = true;\n\n // Get unread notification count\n this.UnreadNotificationCount = UserInfoEngine.Instance.UnreadNotificationCount;\n\n // Calculate global channel preferences\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n const types = UserInfoEngine.Instance.NotificationTypes;\n\n if (preferences.length === 0 && types.length > 0) {\n // No preferences set yet - use defaults from types\n const inApp = types.some(t => t.DefaultInApp ?? true);\n const email = types.some(t => t.DefaultEmail ?? false);\n const sms = types.some(t => t.DefaultSMS ?? false);\n\n this.NotificationSummary = {\n InAppEnabled: inApp,\n EmailEnabled: email,\n SMSEnabled: sms\n };\n } else if (preferences.length > 0) {\n // Calculate from existing preferences\n const inApp = preferences.some(p => p.InAppEnabled);\n const email = preferences.some(p => p.EmailEnabled);\n const sms = preferences.some(p => p.SMSEnabled);\n\n this.NotificationSummary = {\n InAppEnabled: inApp,\n EmailEnabled: email,\n SMSEnabled: sms\n };\n }\n\n this.Loading = false;\n this.cdr.detectChanges();\n } catch (error: unknown) {\n this.Loading = false;\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Failed to load notification data: ${message}`, 'error', 3000);\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Toggles a specific notification channel globally\n */\n async ToggleChannel(channel: 'InApp' | 'Email' | 'SMS'): Promise<void> {\n try {\n this.Saving = true;\n const md = new Metadata();\n const currentUser = md.CurrentUser;\n const transGroup = await md.CreateTransactionGroup();\n\n const types = UserInfoEngine.Instance.NotificationTypes;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n\n // Determine new state\n let newState: boolean;\n if (channel === 'InApp') {\n newState = !this.NotificationSummary.InAppEnabled;\n this.NotificationSummary.InAppEnabled = newState;\n } else if (channel === 'Email') {\n newState = !this.NotificationSummary.EmailEnabled;\n this.NotificationSummary.EmailEnabled = newState;\n } else {\n newState = !this.NotificationSummary.SMSEnabled;\n this.NotificationSummary.SMSEnabled = newState;\n }\n\n // Update all notification types that allow user preference\n for (const type of types) {\n if (type.AllowUserPreference === false) {\n continue; // Skip locked types\n }\n\n let pref = preferences.find(p => UUIDsEqual(p.NotificationTypeID, type.ID));\n\n if (!pref) {\n // Create new preference record\n pref = await md.GetEntityObject<MJUserNotificationPreferenceEntity>('MJ: User Notification Preferences');\n pref.UserID = currentUser.ID;\n pref.NotificationTypeID = type.ID;\n\n // Set defaults from type\n pref.InAppEnabled = type.DefaultInApp ?? true;\n pref.EmailEnabled = type.DefaultEmail ?? false;\n pref.SMSEnabled = type.DefaultSMS ?? false;\n }\n\n // Update the specific channel\n if (channel === 'InApp') {\n pref.InAppEnabled = newState;\n } else if (channel === 'Email') {\n pref.EmailEnabled = newState;\n } else {\n pref.SMSEnabled = newState;\n }\n\n // Set Enabled based on whether any channel is enabled\n pref.Enabled = pref.InAppEnabled || pref.EmailEnabled || pref.SMSEnabled;\n\n pref.TransactionGroup = transGroup;\n pref.Save();\n }\n\n // Submit transaction group\n const success = await transGroup.Submit();\n\n if (success) {\n this.sharedService.CreateSimpleNotification(\n `${channel} notifications ${newState ? 'enabled' : 'disabled'} globally`,\n 'success',\n 2500\n );\n } else {\n throw new Error('Failed to save preferences');\n }\n\n this.Saving = false;\n this.cdr.detectChanges();\n } catch (error: unknown) {\n this.Saving = false;\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Failed to update preferences: ${message}`, 'error', 3000);\n\n // Revert the UI state\n await this.LoadNotificationData();\n }\n }\n\n /**\n * Gets the appropriate icon for a channel\n */\n GetChannelIcon(channel: 'InApp' | 'Email' | 'SMS'): string {\n switch (channel) {\n case 'InApp': return 'fa-solid fa-bell';\n case 'Email': return 'fa-solid fa-envelope';\n case 'SMS': return 'fa-solid fa-mobile';\n default: return 'fa-solid fa-bell';\n }\n }\n\n /**\n * Gets the label for a channel\n */\n GetChannelLabel(channel: 'InApp' | 'Email' | 'SMS'): string {\n switch (channel) {\n case 'InApp': return 'In-App';\n case 'Email': return 'Email';\n case 'SMS': return 'SMS';\n default: return '';\n }\n }\n\n /**\n * Checks if a channel is enabled\n */\n IsChannelEnabled(channel: 'InApp' | 'Email' | 'SMS'): boolean {\n switch (channel) {\n case 'InApp': return this.NotificationSummary.InAppEnabled;\n case 'Email': return this.NotificationSummary.EmailEnabled;\n case 'SMS': return this.NotificationSummary.SMSEnabled;\n default: return false;\n }\n }\n}\n","@if (Loading) {\n <mj-loading text=\"Loading profile...\"></mj-loading>\n}\n\n@if (!Loading) {\n <div class=\"user-profile-container\">\n <!-- User Info Card -->\n @if (User | async; as user) {\n <div class=\"profile-card\">\n <div class=\"profile-header\">\n <div class=\"avatar-container\">\n <i class=\"fa-solid fa-user avatar-icon\"></i>\n </div>\n <div class=\"profile-info\">\n <h3 class=\"user-name\">{{ user.name }}</h3>\n <p class=\"user-email\">{{ user.email }}</p>\n </div>\n </div>\n </div>\n }\n <!-- Notification Summary Card -->\n <div class=\"notification-card\">\n <div class=\"card-header\">\n <div class=\"header-left\">\n <i class=\"fa-solid fa-bell header-icon\"></i>\n <h4>Notifications</h4>\n </div>\n @if (UnreadNotificationCount > 0) {\n <span class=\"unread-badge\">\n {{ UnreadNotificationCount }}\n </span>\n }\n </div>\n <div class=\"card-body\">\n <p class=\"card-description\">\n Manage your notification preferences for all channels\n </p>\n <div class=\"channel-toggles\">\n <!-- In-App Toggle -->\n <button\n class=\"channel-toggle\"\n [class.active]=\"IsChannelEnabled('InApp')\"\n [disabled]=\"Saving\"\n (click)=\"ToggleChannel('InApp')\"\n type=\"button\"\n >\n <i [class]=\"GetChannelIcon('InApp')\"></i>\n <span class=\"channel-label\">{{ GetChannelLabel('InApp') }}</span>\n <span class=\"toggle-indicator\">\n @if (IsChannelEnabled('InApp')) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n </button>\n <!-- Email Toggle -->\n <button\n class=\"channel-toggle\"\n [class.active]=\"IsChannelEnabled('Email')\"\n [disabled]=\"Saving\"\n (click)=\"ToggleChannel('Email')\"\n type=\"button\"\n >\n <i [class]=\"GetChannelIcon('Email')\"></i>\n <span class=\"channel-label\">{{ GetChannelLabel('Email') }}</span>\n <span class=\"toggle-indicator\">\n @if (IsChannelEnabled('Email')) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n </button>\n <!-- SMS Toggle -->\n <button\n class=\"channel-toggle\"\n [class.active]=\"IsChannelEnabled('SMS')\"\n [disabled]=\"Saving\"\n (click)=\"ToggleChannel('SMS')\"\n type=\"button\"\n >\n <i [class]=\"GetChannelIcon('SMS')\"></i>\n <span class=\"channel-label\">{{ GetChannelLabel('SMS') }}</span>\n <span class=\"toggle-indicator\">\n @if (IsChannelEnabled('SMS')) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n </button>\n </div>\n <div class=\"card-footer\">\n <a href=\"/settings\" class=\"settings-link\">\n View all notification preferences\n <i class=\"fa-solid fa-arrow-right\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n}"]}
|
|
1
|
+
{"version":3,"file":"user-profile.component.js","sourceRoot":"","sources":["../../../src/lib/user-profile/user-profile.component.ts","../../../src/lib/user-profile/user-profile.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { AuthService } from '@auth0/auth0-angular';\nimport { MJAuthBase, StandardUserInfo } from '@memberjunction/ng-auth-services';\nimport { UserInfoEngine, MJUserNotificationPreferenceEntity } from '@memberjunction/core-entities';\nimport { Metadata } from '@memberjunction/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\ninterface NotificationSummary {\n InAppEnabled: boolean;\n EmailEnabled: boolean;\n SMSEnabled: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'app-user-profile',\n templateUrl: './user-profile.component.html',\n styleUrls: ['./user-profile.component.css']\n})\nexport class UserProfileComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n public JSON: any = JSON;\n public User: Observable<StandardUserInfo | null>;\n public Loading = true;\n public Saving = false;\n public UnreadNotificationCount = 0;\n public NotificationSummary: NotificationSummary = {\n InAppEnabled: true,\n EmailEnabled: false,\n SMSEnabled: false\n };\n\n private destroy$ = new Subject<void>();\n\n constructor(\n public authBase: MJAuthBase,\n private sharedService: SharedService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n // v3.0 API - User is now an observable that the template subscribes to\n this.User = authBase.getUserInfo();\n }\n\n async ngOnInit() {\n await this.LoadNotificationData();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Loads notification data from UserInfoEngine\n */\n private async LoadNotificationData() {\n try {\n this.Loading = true;\n\n // Get unread notification count\n this.UnreadNotificationCount = UserInfoEngine.Instance.UnreadNotificationCount;\n\n // Calculate global channel preferences\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n const types = UserInfoEngine.Instance.NotificationTypes;\n\n if (preferences.length === 0 && types.length > 0) {\n // No preferences set yet - use defaults from types\n const inApp = types.some(t => t.DefaultInApp ?? true);\n const email = types.some(t => t.DefaultEmail ?? false);\n const sms = types.some(t => t.DefaultSMS ?? false);\n\n this.NotificationSummary = {\n InAppEnabled: inApp,\n EmailEnabled: email,\n SMSEnabled: sms\n };\n } else if (preferences.length > 0) {\n // Calculate from existing preferences\n const inApp = preferences.some(p => p.InAppEnabled);\n const email = preferences.some(p => p.EmailEnabled);\n const sms = preferences.some(p => p.SMSEnabled);\n\n this.NotificationSummary = {\n InAppEnabled: inApp,\n EmailEnabled: email,\n SMSEnabled: sms\n };\n }\n\n this.Loading = false;\n this.cdr.detectChanges();\n } catch (error: unknown) {\n this.Loading = false;\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Failed to load notification data: ${message}`, 'error', 3000);\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Toggles a specific notification channel globally\n */\n async ToggleChannel(channel: 'InApp' | 'Email' | 'SMS'): Promise<void> {\n try {\n this.Saving = true;\n const md = this.ProviderToUse;\n const currentUser = md.CurrentUser;\n const transGroup = await md.CreateTransactionGroup();\n\n const types = UserInfoEngine.Instance.NotificationTypes;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n\n // Determine new state\n let newState: boolean;\n if (channel === 'InApp') {\n newState = !this.NotificationSummary.InAppEnabled;\n this.NotificationSummary.InAppEnabled = newState;\n } else if (channel === 'Email') {\n newState = !this.NotificationSummary.EmailEnabled;\n this.NotificationSummary.EmailEnabled = newState;\n } else {\n newState = !this.NotificationSummary.SMSEnabled;\n this.NotificationSummary.SMSEnabled = newState;\n }\n\n // Update all notification types that allow user preference\n for (const type of types) {\n if (type.AllowUserPreference === false) {\n continue; // Skip locked types\n }\n\n let pref = preferences.find(p => UUIDsEqual(p.NotificationTypeID, type.ID));\n\n if (!pref) {\n // Create new preference record\n pref = await md.GetEntityObject<MJUserNotificationPreferenceEntity>('MJ: User Notification Preferences');\n pref.UserID = currentUser.ID;\n pref.NotificationTypeID = type.ID;\n\n // Set defaults from type\n pref.InAppEnabled = type.DefaultInApp ?? true;\n pref.EmailEnabled = type.DefaultEmail ?? false;\n pref.SMSEnabled = type.DefaultSMS ?? false;\n }\n\n // Update the specific channel\n if (channel === 'InApp') {\n pref.InAppEnabled = newState;\n } else if (channel === 'Email') {\n pref.EmailEnabled = newState;\n } else {\n pref.SMSEnabled = newState;\n }\n\n // Set Enabled based on whether any channel is enabled\n pref.Enabled = pref.InAppEnabled || pref.EmailEnabled || pref.SMSEnabled;\n\n pref.TransactionGroup = transGroup;\n pref.Save();\n }\n\n // Submit transaction group\n const success = await transGroup.Submit();\n\n if (success) {\n this.sharedService.CreateSimpleNotification(\n `${channel} notifications ${newState ? 'enabled' : 'disabled'} globally`,\n 'success',\n 2500\n );\n } else {\n throw new Error('Failed to save preferences');\n }\n\n this.Saving = false;\n this.cdr.detectChanges();\n } catch (error: unknown) {\n this.Saving = false;\n const message = error instanceof Error ? error.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Failed to update preferences: ${message}`, 'error', 3000);\n\n // Revert the UI state\n await this.LoadNotificationData();\n }\n }\n\n /**\n * Gets the appropriate icon for a channel\n */\n GetChannelIcon(channel: 'InApp' | 'Email' | 'SMS'): string {\n switch (channel) {\n case 'InApp': return 'fa-solid fa-bell';\n case 'Email': return 'fa-solid fa-envelope';\n case 'SMS': return 'fa-solid fa-mobile';\n default: return 'fa-solid fa-bell';\n }\n }\n\n /**\n * Gets the label for a channel\n */\n GetChannelLabel(channel: 'InApp' | 'Email' | 'SMS'): string {\n switch (channel) {\n case 'InApp': return 'In-App';\n case 'Email': return 'Email';\n case 'SMS': return 'SMS';\n default: return '';\n }\n }\n\n /**\n * Checks if a channel is enabled\n */\n IsChannelEnabled(channel: 'InApp' | 'Email' | 'SMS'): boolean {\n switch (channel) {\n case 'InApp': return this.NotificationSummary.InAppEnabled;\n case 'Email': return this.NotificationSummary.EmailEnabled;\n case 'SMS': return this.NotificationSummary.SMSEnabled;\n default: return false;\n }\n }\n}\n","@if (Loading) {\n <mj-loading text=\"Loading profile...\"></mj-loading>\n}\n\n@if (!Loading) {\n <div class=\"user-profile-container\">\n <!-- User Info Card -->\n @if (User | async; as user) {\n <div class=\"profile-card\">\n <div class=\"profile-header\">\n <div class=\"avatar-container\">\n <i class=\"fa-solid fa-user avatar-icon\"></i>\n </div>\n <div class=\"profile-info\">\n <h3 class=\"user-name\">{{ user.name }}</h3>\n <p class=\"user-email\">{{ user.email }}</p>\n </div>\n </div>\n </div>\n }\n <!-- Notification Summary Card -->\n <div class=\"notification-card\">\n <div class=\"card-header\">\n <div class=\"header-left\">\n <i class=\"fa-solid fa-bell header-icon\"></i>\n <h4>Notifications</h4>\n </div>\n @if (UnreadNotificationCount > 0) {\n <span class=\"unread-badge\">\n {{ UnreadNotificationCount }}\n </span>\n }\n </div>\n <div class=\"card-body\">\n <p class=\"card-description\">\n Manage your notification preferences for all channels\n </p>\n <div class=\"channel-toggles\">\n <!-- In-App Toggle -->\n <button\n class=\"channel-toggle\"\n [class.active]=\"IsChannelEnabled('InApp')\"\n [disabled]=\"Saving\"\n (click)=\"ToggleChannel('InApp')\"\n type=\"button\"\n >\n <i [class]=\"GetChannelIcon('InApp')\"></i>\n <span class=\"channel-label\">{{ GetChannelLabel('InApp') }}</span>\n <span class=\"toggle-indicator\">\n @if (IsChannelEnabled('InApp')) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n </button>\n <!-- Email Toggle -->\n <button\n class=\"channel-toggle\"\n [class.active]=\"IsChannelEnabled('Email')\"\n [disabled]=\"Saving\"\n (click)=\"ToggleChannel('Email')\"\n type=\"button\"\n >\n <i [class]=\"GetChannelIcon('Email')\"></i>\n <span class=\"channel-label\">{{ GetChannelLabel('Email') }}</span>\n <span class=\"toggle-indicator\">\n @if (IsChannelEnabled('Email')) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n </button>\n <!-- SMS Toggle -->\n <button\n class=\"channel-toggle\"\n [class.active]=\"IsChannelEnabled('SMS')\"\n [disabled]=\"Saving\"\n (click)=\"ToggleChannel('SMS')\"\n type=\"button\"\n >\n <i [class]=\"GetChannelIcon('SMS')\"></i>\n <span class=\"channel-label\">{{ GetChannelLabel('SMS') }}</span>\n <span class=\"toggle-indicator\">\n @if (IsChannelEnabled('SMS')) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n </button>\n </div>\n <div class=\"card-footer\">\n <a href=\"/settings\" class=\"settings-link\">\n View all notification preferences\n <i class=\"fa-solid fa-arrow-right\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-explorer-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.32.0",
|
|
4
4
|
"description": "MemberJunction Explorer: Core Angular Components",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -32,46 +32,47 @@
|
|
|
32
32
|
"@angular/cdk": "21.1.3",
|
|
33
33
|
"@angular/platform-browser": "21.1.3",
|
|
34
34
|
"@auth0/auth0-angular": "^2.6.0",
|
|
35
|
-
"@memberjunction/ai-core-plus": "5.
|
|
36
|
-
"@memberjunction/ai-engine-base": "5.
|
|
37
|
-
"@memberjunction/communication-types": "5.
|
|
38
|
-
"@memberjunction/core": "5.
|
|
39
|
-
"@memberjunction/core-entities": "5.
|
|
40
|
-
"@memberjunction/entity-communications-client": "5.
|
|
41
|
-
"@memberjunction/export-engine": "5.
|
|
42
|
-
"@memberjunction/global": "5.
|
|
43
|
-
"@memberjunction/graphql-dataprovider": "5.
|
|
44
|
-
"@memberjunction/ng-ai-test-harness": "5.
|
|
45
|
-
"@memberjunction/ng-artifacts": "5.
|
|
46
|
-
"@memberjunction/ng-auth-services": "5.
|
|
47
|
-
"@memberjunction/ng-base-application": "5.
|
|
48
|
-
"@memberjunction/ng-base-forms": "5.
|
|
49
|
-
"@memberjunction/ng-
|
|
50
|
-
"@memberjunction/ng-
|
|
51
|
-
"@memberjunction/ng-
|
|
52
|
-
"@memberjunction/ng-
|
|
53
|
-
"@memberjunction/ng-
|
|
54
|
-
"@memberjunction/ng-entity-
|
|
55
|
-
"@memberjunction/ng-entity-
|
|
56
|
-
"@memberjunction/ng-
|
|
57
|
-
"@memberjunction/ng-
|
|
58
|
-
"@memberjunction/ng-
|
|
59
|
-
"@memberjunction/ng-
|
|
60
|
-
"@memberjunction/ng-
|
|
61
|
-
"@memberjunction/ng-
|
|
62
|
-
"@memberjunction/ng-
|
|
63
|
-
"@memberjunction/ng-
|
|
64
|
-
"@memberjunction/ng-
|
|
65
|
-
"@memberjunction/ng-record-
|
|
66
|
-
"@memberjunction/ng-record-
|
|
67
|
-
"@memberjunction/ng-
|
|
68
|
-
"@memberjunction/ng-
|
|
69
|
-
"@memberjunction/ng-
|
|
70
|
-
"@memberjunction/ng-shared
|
|
71
|
-
"@memberjunction/ng-
|
|
72
|
-
"@memberjunction/ng-
|
|
73
|
-
"@memberjunction/ng-
|
|
74
|
-
"@memberjunction/
|
|
35
|
+
"@memberjunction/ai-core-plus": "5.32.0",
|
|
36
|
+
"@memberjunction/ai-engine-base": "5.32.0",
|
|
37
|
+
"@memberjunction/communication-types": "5.32.0",
|
|
38
|
+
"@memberjunction/core": "5.32.0",
|
|
39
|
+
"@memberjunction/core-entities": "5.32.0",
|
|
40
|
+
"@memberjunction/entity-communications-client": "5.32.0",
|
|
41
|
+
"@memberjunction/export-engine": "5.32.0",
|
|
42
|
+
"@memberjunction/global": "5.32.0",
|
|
43
|
+
"@memberjunction/graphql-dataprovider": "5.32.0",
|
|
44
|
+
"@memberjunction/ng-ai-test-harness": "5.32.0",
|
|
45
|
+
"@memberjunction/ng-artifacts": "5.32.0",
|
|
46
|
+
"@memberjunction/ng-auth-services": "5.32.0",
|
|
47
|
+
"@memberjunction/ng-base-application": "5.32.0",
|
|
48
|
+
"@memberjunction/ng-base-forms": "5.32.0",
|
|
49
|
+
"@memberjunction/ng-base-types": "5.32.0",
|
|
50
|
+
"@memberjunction/ng-container-directives": "5.32.0",
|
|
51
|
+
"@memberjunction/ng-conversations": "5.32.0",
|
|
52
|
+
"@memberjunction/ng-dashboard-viewer": "5.32.0",
|
|
53
|
+
"@memberjunction/ng-dashboards": "5.32.0",
|
|
54
|
+
"@memberjunction/ng-entity-form-dialog": "5.32.0",
|
|
55
|
+
"@memberjunction/ng-entity-permissions": "5.32.0",
|
|
56
|
+
"@memberjunction/ng-entity-viewer": "5.32.0",
|
|
57
|
+
"@memberjunction/ng-explorer-settings": "5.32.0",
|
|
58
|
+
"@memberjunction/ng-export-service": "5.32.0",
|
|
59
|
+
"@memberjunction/ng-feedback": "5.32.0",
|
|
60
|
+
"@memberjunction/ng-file-storage": "5.32.0",
|
|
61
|
+
"@memberjunction/ng-generic-dialog": "5.32.0",
|
|
62
|
+
"@memberjunction/ng-list-detail-grid": "5.32.0",
|
|
63
|
+
"@memberjunction/ng-notifications": "5.32.0",
|
|
64
|
+
"@memberjunction/ng-query-viewer": "5.32.0",
|
|
65
|
+
"@memberjunction/ng-record-changes": "5.32.0",
|
|
66
|
+
"@memberjunction/ng-record-selector": "5.32.0",
|
|
67
|
+
"@memberjunction/ng-record-tags": "5.32.0",
|
|
68
|
+
"@memberjunction/ng-resource-permissions": "5.32.0",
|
|
69
|
+
"@memberjunction/ng-search": "5.32.0",
|
|
70
|
+
"@memberjunction/ng-shared": "5.32.0",
|
|
71
|
+
"@memberjunction/ng-shared-generic": "5.32.0",
|
|
72
|
+
"@memberjunction/ng-ui-components": "5.32.0",
|
|
73
|
+
"@memberjunction/ng-user-avatar": "5.32.0",
|
|
74
|
+
"@memberjunction/ng-word-cloud": "5.32.0",
|
|
75
|
+
"@memberjunction/templates-base-types": "5.32.0",
|
|
75
76
|
"golden-layout": "^2.6.0",
|
|
76
77
|
"rxjs": "^7.8.2",
|
|
77
78
|
"tslib": "^2.8.1"
|