@memberjunction/ng-explorer-core 5.31.0 → 5.33.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.
Files changed (41) hide show
  1. package/dist/generated/lazy-feature-config.d.ts +1 -1
  2. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  3. package/dist/generated/lazy-feature-config.js +13 -2
  4. package/dist/generated/lazy-feature-config.js.map +1 -1
  5. package/dist/lib/about/about-dialog.component.d.ts +82 -0
  6. package/dist/lib/about/about-dialog.component.d.ts.map +1 -0
  7. package/dist/lib/about/about-dialog.component.js +689 -0
  8. package/dist/lib/about/about-dialog.component.js.map +1 -0
  9. package/dist/lib/profile/profile-dialog.component.d.ts +72 -0
  10. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -0
  11. package/dist/lib/profile/profile-dialog.component.js +722 -0
  12. package/dist/lib/profile/profile-dialog.component.js.map +1 -0
  13. package/dist/lib/services/lazy-module-registry.d.ts +20 -0
  14. package/dist/lib/services/lazy-module-registry.d.ts.map +1 -1
  15. package/dist/lib/services/lazy-module-registry.js +43 -0
  16. package/dist/lib/services/lazy-module-registry.js.map +1 -1
  17. package/dist/lib/shell/services/about-dialog.service.d.ts +23 -0
  18. package/dist/lib/shell/services/about-dialog.service.d.ts.map +1 -0
  19. package/dist/lib/shell/services/about-dialog.service.js +45 -0
  20. package/dist/lib/shell/services/about-dialog.service.js.map +1 -0
  21. package/dist/lib/shell/services/profile-dialog.service.d.ts +22 -0
  22. package/dist/lib/shell/services/profile-dialog.service.d.ts.map +1 -0
  23. package/dist/lib/shell/services/profile-dialog.service.js +49 -0
  24. package/dist/lib/shell/services/profile-dialog.service.js.map +1 -0
  25. package/dist/lib/shell/shell.component.d.ts +7 -11
  26. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  27. package/dist/lib/shell/shell.component.js +69 -54
  28. package/dist/lib/shell/shell.component.js.map +1 -1
  29. package/dist/lib/user-menu/base-user-menu.d.ts +4 -13
  30. package/dist/lib/user-menu/base-user-menu.d.ts.map +1 -1
  31. package/dist/lib/user-menu/base-user-menu.js +26 -75
  32. package/dist/lib/user-menu/base-user-menu.js.map +1 -1
  33. package/dist/public-api.d.ts +4 -0
  34. package/dist/public-api.d.ts.map +1 -1
  35. package/dist/public-api.js +6 -0
  36. package/dist/public-api.js.map +1 -1
  37. package/package.json +42 -42
  38. package/dist/lib/shell/services/settings-dialog.service.d.ts +0 -28
  39. package/dist/lib/shell/services/settings-dialog.service.d.ts.map +0 -1
  40. package/dist/lib/shell/services/settings-dialog.service.js +0 -61
  41. package/dist/lib/shell/services/settings-dialog.service.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/profile/profile-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserRoleInfo } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport {\n MJUserNotificationPreferenceEntity,\n UserInfoEngine\n} from '@memberjunction/core-entities';\nimport { MJAuthBase } from '@memberjunction/ng-auth-services';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { ThemeService, SharedService, ThemeDefinition } from '@memberjunction/ng-shared';\nimport { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';\nimport { Subscription } from 'rxjs';\n\ninterface NotificationChannel {\n key: 'InApp' | 'Email' | 'SMS';\n label: string;\n icon: string;\n enabled: boolean;\n saving: boolean;\n}\n\ntype ProfilePanel = 'none' | 'photo' | 'theme';\n\n/**\n * \"Identity Card\" profile dialog with slide-in detail panels for editing\n * profile photo and switching theme. Replaces the legacy multi-tab Settings\n * dialog entirely. Brand-aligned with the About dialog.\n */\n@Component({\n selector: 'mj-profile-dialog',\n standalone: true,\n imports: [CommonModule, ExplorerSettingsModule],\n template: `\n<div class=\"mj-profile\" [class.mj-profile--panel-open]=\"ActivePanel !== 'none'\" role=\"document\">\n <button class=\"mj-profile__close\" type=\"button\" aria-label=\"Close\" (click)=\"OnCloseClick()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n\n <!-- ===== MAIN VIEW ===== -->\n <div class=\"mj-profile__main\">\n <div class=\"mj-profile__hero\">\n <h3 class=\"mj-profile__hero-title\">My Profile</h3>\n </div>\n\n <div class=\"mj-profile__avatar-zone\">\n @if (AvatarUrl) {\n <img class=\"mj-profile__avatar mj-profile__avatar--img\"\n [src]=\"AvatarUrl\" alt=\"\" (error)=\"OnAvatarLoadError()\" />\n } @else if (AvatarIconClass) {\n <div class=\"mj-profile__avatar mj-profile__avatar--icon\">\n <i [class]=\"AvatarIconClass\"></i>\n </div>\n } @else {\n <div class=\"mj-profile__avatar\">{{ UserInitials }}</div>\n }\n <button class=\"mj-profile__avatar-edit\" type=\"button\" title=\"Change photo\"\n (click)=\"OpenPanel('photo')\">\n <i class=\"fa-solid fa-camera\"></i>\n </button>\n </div>\n\n <div class=\"mj-profile__identity\">\n <h2 class=\"mj-profile__name\">{{ UserName }}</h2>\n <p class=\"mj-profile__email\">{{ UserEmail }}</p>\n @if (RoleChips.length > 0) {\n <div class=\"mj-profile__chips\">\n @for (chip of RoleChips; track chip.label) {\n <span class=\"mj-profile__chip\" [class]=\"'mj-profile__chip--' + chip.tone\">\n @if (chip.icon) { <i [class]=\"chip.icon\"></i> }\n {{ chip.label }}\n </span>\n }\n </div>\n }\n </div>\n\n <div class=\"mj-profile__field-list\">\n <div class=\"mj-profile__field\">\n <div class=\"mj-profile__field-icon\"><i class=\"fa-solid fa-id-badge\"></i></div>\n <div class=\"mj-profile__field-body\">\n <div class=\"mj-profile__field-label\">Account</div>\n <div class=\"mj-profile__field-value\">\n {{ AccountType }} · {{ AccountStatus }}\n @if (MemberSince) {\n <span class=\"mj-profile__field-muted\"> · {{ MemberSince }}</span>\n }\n </div>\n </div>\n </div>\n\n <button class=\"mj-profile__field mj-profile__field--button\" type=\"button\" (click)=\"OpenPanel('theme')\">\n <div class=\"mj-profile__field-icon\"><i class=\"fa-solid fa-palette\"></i></div>\n <div class=\"mj-profile__field-body\">\n <div class=\"mj-profile__field-label\">Theme</div>\n <div class=\"mj-profile__field-value\">{{ ThemeLabel }}</div>\n </div>\n <i class=\"fa-solid fa-chevron-right mj-profile__field-chev\"></i>\n </button>\n </div>\n\n <div class=\"mj-profile__section\">\n <div class=\"mj-profile__section-head\">\n <h4>Notifications</h4>\n @if (UnreadCount > 0) {\n <span class=\"mj-profile__unread\">{{ UnreadCount }} unread</span>\n }\n </div>\n @if (LoadingNotifications) {\n <div class=\"mj-profile__channels-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading…\n </div>\n } @else {\n <div class=\"mj-profile__channels\">\n @for (ch of Channels; track ch.key) {\n <button type=\"button\"\n class=\"mj-profile__channel\"\n [class.mj-profile__channel--on]=\"ch.enabled\"\n [disabled]=\"ch.saving\"\n (click)=\"ToggleChannel(ch)\">\n <div class=\"mj-profile__channel-icon\"><i [class]=\"ch.icon\"></i></div>\n <div class=\"mj-profile__channel-label\">{{ ch.label }}</div>\n <div class=\"mj-profile__channel-state\">\n @if (ch.saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <span class=\"mj-profile__switch\" [class.mj-profile__switch--on]=\"ch.enabled\">\n <span class=\"mj-profile__switch-knob\"></span>\n </span>\n }\n </div>\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"mj-profile__footer\">\n <button class=\"mj-profile__btn mj-profile__btn--danger\" type=\"button\" (click)=\"OnSignOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n Sign out\n </button>\n <span class=\"mj-profile__spacer\"></span>\n <button class=\"mj-profile__btn mj-profile__btn--primary\" type=\"button\" (click)=\"OnCloseClick()\">\n Done\n </button>\n </div>\n </div>\n\n <!-- ===== SLIDE-IN PANEL ===== -->\n <div class=\"mj-profile__panel\" [class.mj-profile__panel--open]=\"ActivePanel !== 'none'\">\n <div class=\"mj-profile__panel-header\">\n <button class=\"mj-profile__panel-back\" type=\"button\" aria-label=\"Back\" (click)=\"ClosePanel()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <h3 class=\"mj-profile__panel-title\">{{ PanelTitle }}</h3>\n </div>\n <div class=\"mj-profile__panel-body\">\n @if (ActivePanel === 'photo') {\n <mj-user-profile-settings></mj-user-profile-settings>\n } @else if (ActivePanel === 'theme') {\n <div class=\"mj-profile__themes\">\n @for (theme of ThemeOptions; track theme.id) {\n <button type=\"button\"\n class=\"mj-profile__theme\"\n [class.mj-profile__theme--active]=\"theme.id === ThemePreference\"\n [class.mj-profile__theme--saving]=\"SavingTheme === theme.id\"\n [disabled]=\"!!SavingTheme\"\n (click)=\"SelectTheme(theme.id)\">\n <div class=\"mj-profile__theme-swatch\" [class]=\"'mj-profile__theme-swatch--' + theme.swatch\">\n <i [class]=\"theme.icon\"></i>\n </div>\n <div class=\"mj-profile__theme-info\">\n <div class=\"mj-profile__theme-name\">{{ theme.name }}</div>\n @if (theme.description) {\n <div class=\"mj-profile__theme-desc\">{{ theme.description }}</div>\n }\n </div>\n @if (SavingTheme === theme.id) {\n <i class=\"fa-solid fa-spinner fa-spin mj-profile__theme-check\"></i>\n } @else if (theme.id === ThemePreference) {\n <i class=\"fa-solid fa-check mj-profile__theme-check\"></i>\n }\n </button>\n }\n </div>\n }\n </div>\n </div>\n</div>\n `,\n styles: [`\n:host {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-profile {\n display: block;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n height: 100%;\n min-height: 0;\n position: relative;\n font-family: inherit;\n overflow: hidden;\n}\n.mj-profile__close {\n position: absolute;\n top: 12px; right: 12px;\n width: 36px; height: 36px;\n border: none; border-radius: 8px;\n background: rgba(255, 255, 255, 0.18);\n backdrop-filter: blur(8px);\n color: #fff;\n cursor: pointer;\n font-size: 16px;\n display: flex; align-items: center; justify-content: center;\n transition: background 0.15s, opacity 0.2s;\n z-index: 4;\n}\n.mj-profile__close:hover { background: rgba(255, 255, 255, 0.3); }\n.mj-profile--panel-open .mj-profile__close { opacity: 0; pointer-events: none; }\n\n/* ============ MAIN VIEW ============ */\n.mj-profile__main {\n display: flex;\n flex-direction: column;\n height: 100%;\n transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mj-profile--panel-open .mj-profile__main {\n transform: translateX(-12%);\n pointer-events: none;\n}\n\n.mj-profile__hero {\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n padding: 22px 24px 56px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n}\n.mj-profile__hero::before {\n content: '';\n position: absolute;\n inset: -50%;\n background: radial-gradient(circle, rgba(255, 255, 255, 0.10) 0%, transparent 60%);\n animation: mj-profile-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-profile__hero::before { animation: none; }\n}\n@keyframes mj-profile-rotate { to { transform: rotate(360deg); } }\n\n.mj-profile__hero-title {\n margin: 0;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1.2px;\n opacity: 0.85;\n position: relative;\n z-index: 1;\n}\n\n.mj-profile__avatar-zone {\n position: relative;\n width: 96px;\n height: 96px;\n margin: -48px auto 12px;\n z-index: 2;\n}\n.mj-profile__avatar {\n width: 96px;\n height: 96px;\n border-radius: 50%;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n font-weight: 700;\n border: 4px solid var(--mj-bg-surface);\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);\n object-fit: cover;\n overflow: hidden;\n}\nimg.mj-profile__avatar { background: var(--mj-bg-surface-card); }\n.mj-profile__avatar--icon i { font-size: 36px; }\n\n.mj-profile__avatar-edit {\n position: absolute;\n bottom: 2px; right: 2px;\n width: 30px; height: 30px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n font-size: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n transition: transform 0.15s;\n}\n.mj-profile__avatar-edit:hover { transform: scale(1.1); }\n\n.mj-profile__identity {\n text-align: center;\n padding: 0 24px 16px;\n flex-shrink: 0;\n}\n.mj-profile__name {\n margin: 0 0 4px;\n font-size: 22px;\n font-weight: 700;\n letter-spacing: -0.4px;\n color: var(--mj-text-primary);\n}\n.mj-profile__email {\n margin: 0 0 12px;\n color: var(--mj-text-muted);\n font-size: 13px;\n word-break: break-all;\n}\n.mj-profile__chips {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n}\n.mj-profile__chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 9px;\n border-radius: 100px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__chip--admin {\n background: color-mix(in srgb, #f59e0b 14%, transparent);\n color: #b45309;\n}\n.mj-profile__chip--dev {\n background: color-mix(in srgb, #10b981 14%, transparent);\n color: #047857;\n}\n\n.mj-profile__field-list {\n padding: 0 24px;\n flex-shrink: 0;\n}\n.mj-profile__field {\n display: flex;\n align-items: center;\n padding: 12px 0;\n gap: 14px;\n border-top: 1px solid var(--mj-border-subtle);\n width: 100%;\n text-align: left;\n background: transparent;\n border-left: none;\n border-right: none;\n border-bottom: none;\n font-family: inherit;\n color: inherit;\n}\n.mj-profile__field:first-child { border-top: none; }\n.mj-profile__field--button {\n cursor: pointer;\n transition: background 0.12s;\n margin: 0 -8px;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 8px;\n border-top: none;\n}\n.mj-profile__field--button + .mj-profile__field--button { margin-top: 0; }\n.mj-profile__field--button:hover { background: var(--mj-bg-surface-hover); }\n.mj-profile__field--button:hover .mj-profile__field-chev { color: var(--mj-brand-primary); }\n.mj-profile__field-icon {\n width: 32px; height: 32px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n flex-shrink: 0;\n}\n.mj-profile__field-body { flex: 1; min-width: 0; }\n.mj-profile__field-label {\n font-size: 10.5px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n.mj-profile__field-value {\n font-size: 13px;\n color: var(--mj-text-primary);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mj-profile__field-muted { color: var(--mj-text-muted); }\n.mj-profile__field-chev {\n color: var(--mj-text-muted);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.mj-profile__section {\n padding: 16px 24px 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n.mj-profile__section-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.mj-profile__section-head h4 {\n margin: 0;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.6px;\n}\n.mj-profile__unread {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 100px;\n}\n.mj-profile__channels-loading {\n color: var(--mj-text-muted);\n font-size: 12.5px;\n padding: 12px;\n text-align: center;\n}\n.mj-profile__channels {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__channel {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n text-align: left;\n width: 100%;\n}\n.mj-profile__channel:hover:not(:disabled) {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__channel:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__channel-icon {\n width: 32px; height: 32px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n display: flex; align-items: center; justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n transition: all 0.15s;\n}\n.mj-profile__channel--on .mj-profile__channel-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__channel-label {\n flex: 1;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.mj-profile__channel-state {\n flex-shrink: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n min-width: 36px;\n display: flex; justify-content: flex-end; align-items: center;\n}\n\n.mj-profile__switch {\n width: 36px;\n height: 20px;\n background: var(--mj-border-strong);\n border-radius: 100px;\n position: relative;\n transition: background 0.2s;\n display: inline-block;\n}\n.mj-profile__switch-knob {\n position: absolute;\n top: 2px; left: 2px;\n width: 16px; height: 16px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.mj-profile__switch--on { background: var(--mj-brand-primary); }\n.mj-profile__switch--on .mj-profile__switch-knob { transform: translateX(16px); }\n\n.mj-profile__footer {\n border-top: 1px solid var(--mj-border-subtle);\n padding: 14px 20px;\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n.mj-profile__spacer { flex: 1; }\n.mj-profile__btn {\n padding: 9px 16px;\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n transition: all 0.15s;\n}\n.mj-profile__btn:hover { background: var(--mj-bg-surface-hover); border-color: var(--mj-border-strong); }\n.mj-profile__btn--primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n.mj-profile__btn--primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 88%, black);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 88%, black);\n}\n.mj-profile__btn--danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-border-default));\n}\n.mj-profile__btn--danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, transparent);\n border-color: var(--mj-status-error);\n}\n\n/* ============ SLIDE-IN PANEL ============ */\n.mj-profile__panel {\n position: absolute;\n inset: 0;\n background: var(--mj-bg-surface);\n transform: translateX(100%);\n transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n z-index: 3;\n}\n.mj-profile__panel--open {\n transform: translateX(0);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.06);\n}\n.mj-profile__panel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n.mj-profile__panel-back {\n width: 34px; height: 34px;\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n font-size: 13px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.mj-profile__panel-back:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.mj-profile__panel-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.mj-profile__panel-body {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n/* Theme picker */\n.mj-profile__themes {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__theme {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n text-align: left;\n width: 100%;\n font-family: inherit;\n}\n.mj-profile__theme:hover:not(:disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__theme:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__theme--active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface-card));\n}\n.mj-profile__theme-swatch {\n width: 40px; height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n flex-shrink: 0;\n border: 1px solid var(--mj-border-default);\n}\n.mj-profile__theme-swatch--light {\n background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);\n color: #f59e0b;\n}\n.mj-profile__theme-swatch--dark {\n background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);\n color: #94a3b8;\n border-color: #334155;\n}\n.mj-profile__theme-swatch--system {\n background: linear-gradient(135deg, #ffffff 0%, #ffffff 49%, #1e293b 51%, #0f172a 100%);\n color: var(--mj-text-secondary);\n}\n.mj-profile__theme-info { flex: 1; min-width: 0; }\n.mj-profile__theme-name {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-profile__theme-desc {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mj-profile__theme-check {\n color: var(--mj-brand-primary);\n font-size: 14px;\n flex-shrink: 0;\n}\n\n@media (max-width: 480px) {\n .mj-profile__hero { padding: 20px 18px 48px; }\n .mj-profile__avatar-zone { width: 88px; height: 88px; margin-top: -44px; }\n .mj-profile__avatar { width: 88px; height: 88px; font-size: 28px; }\n .mj-profile__name { font-size: 19px; }\n .mj-profile__field-list,\n .mj-profile__section { padding-left: 18px; padding-right: 18px; }\n .mj-profile__footer { padding: 12px 16px; }\n .mj-profile--panel-open .mj-profile__main { transform: translateX(-20%); }\n .mj-profile__panel-body { padding: 14px 16px 16px; }\n}\n `]\n})\nexport class ProfileDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Output() CloseRequested = new EventEmitter<void>();\n\n @Input() AvatarUrl: string | null = null;\n @Input() AvatarIconClass: string | null = null;\n\n public UserName = '';\n public UserEmail = '';\n public UserInitials = '?';\n public AccountType = '';\n public AccountStatus = '';\n public MemberSince = '';\n public ThemeLabel = '';\n public RoleChips: Array<{ label: string; tone: string; icon: string | null }> = [];\n\n public LoadingNotifications = true;\n public Channels: NotificationChannel[] = [\n { key: 'InApp', label: 'In-app', icon: 'fa-solid fa-bell', enabled: false, saving: false },\n { key: 'Email', label: 'Email', icon: 'fa-solid fa-envelope', enabled: false, saving: false },\n { key: 'SMS', label: 'SMS', icon: 'fa-solid fa-mobile', enabled: false, saving: false }\n ];\n public UnreadCount = 0;\n\n // Slide-in panel state\n public ActivePanel: ProfilePanel = 'none';\n public ThemeOptions: Array<{ id: string; name: string; description: string; icon: string; swatch: 'light' | 'dark' | 'system' }> = [];\n public ThemePreference = '';\n public SavingTheme: string | null = null;\n\n public get PanelTitle(): string {\n switch (this.ActivePanel) {\n case 'photo': return 'Profile photo';\n case 'theme': return 'Theme';\n default: return '';\n }\n }\n\n private authBase = inject(MJAuthBase);\n private themeService = inject(ThemeService);\n private sharedService = inject(SharedService);\n private cdr = inject(ChangeDetectorRef);\n\n private themeSub?: Subscription;\n\n public ngOnInit(): void {\n this.populateIdentity();\n this.populateThemeOptions();\n this.loadNotifications();\n this.themeSub = this.themeService.Preference$.subscribe(pref => {\n this.ThemePreference = pref;\n this.ThemeLabel = this.computeThemeLabel();\n this.cdr.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.themeSub?.unsubscribe();\n }\n\n public OnCloseClick(): void {\n if (this.ActivePanel !== 'none') {\n this.ClosePanel();\n return;\n }\n this.CloseRequested.emit();\n }\n\n public OnAvatarLoadError(): void {\n this.AvatarUrl = null;\n this.cdr.markForCheck();\n }\n\n public OpenPanel(panel: ProfilePanel): void {\n this.ActivePanel = panel;\n }\n\n public ClosePanel(): void {\n this.ActivePanel = 'none';\n }\n\n public async OnSignOut(): Promise<void> {\n try {\n localStorage.removeItem('auth');\n localStorage.removeItem('claims');\n await this.authBase.logout();\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Sign out failed: ${msg}`, 'error', 3000);\n }\n }\n\n public async SelectTheme(themeId: string): Promise<void> {\n if (this.SavingTheme) return;\n if (themeId === this.ThemePreference) return;\n this.SavingTheme = themeId;\n this.cdr.markForCheck();\n try {\n await this.themeService.SetTheme(themeId);\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Theme change failed: ${msg}`, 'error', 3000);\n } finally {\n this.SavingTheme = null;\n this.cdr.markForCheck();\n }\n }\n\n public async ToggleChannel(channel: NotificationChannel): Promise<void> {\n if (channel.saving) return;\n const newState = !channel.enabled;\n channel.saving = true;\n this.cdr.markForCheck();\n\n const provider = this.ProviderToUse;\n const currentUser = provider?.CurrentUser;\n if (!provider || !currentUser) {\n channel.saving = false;\n return;\n }\n\n try {\n const transGroup = await provider.CreateTransactionGroup();\n const types = UserInfoEngine.Instance.NotificationTypes;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n\n for (const type of types) {\n if (type.AllowUserPreference === false) continue;\n\n let pref = preferences.find(p => UUIDsEqual(p.NotificationTypeID, type.ID));\n if (!pref) {\n pref = await provider.GetEntityObject<MJUserNotificationPreferenceEntity>(\n 'MJ: User Notification Preferences'\n );\n pref.UserID = currentUser.ID;\n pref.NotificationTypeID = type.ID;\n pref.InAppEnabled = type.DefaultInApp ?? true;\n pref.EmailEnabled = type.DefaultEmail ?? false;\n pref.SMSEnabled = type.DefaultSMS ?? false;\n }\n\n if (channel.key === 'InApp') pref.InAppEnabled = newState;\n else if (channel.key === 'Email') pref.EmailEnabled = newState;\n else pref.SMSEnabled = newState;\n\n pref.Enabled = pref.InAppEnabled || pref.EmailEnabled || pref.SMSEnabled;\n pref.TransactionGroup = transGroup;\n pref.Save();\n }\n\n const success = await transGroup.Submit();\n if (success) {\n channel.enabled = newState;\n this.sharedService.CreateSimpleNotification(\n `${channel.label} notifications ${newState ? 'enabled' : 'disabled'}`,\n 'success',\n 2000\n );\n } else {\n throw new Error('Save failed');\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Update failed: ${msg}`, 'error', 3000);\n await this.loadNotifications();\n } finally {\n channel.saving = false;\n this.cdr.markForCheck();\n }\n }\n\n // ---------- private helpers ----------\n\n private populateIdentity(): void {\n const provider = this.ProviderToUse;\n const user = provider?.CurrentUser;\n if (user) {\n const name = user.Name || `${user.FirstName ?? ''} ${user.LastName ?? ''}`.trim();\n this.UserName = name || 'User';\n this.UserEmail = user.Email || '';\n this.UserInitials = this.computeInitials(this.UserName);\n this.AccountType = user.Type || 'User';\n this.AccountStatus = user.IsActive ? 'Active' : 'Inactive';\n this.MemberSince = this.formatMemberSince(user.__mj_CreatedAt);\n this.RoleChips = this.computeRoleChips(user.UserRoles);\n }\n this.ThemePreference = this.themeService.Preference;\n this.ThemeLabel = this.computeThemeLabel();\n }\n\n private populateThemeOptions(): void {\n const themes: ThemeDefinition[] = this.themeService.AvailableThemes ?? [];\n this.ThemeOptions = themes.map(t => ({\n id: t.Id,\n name: t.Name,\n description: t.Description ?? (t.BaseTheme === 'dark' ? 'Dark interface' : 'Light interface'),\n icon: t.BaseTheme === 'dark' ? 'fa-solid fa-moon' : 'fa-solid fa-sun',\n swatch: t.BaseTheme as 'light' | 'dark'\n }));\n this.ThemeOptions.push({\n id: 'system',\n name: 'System',\n description: 'Follow your operating system',\n icon: 'fa-solid fa-desktop',\n swatch: 'system'\n });\n }\n\n private async loadNotifications(): Promise<void> {\n this.LoadingNotifications = true;\n try {\n this.UnreadCount = UserInfoEngine.Instance.UnreadNotificationCount ?? 0;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n const types = UserInfoEngine.Instance.NotificationTypes;\n\n let inApp: boolean, email: boolean, sms: boolean;\n if (preferences.length === 0 && types.length > 0) {\n inApp = types.some(t => t.DefaultInApp ?? true);\n email = types.some(t => t.DefaultEmail ?? false);\n sms = types.some(t => t.DefaultSMS ?? false);\n } else {\n inApp = preferences.some(p => p.InAppEnabled);\n email = preferences.some(p => p.EmailEnabled);\n sms = preferences.some(p => p.SMSEnabled);\n }\n\n this.Channels[0].enabled = inApp;\n this.Channels[1].enabled = email;\n this.Channels[2].enabled = sms;\n } catch {\n // non-fatal; leave defaults\n } finally {\n this.LoadingNotifications = false;\n this.cdr.markForCheck();\n }\n }\n\n private computeInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return '?';\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n }\n\n private computeRoleChips(roles: UserRoleInfo[] | undefined): Array<{ label: string; tone: string; icon: string | null }> {\n if (!roles || roles.length === 0) return [];\n return roles\n .map(r => r.Role)\n .filter((n): n is string => !!n)\n .map(roleName => {\n const lower = roleName.toLowerCase();\n if (lower.includes('admin')) return { label: roleName, tone: 'admin', icon: 'fa-solid fa-shield' };\n if (lower.includes('developer') || lower.includes('integration')) return { label: roleName, tone: 'dev', icon: 'fa-solid fa-code' };\n return { label: roleName, tone: '', icon: null };\n });\n }\n\n private formatMemberSince(date: Date | string | null | undefined): string {\n if (!date) return '';\n const d = date instanceof Date ? date : new Date(date);\n if (isNaN(d.getTime())) return '';\n return d.toLocaleDateString(undefined, { month: 'short', year: 'numeric' });\n }\n\n private computeThemeLabel(): string {\n const applied = this.themeService.AppliedTheme;\n const preference = this.themeService.Preference;\n const def = this.themeService.GetThemeDefinition(applied);\n const themeName = def?.Name ?? applied;\n return preference === 'system' ? `${themeName} · System` : themeName;\n }\n}\n"]}
@@ -29,6 +29,26 @@ export declare class LazyModuleRegistry {
29
29
  * with the compound key (baseClassName::key) to trigger lazy loading.
30
30
  */
31
31
  WireToClassFactory(): void;
32
+ /**
33
+ * Read-only snapshot of the registry state — for diagnostic tools.
34
+ * Groups compound keys by chunk (the underlying loader function) so
35
+ * inspectors can show "X chunks, Y loaded" plus the keys covered by each.
36
+ */
37
+ GetSnapshot(): {
38
+ registered: string[];
39
+ loaded: string[];
40
+ chunks: Array<{
41
+ chunkId: string;
42
+ loaded: boolean;
43
+ keys: string[];
44
+ }>;
45
+ chunkCount: number;
46
+ };
47
+ /**
48
+ * Programmatically trigger a lazy chunk load by compound key. Returns true
49
+ * on success. Useful for dev tools that want to "preload" a chunk.
50
+ */
51
+ ForceLoad(compoundKey: string): Promise<boolean>;
32
52
  /**
33
53
  * Attempt to lazy-load the chunk for a given compound key.
34
54
  * Returns true if the key was found in the registry and loaded.
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-module-registry.d.ts","sourceRoot":"","sources":["../../../src/lib/services/lazy-module-registry.ts"],"names":[],"mappings":";AAGA;;;;;;;;GAQG;AACH,qBACa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAoC;IAExD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IAMjE;;;;;OAKG;IACH,kBAAkB,IAAI,IAAI;IAM1B;;;;;;OAMG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;yCA1CtC,kBAAkB;6CAAlB,kBAAkB;CAoE9B"}
1
+ {"version":3,"file":"lazy-module-registry.d.ts","sourceRoot":"","sources":["../../../src/lib/services/lazy-module-registry.ts"],"names":[],"mappings":";AAGA;;;;;;;;GAQG;AACH,qBACa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAoC;IAExD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;IAMjE;;;;;OAKG;IACH,kBAAkB,IAAI,IAAI;IAU1B;;;;OAIG;IACH,WAAW,IAAI;QACb,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QACpE,UAAU,EAAE,MAAM,CAAC;KACpB;IA8BD;;;OAGG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItD;;;;;;OAMG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;yCA9FtC,kBAAkB;6CAAlB,kBAAkB;CAwH9B"}
@@ -38,6 +38,49 @@ export class LazyModuleRegistry {
38
38
  */
39
39
  WireToClassFactory() {
40
40
  MJGlobal.Instance.ClassFactory.RegisterLazyLoader((baseClassName, key) => this.Load(`${baseClassName}::${key}`));
41
+ // Publish to a well-known global so introspection tools (e.g. the Admin
42
+ // app's "Lazy Loading" inspector in ng-dashboards) can read the snapshot
43
+ // without creating a hard package dependency on explorer-core. Dev tools only.
44
+ globalThis.__mj_lazy_registry__ = this;
45
+ }
46
+ /**
47
+ * Read-only snapshot of the registry state — for diagnostic tools.
48
+ * Groups compound keys by chunk (the underlying loader function) so
49
+ * inspectors can show "X chunks, Y loaded" plus the keys covered by each.
50
+ */
51
+ GetSnapshot() {
52
+ const byChunk = new Map();
53
+ for (const [compoundKey, loader] of this.registry.entries()) {
54
+ const id = loader.toString();
55
+ const arr = byChunk.get(id) ?? [];
56
+ arr.push(compoundKey);
57
+ byChunk.set(id, arr);
58
+ }
59
+ const chunks = Array.from(byChunk.entries())
60
+ .map(([chunkId, keys]) => ({
61
+ chunkId,
62
+ loaded: this.loadedChunks.has(chunkId),
63
+ keys: keys.sort()
64
+ }))
65
+ .sort((a, b) => b.keys.length - a.keys.length);
66
+ const loaded = [];
67
+ for (const c of chunks) {
68
+ if (c.loaded)
69
+ loaded.push(...c.keys);
70
+ }
71
+ return {
72
+ registered: Array.from(this.registry.keys()).sort(),
73
+ loaded: loaded.sort(),
74
+ chunks,
75
+ chunkCount: this.loadedChunks.size
76
+ };
77
+ }
78
+ /**
79
+ * Programmatically trigger a lazy chunk load by compound key. Returns true
80
+ * on success. Useful for dev tools that want to "preload" a chunk.
81
+ */
82
+ async ForceLoad(compoundKey) {
83
+ return this.Load(compoundKey);
41
84
  }
42
85
  /**
43
86
  * Attempt to lazy-load the chunk for a given compound key.
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-module-registry.js","sourceRoot":"","sources":["../../../src/lib/services/lazy-module-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;;AAElD;;;;;;;;GAQG;AAEH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAClD,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IAExD;;;;OAIG;IACH,QAAQ,CAAC,WAAmB,EAAE,MAA2B;QACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAA6C;QACxD,KAAK,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,kBAAkB;QAChB,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAC/C,CAAC,aAAqB,EAAE,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,KAAK,GAAG,EAAE,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,iFAAiF;QACjF,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjD,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7C,MAAM,WAAW,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;4GAnEU,kBAAkB;gEAAlB,kBAAkB,WAAlB,kBAAkB,mBADL,MAAM;;iFACnB,kBAAkB;cAD9B,UAAU;eAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["import { Injectable } from '@angular/core';\nimport { MJGlobal } from '@memberjunction/global';\n\n/**\n * Registry that maps compound keys (BaseClassName::Key) to dynamic import() loaders.\n *\n * Wired to ClassFactory via `WireToClassFactory()` so that any `GetRegistrationAsync()`\n * or `CreateInstanceAsync()` call that misses synchronously will automatically trigger\n * the correct lazy chunk load. This replaces the previous pattern where individual\n * components (ResourceContainerComponent, TabContainerComponent, etc.) each had their\n * own retry logic.\n */\n@Injectable({ providedIn: 'root' })\nexport class LazyModuleRegistry {\n private registry = new Map<string, () => Promise<void>>();\n private loadedChunks = new Set<string>();\n private pendingLoads = new Map<string, Promise<void>>();\n\n /**\n * Register a single compound key with its loader function.\n * @param compoundKey Format: \"BaseClassName::Key\" (e.g., \"BaseResourceComponent::HomeDashboard\")\n * @param loader Dynamic import function that loads the chunk containing the class\n */\n Register(compoundKey: string, loader: () => Promise<void>): void {\n this.registry.set(compoundKey, loader);\n }\n\n /**\n * Register multiple compound keys at once (from the generated LAZY_FEATURE_CONFIG).\n */\n RegisterBulk(mappings: Record<string, () => Promise<void>>): void {\n for (const [compoundKey, loader] of Object.entries(mappings)) {\n this.registry.set(compoundKey, loader);\n }\n }\n\n /**\n * Wires this registry to ClassFactory as a lazy loader.\n * After calling this, any `ClassFactory.GetRegistrationAsync()` or `CreateInstanceAsync()`\n * that fails to find a registration synchronously will call back into this registry\n * with the compound key (baseClassName::key) to trigger lazy loading.\n */\n WireToClassFactory(): void {\n MJGlobal.Instance.ClassFactory.RegisterLazyLoader(\n (baseClassName: string, key: string) => this.Load(`${baseClassName}::${key}`)\n );\n }\n\n /**\n * Attempt to lazy-load the chunk for a given compound key.\n * Returns true if the key was found in the registry and loaded.\n * Deduplicates concurrent loads of the same chunk.\n *\n * @param compoundKey Format: \"BaseClassName::Key\" (e.g., \"BaseResourceComponent::HomeDashboard\")\n */\n async Load(compoundKey: string): Promise<boolean> {\n const loader = this.registry.get(compoundKey);\n if (!loader) return false;\n\n // Use the loader function's string representation as chunk key for deduplication\n // (multiple compound keys can share the same loader/chunk)\n const chunkKey = loader.toString();\n\n if (this.loadedChunks.has(chunkKey)) return true;\n\n // Deduplicate concurrent loads\n const pending = this.pendingLoads.get(chunkKey);\n if (pending) {\n await pending;\n return true;\n }\n\n const loadPromise = loader().then(() => {\n this.loadedChunks.add(chunkKey);\n this.pendingLoads.delete(chunkKey);\n });\n\n this.pendingLoads.set(chunkKey, loadPromise);\n await loadPromise;\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"lazy-module-registry.js","sourceRoot":"","sources":["../../../src/lib/services/lazy-module-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { MJGlobal } from '@memberjunction/global';\n\n/**\n * Registry that maps compound keys (BaseClassName::Key) to dynamic import() loaders.\n *\n * Wired to ClassFactory via `WireToClassFactory()` so that any `GetRegistrationAsync()`\n * or `CreateInstanceAsync()` call that misses synchronously will automatically trigger\n * the correct lazy chunk load. This replaces the previous pattern where individual\n * components (ResourceContainerComponent, TabContainerComponent, etc.) each had their\n * own retry logic.\n */\n@Injectable({ providedIn: 'root' })\nexport class LazyModuleRegistry {\n private registry = new Map<string, () => Promise<void>>();\n private loadedChunks = new Set<string>();\n private pendingLoads = new Map<string, Promise<void>>();\n\n /**\n * Register a single compound key with its loader function.\n * @param compoundKey Format: \"BaseClassName::Key\" (e.g., \"BaseResourceComponent::HomeDashboard\")\n * @param loader Dynamic import function that loads the chunk containing the class\n */\n Register(compoundKey: string, loader: () => Promise<void>): void {\n this.registry.set(compoundKey, loader);\n }\n\n /**\n * Register multiple compound keys at once (from the generated LAZY_FEATURE_CONFIG).\n */\n RegisterBulk(mappings: Record<string, () => Promise<void>>): void {\n for (const [compoundKey, loader] of Object.entries(mappings)) {\n this.registry.set(compoundKey, loader);\n }\n }\n\n /**\n * Wires this registry to ClassFactory as a lazy loader.\n * After calling this, any `ClassFactory.GetRegistrationAsync()` or `CreateInstanceAsync()`\n * that fails to find a registration synchronously will call back into this registry\n * with the compound key (baseClassName::key) to trigger lazy loading.\n */\n WireToClassFactory(): void {\n MJGlobal.Instance.ClassFactory.RegisterLazyLoader(\n (baseClassName: string, key: string) => this.Load(`${baseClassName}::${key}`)\n );\n // Publish to a well-known global so introspection tools (e.g. the Admin\n // app's \"Lazy Loading\" inspector in ng-dashboards) can read the snapshot\n // without creating a hard package dependency on explorer-core. Dev tools only.\n (globalThis as { __mj_lazy_registry__?: LazyModuleRegistry }).__mj_lazy_registry__ = this;\n }\n\n /**\n * Read-only snapshot of the registry state — for diagnostic tools.\n * Groups compound keys by chunk (the underlying loader function) so\n * inspectors can show \"X chunks, Y loaded\" plus the keys covered by each.\n */\n GetSnapshot(): {\n registered: string[];\n loaded: string[];\n chunks: Array<{ chunkId: string; loaded: boolean; keys: string[] }>;\n chunkCount: number;\n } {\n const byChunk = new Map<string, string[]>();\n for (const [compoundKey, loader] of this.registry.entries()) {\n const id = loader.toString();\n const arr = byChunk.get(id) ?? [];\n arr.push(compoundKey);\n byChunk.set(id, arr);\n }\n\n const chunks = Array.from(byChunk.entries())\n .map(([chunkId, keys]) => ({\n chunkId,\n loaded: this.loadedChunks.has(chunkId),\n keys: keys.sort()\n }))\n .sort((a, b) => b.keys.length - a.keys.length);\n\n const loaded: string[] = [];\n for (const c of chunks) {\n if (c.loaded) loaded.push(...c.keys);\n }\n\n return {\n registered: Array.from(this.registry.keys()).sort(),\n loaded: loaded.sort(),\n chunks,\n chunkCount: this.loadedChunks.size\n };\n }\n\n /**\n * Programmatically trigger a lazy chunk load by compound key. Returns true\n * on success. Useful for dev tools that want to \"preload\" a chunk.\n */\n async ForceLoad(compoundKey: string): Promise<boolean> {\n return this.Load(compoundKey);\n }\n\n /**\n * Attempt to lazy-load the chunk for a given compound key.\n * Returns true if the key was found in the registry and loaded.\n * Deduplicates concurrent loads of the same chunk.\n *\n * @param compoundKey Format: \"BaseClassName::Key\" (e.g., \"BaseResourceComponent::HomeDashboard\")\n */\n async Load(compoundKey: string): Promise<boolean> {\n const loader = this.registry.get(compoundKey);\n if (!loader) return false;\n\n // Use the loader function's string representation as chunk key for deduplication\n // (multiple compound keys can share the same loader/chunk)\n const chunkKey = loader.toString();\n\n if (this.loadedChunks.has(chunkKey)) return true;\n\n // Deduplicate concurrent loads\n const pending = this.pendingLoads.get(chunkKey);\n if (pending) {\n await pending;\n return true;\n }\n\n const loadPromise = loader().then(() => {\n this.loadedChunks.add(chunkKey);\n this.pendingLoads.delete(chunkKey);\n });\n\n this.pendingLoads.set(chunkKey, loadPromise);\n await loadPromise;\n return true;\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import { ViewContainerRef } from '@angular/core';
2
+ import { MJDialogService } from '@memberjunction/ng-ui-components';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Opens the About MemberJunction dialog. The dialog is rendered without an
6
+ * MJDialog title bar — its hero header is the title — and closes on backdrop
7
+ * click or when the AboutDialogComponent emits {@link AboutDialogComponent.CloseRequested}.
8
+ */
9
+ export interface AboutDialogOpenOptions {
10
+ avatarUrl?: string | null;
11
+ avatarIconClass?: string | null;
12
+ }
13
+ export declare class AboutDialogService {
14
+ private dialogService;
15
+ private dialogRef;
16
+ constructor(dialogService: MJDialogService);
17
+ open(containerRef: ViewContainerRef, options?: AboutDialogOpenOptions): void;
18
+ close(): void;
19
+ get isOpen(): boolean;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<AboutDialogService, never>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<AboutDialogService>;
22
+ }
23
+ //# sourceMappingURL=about-dialog.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"about-dialog.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/shell/services/about-dialog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAe,MAAM,kCAAkC,CAAC;;AAGhF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,qBACa,kBAAkB;IAGf,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,SAAS,CAA4B;gBAEzB,aAAa,EAAE,eAAe;IAE3C,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,GAAE,sBAA2B,GAAG,IAAI;IAqBhF,KAAK,IAAI,IAAI;IAOpB,IAAW,MAAM,IAAI,OAAO,CAE3B;yCAnCQ,kBAAkB;6CAAlB,kBAAkB;CAoC9B"}
@@ -0,0 +1,45 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AboutDialogComponent } from '../../about/about-dialog.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@memberjunction/ng-ui-components";
5
+ export class AboutDialogService {
6
+ dialogService;
7
+ dialogRef = null;
8
+ constructor(dialogService) {
9
+ this.dialogService = dialogService;
10
+ }
11
+ open(containerRef, options = {}) {
12
+ if (this.dialogRef)
13
+ return;
14
+ this.dialogRef = this.dialogService.open({
15
+ content: AboutDialogComponent,
16
+ width: 520,
17
+ appendTo: containerRef
18
+ });
19
+ const instance = this.dialogRef.Content?.instance;
20
+ if (instance) {
21
+ instance.AvatarUrl = options.avatarUrl ?? null;
22
+ instance.AvatarIconClass = options.avatarIconClass ?? null;
23
+ instance.CloseRequested.subscribe(() => this.close());
24
+ }
25
+ this.dialogRef.Result.subscribe(() => {
26
+ this.dialogRef = null;
27
+ });
28
+ }
29
+ close() {
30
+ if (this.dialogRef) {
31
+ this.dialogRef.Close();
32
+ this.dialogRef = null;
33
+ }
34
+ }
35
+ get isOpen() {
36
+ return this.dialogRef !== null;
37
+ }
38
+ static ɵfac = function AboutDialogService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AboutDialogService)(i0.ɵɵinject(i1.MJDialogService)); };
39
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AboutDialogService, factory: AboutDialogService.ɵfac, providedIn: 'root' });
40
+ }
41
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AboutDialogService, [{
42
+ type: Injectable,
43
+ args: [{ providedIn: 'root' }]
44
+ }], () => [{ type: i1.MJDialogService }], null); })();
45
+ //# sourceMappingURL=about-dialog.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"about-dialog.service.js","sourceRoot":"","sources":["../../../../src/lib/shell/services/about-dialog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;;;AAa1E,MAAM,OAAO,kBAAkB;IAGP;IAFZ,SAAS,GAAuB,IAAI,CAAC;IAE7C,YAAoB,aAA8B;QAA9B,kBAAa,GAAb,aAAa,CAAiB;IAAG,CAAC;IAE/C,IAAI,CAAC,YAA8B,EAAE,UAAkC,EAAE;QAC5E,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACrC,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,YAAY;SACzB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAA4C,CAAC;QACtF,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;YAC/C,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;YAC3D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACnC,CAAC;4GAnCQ,kBAAkB;gEAAlB,kBAAkB,WAAlB,kBAAkB,mBADL,MAAM;;iFACnB,kBAAkB;cAD9B,UAAU;eAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["import { Injectable, ViewContainerRef } from '@angular/core';\nimport { MJDialogService, MJDialogRef } from '@memberjunction/ng-ui-components';\nimport { AboutDialogComponent } from '../../about/about-dialog.component';\n\n/**\n * Opens the About MemberJunction dialog. The dialog is rendered without an\n * MJDialog title bar — its hero header is the title — and closes on backdrop\n * click or when the AboutDialogComponent emits {@link AboutDialogComponent.CloseRequested}.\n */\nexport interface AboutDialogOpenOptions {\n avatarUrl?: string | null;\n avatarIconClass?: string | null;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AboutDialogService {\n private dialogRef: MJDialogRef | null = null;\n\n constructor(private dialogService: MJDialogService) {}\n\n public open(containerRef: ViewContainerRef, options: AboutDialogOpenOptions = {}): void {\n if (this.dialogRef) return;\n\n this.dialogRef = this.dialogService.open({\n content: AboutDialogComponent,\n width: 520,\n appendTo: containerRef\n });\n\n const instance = this.dialogRef.Content?.instance as AboutDialogComponent | undefined;\n if (instance) {\n instance.AvatarUrl = options.avatarUrl ?? null;\n instance.AvatarIconClass = options.avatarIconClass ?? null;\n instance.CloseRequested.subscribe(() => this.close());\n }\n\n this.dialogRef.Result.subscribe(() => {\n this.dialogRef = null;\n });\n }\n\n public close(): void {\n if (this.dialogRef) {\n this.dialogRef.Close();\n this.dialogRef = null;\n }\n }\n\n public get isOpen(): boolean {\n return this.dialogRef !== null;\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { ViewContainerRef } from '@angular/core';
2
+ import { MJDialogService } from '@memberjunction/ng-ui-components';
3
+ import * as i0 from "@angular/core";
4
+ export interface ProfileDialogOpenOptions {
5
+ avatarUrl?: string | null;
6
+ avatarIconClass?: string | null;
7
+ }
8
+ /**
9
+ * Opens the Identity Card profile dialog. Photo and theme editing happen via
10
+ * slide-in panels inside the dialog itself — no external dialog services needed.
11
+ */
12
+ export declare class ProfileDialogService {
13
+ private dialogService;
14
+ private dialogRef;
15
+ constructor(dialogService: MJDialogService);
16
+ open(containerRef: ViewContainerRef, options?: ProfileDialogOpenOptions): void;
17
+ close(): void;
18
+ get isOpen(): boolean;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProfileDialogService, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProfileDialogService>;
21
+ }
22
+ //# sourceMappingURL=profile-dialog.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-dialog.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/shell/services/profile-dialog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAe,MAAM,kCAAkC,CAAC;;AAGhF,MAAM,WAAW,wBAAwB;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;GAGG;AACH,qBACa,oBAAoB;IAGjB,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,SAAS,CAA4B;gBAEzB,aAAa,EAAE,eAAe;IAE3C,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,GAAE,wBAA6B,GAAG,IAAI;IAqBlF,KAAK,IAAI,IAAI;IAOpB,IAAW,MAAM,IAAI,OAAO,CAE3B;yCAnCQ,oBAAoB;6CAApB,oBAAoB;CAoChC"}
@@ -0,0 +1,49 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ProfileDialogComponent } from '../../profile/profile-dialog.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@memberjunction/ng-ui-components";
5
+ /**
6
+ * Opens the Identity Card profile dialog. Photo and theme editing happen via
7
+ * slide-in panels inside the dialog itself — no external dialog services needed.
8
+ */
9
+ export class ProfileDialogService {
10
+ dialogService;
11
+ dialogRef = null;
12
+ constructor(dialogService) {
13
+ this.dialogService = dialogService;
14
+ }
15
+ open(containerRef, options = {}) {
16
+ if (this.dialogRef)
17
+ return;
18
+ this.dialogRef = this.dialogService.open({
19
+ content: ProfileDialogComponent,
20
+ width: 520,
21
+ appendTo: containerRef
22
+ });
23
+ const instance = this.dialogRef.Content?.instance;
24
+ if (instance) {
25
+ instance.AvatarUrl = options.avatarUrl ?? null;
26
+ instance.AvatarIconClass = options.avatarIconClass ?? null;
27
+ instance.CloseRequested.subscribe(() => this.close());
28
+ }
29
+ this.dialogRef.Result.subscribe(() => {
30
+ this.dialogRef = null;
31
+ });
32
+ }
33
+ close() {
34
+ if (this.dialogRef) {
35
+ this.dialogRef.Close();
36
+ this.dialogRef = null;
37
+ }
38
+ }
39
+ get isOpen() {
40
+ return this.dialogRef !== null;
41
+ }
42
+ static ɵfac = function ProfileDialogService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ProfileDialogService)(i0.ɵɵinject(i1.MJDialogService)); };
43
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ProfileDialogService, factory: ProfileDialogService.ɵfac, providedIn: 'root' });
44
+ }
45
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfileDialogService, [{
46
+ type: Injectable,
47
+ args: [{ providedIn: 'root' }]
48
+ }], () => [{ type: i1.MJDialogService }], null); })();
49
+ //# sourceMappingURL=profile-dialog.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-dialog.service.js","sourceRoot":"","sources":["../../../../src/lib/shell/services/profile-dialog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;;;AAOhF;;;GAGG;AAEH,MAAM,OAAO,oBAAoB;IAGT;IAFZ,SAAS,GAAuB,IAAI,CAAC;IAE7C,YAAoB,aAA8B;QAA9B,kBAAa,GAAb,aAAa,CAAiB;IAAG,CAAC;IAE/C,IAAI,CAAC,YAA8B,EAAE,UAAoC,EAAE;QAC9E,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACrC,OAAO,EAAE,sBAAsB;YAC/B,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,YAAY;SACzB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAA8C,CAAC;QACxF,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;YAC/C,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;YAC3D,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACnC,CAAC;8GAnCQ,oBAAoB;gEAApB,oBAAoB,WAApB,oBAAoB,mBADP,MAAM;;iFACnB,oBAAoB;cADhC,UAAU;eAAC,EAAE,UAAU,EAAE,MAAM,EAAE","sourcesContent":["import { Injectable, ViewContainerRef } from '@angular/core';\nimport { MJDialogService, MJDialogRef } from '@memberjunction/ng-ui-components';\nimport { ProfileDialogComponent } from '../../profile/profile-dialog.component';\n\nexport interface ProfileDialogOpenOptions {\n avatarUrl?: string | null;\n avatarIconClass?: string | null;\n}\n\n/**\n * Opens the Identity Card profile dialog. Photo and theme editing happen via\n * slide-in panels inside the dialog itself — no external dialog services needed.\n */\n@Injectable({ providedIn: 'root' })\nexport class ProfileDialogService {\n private dialogRef: MJDialogRef | null = null;\n\n constructor(private dialogService: MJDialogService) {}\n\n public open(containerRef: ViewContainerRef, options: ProfileDialogOpenOptions = {}): void {\n if (this.dialogRef) return;\n\n this.dialogRef = this.dialogService.open({\n content: ProfileDialogComponent,\n width: 520,\n appendTo: containerRef\n });\n\n const instance = this.dialogRef.Content?.instance as ProfileDialogComponent | undefined;\n if (instance) {\n instance.AvatarUrl = options.avatarUrl ?? null;\n instance.AvatarIconClass = options.avatarIconClass ?? null;\n instance.CloseRequested.subscribe(() => this.close());\n }\n\n this.dialogRef.Result.subscribe(() => {\n this.dialogRef = null;\n });\n }\n\n public close(): void {\n if (this.dialogRef) {\n this.dialogRef.Close();\n this.dialogRef = null;\n }\n }\n\n public get isOpen(): boolean {\n return this.dialogRef !== null;\n }\n}\n"]}
@@ -8,8 +8,9 @@ import { LogoGradient } from '@memberjunction/ng-shared-generic';
8
8
  import { NavItemClickEvent } from './components/header/app-nav.component';
9
9
  import { MJAuthBase } from '@memberjunction/ng-auth-services';
10
10
  import { UserAvatarService } from '@memberjunction/ng-user-avatar';
11
- import { SettingsDialogService } from './services/settings-dialog.service';
12
11
  import { UserSharingCenterDialogService } from './services/user-sharing-center-dialog.service';
12
+ import { AboutDialogService } from './services/about-dialog.service';
13
+ import { ProfileDialogService } from './services/profile-dialog.service';
13
14
  import { AppAccessDialogComponent, AppAccessDialogResult } from './components/dialogs/app-access-dialog.component';
14
15
  import { TabContainerComponent } from './components/tabs/tab-container.component';
15
16
  import { UserMenuElement, UserMenuItem } from '../user-menu';
@@ -37,8 +38,9 @@ export declare class ShellComponent extends BaseAngularComponent implements OnIn
37
38
  private authBase;
38
39
  private cdr;
39
40
  private userAvatarService;
40
- private settingsDialogService;
41
41
  private userSharingCenterDialogService;
42
+ private aboutDialogService;
43
+ private profileDialogService;
42
44
  private viewContainerRef;
43
45
  private titleService;
44
46
  developerModeService: DeveloperModeService;
@@ -75,6 +77,8 @@ export declare class ShellComponent extends BaseAngularComponent implements OnIn
75
77
  private currentAnimationIndex;
76
78
  private animationSequenceTimeout;
77
79
  ShowResetOption: boolean;
80
+ /** MemberJunction framework version, shown in the loading screen and About dialog. */
81
+ readonly MJVersion: string;
78
82
  private loadingResetTimeout;
79
83
  private readonly loadingResetDelayMs;
80
84
  currentLoadingText: string;
@@ -115,7 +119,7 @@ export declare class ShellComponent extends BaseAngularComponent implements OnIn
115
119
  * Filters out apps that have HideNavBarIconWhenActive=true and are currently active
116
120
  */
117
121
  get leftOfUserMenuApps(): BaseApplication[];
118
- constructor(appManager: ApplicationManager, workspaceManager: WorkspaceStateManager, layoutManager: GoldenLayoutManager, tabService: TabService, navigationService: NavigationService, route: ActivatedRoute, router: Router, authBase: MJAuthBase, cdr: ChangeDetectorRef, userAvatarService: UserAvatarService, settingsDialogService: SettingsDialogService, userSharingCenterDialogService: UserSharingCenterDialogService, viewContainerRef: ViewContainerRef, titleService: TitleService, developerModeService: DeveloperModeService, startupValidationService: StartupValidationService, commandPaletteService: CommandPaletteService, themeService: ThemeService, homePinService: HomeAppPinService, fileOpenService: FileOpenService, feedbackDialogService: FeedbackDialogService, feedbackService: FeedbackService);
122
+ constructor(appManager: ApplicationManager, workspaceManager: WorkspaceStateManager, layoutManager: GoldenLayoutManager, tabService: TabService, navigationService: NavigationService, route: ActivatedRoute, router: Router, authBase: MJAuthBase, cdr: ChangeDetectorRef, userAvatarService: UserAvatarService, userSharingCenterDialogService: UserSharingCenterDialogService, aboutDialogService: AboutDialogService, profileDialogService: ProfileDialogService, viewContainerRef: ViewContainerRef, titleService: TitleService, developerModeService: DeveloperModeService, startupValidationService: StartupValidationService, commandPaletteService: CommandPaletteService, themeService: ThemeService, homePinService: HomeAppPinService, fileOpenService: FileOpenService, feedbackDialogService: FeedbackDialogService, feedbackService: FeedbackService);
119
123
  ngOnInit(): Promise<void>;
120
124
  initializeShell(): Promise<void>;
121
125
  /**
@@ -312,14 +316,6 @@ export declare class ShellComponent extends BaseAngularComponent implements OnIn
312
316
  * Call this only after checking !isMenuDivider(element)
313
317
  */
314
318
  asMenuItem(element: UserMenuElement): UserMenuItem;
315
- /**
316
- * Open the settings dialog
317
- */
318
- private openSettingsDialog;
319
- /**
320
- * Open Settings in a full-screen modal dialog
321
- */
322
- onSettings(): void;
323
319
  /**
324
320
  * Pin the currently active resource to the Home dashboard
325
321
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shell.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.component.ts"],"names":[],"mappings":"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"}