@memberjunction/ng-explorer-core 6.2.0-edge.5 → 6.2.0-edge.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +22 -4
- 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 +16 -2
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +2 -2
- package/dist/lib/office/office-connect.component.d.ts +19 -0
- package/dist/lib/office/office-connect.component.d.ts.map +1 -0
- package/dist/lib/office/office-connect.component.js +80 -0
- package/dist/lib/office/office-connect.component.js.map +1 -0
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -0
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +20 -8
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-class-resolution.d.ts +14 -0
- package/dist/lib/resource-wrappers/dashboard-class-resolution.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/dashboard-class-resolution.js +21 -0
- package/dist/lib/resource-wrappers/dashboard-class-resolution.js.map +1 -0
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +3 -2
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/record-form-mode.d.ts +44 -0
- package/dist/lib/resource-wrappers/record-form-mode.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/record-form-mode.js +47 -0
- package/dist/lib/resource-wrappers/record-form-mode.js.map +1 -0
- package/dist/lib/resource-wrappers/record-resource.component.d.ts +56 -1
- package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +124 -9
- package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/standard-form-create.d.ts +4 -0
- package/dist/lib/resource-wrappers/standard-form-create.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/standard-form-create.js +6 -0
- package/dist/lib/resource-wrappers/standard-form-create.js.map +1 -0
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +18 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +105 -39
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +2 -2
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.d.ts.map +1 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +12 -8
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +6 -0
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.js +18 -3
- package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +2 -0
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.js +38 -10
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/shell-chrome-policy.d.ts +6 -0
- package/dist/lib/shell/shell-chrome-policy.d.ts.map +1 -1
- package/dist/lib/shell/shell-chrome-policy.js +1 -0
- package/dist/lib/shell/shell-chrome-policy.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts +23 -0
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +283 -71
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +2 -2
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/lib/single-record/single-record.component.d.ts +27 -2
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +54 -8
- package/dist/lib/single-record/single-record.component.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts +24 -2
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +139 -24
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/lib/user-profile/user-profile.component.js +2 -2
- package/dist/module.d.ts +64 -63
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +3 -0
- package/dist/module.js.map +1 -1
- package/package.json +58 -57
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ViewChild, runInInjectionContext, createComponent, ViewEncapsulation, HostListener, Output, EventEmitter, inject } from '@angular/core';
|
|
2
2
|
import { GoldenLayoutManager, FlattenLayoutToSingleStack, TabService } from '@memberjunction/ng-base-application';
|
|
3
3
|
import { MJGlobal } from '@memberjunction/global';
|
|
4
|
-
import { BaseResourceComponent, HomeAppPinService, NavigationService, IsRecordTabsStyle, IsRecordsTabConfiguration, IsRecordsRegionTab, IsRecordDockedToWorkspace, RECORD_DOCKED_TO_WORKSPACE_KEY, GetRecordSourceContext, SafeDetectChanges, ExplorerBreakpointService, ResolveRecordTypeIcon, GetDeletedRecordFromEvent, RecordTabShowsRecord, RemoveDeletedRecordFromOrigin, OriginToTabConfiguration, OriginHasReturnTarget, NormalizeRecordIdForMatch } from '@memberjunction/ng-shared';
|
|
4
|
+
import { BaseResourceComponent, HomeAppPinService, NavigationService, IsRecordTabsStyle, IsRecordsTabConfiguration, IsRecordsRegionTab, IsRecordDockedToWorkspace, RECORD_DOCKED_TO_WORKSPACE_KEY, GetRecordSourceContext, SafeDetectChanges, ExplorerBreakpointService, ResolveRecordTypeIcon, ResolveRecordTabDisplayTitle, GetDeletedRecordFromEvent, RecordTabShowsRecord, RemoveDeletedRecordFromOrigin, OriginToTabConfiguration, OriginHasReturnTarget, NormalizeRecordIdForMatch } from '@memberjunction/ng-shared';
|
|
5
5
|
import { ResourceData, ResourcePermissionEngine } from '@memberjunction/core-entities';
|
|
6
6
|
import { RecordOriginCrumbComponent } from '../record-open/record-origin-crumb.component';
|
|
7
7
|
import { RecordSwitcherService } from '../record-open/record-switcher.service';
|
|
@@ -419,7 +419,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
419
419
|
const activeTab = config.tabs.find(t => t.id === config.activeTabId);
|
|
420
420
|
if (activeTab && this.isRecordTab(activeTab)) {
|
|
421
421
|
const app = this.appManager.GetAppById(activeTab.applicationId);
|
|
422
|
-
this.RecordBarTitle = activeTab
|
|
422
|
+
this.RecordBarTitle = this.resolveTabTitle(activeTab);
|
|
423
423
|
this.RecordBarIcon = ResolveRecordTypeIcon(activeTab.configuration, this.ProviderToUse);
|
|
424
424
|
this.RecordBarColor = app?.GetColor() || DEFAULT_APP_COLOR;
|
|
425
425
|
}
|
|
@@ -446,13 +446,16 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
446
446
|
: null;
|
|
447
447
|
return {
|
|
448
448
|
TabId: tab.id,
|
|
449
|
-
Title: tab
|
|
449
|
+
Title: this.resolveTabTitle(tab),
|
|
450
450
|
Icon: ResolveRecordTypeIcon(tab.configuration, this.ProviderToUse),
|
|
451
451
|
Color: app?.GetColor() || DEFAULT_APP_COLOR,
|
|
452
452
|
OriginLabel: originLabel,
|
|
453
453
|
IsActive: tab.id === activeTabId
|
|
454
454
|
};
|
|
455
455
|
}
|
|
456
|
+
resolveTabTitle(tab) {
|
|
457
|
+
return ResolveRecordTabDisplayTitle(tab, this.ProviderToUse) || tab.title;
|
|
458
|
+
}
|
|
456
459
|
/** True while the RECORDS region is the visible surface (active tab is a record) */
|
|
457
460
|
ShowRecordsRegion = false;
|
|
458
461
|
/**
|
|
@@ -549,7 +552,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
549
552
|
const app = this.appManager.GetAppById(tab.applicationId);
|
|
550
553
|
this.recordsLayoutManager.UpdateTabStyle(tab.id, {
|
|
551
554
|
isPinned: tab.isPinned,
|
|
552
|
-
title: tab
|
|
555
|
+
title: this.resolveTabTitle(tab),
|
|
553
556
|
appColor: app?.GetColor() || DEFAULT_APP_COLOR,
|
|
554
557
|
typeIcon: this.resolveTabTypeIcon(tab)
|
|
555
558
|
});
|
|
@@ -842,7 +845,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
842
845
|
tabId: tab.id,
|
|
843
846
|
appId: tab.applicationId,
|
|
844
847
|
appColor: app?.GetColor() || DEFAULT_APP_COLOR,
|
|
845
|
-
title: tab
|
|
848
|
+
title: this.resolveTabTitle(tab),
|
|
846
849
|
route: tab.configuration['route'] || '',
|
|
847
850
|
isPinned: tab.isPinned,
|
|
848
851
|
isLoaded: false,
|
|
@@ -1465,7 +1468,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
1465
1468
|
const driverClass = resourceData.Configuration?.resourceTypeDriverClass || resourceData.ResourceType;
|
|
1466
1469
|
// Entity name discriminates between "new record" tabs of different entities (all
|
|
1467
1470
|
// have empty ResourceRecordID otherwise). For non-Records resources this is undefined.
|
|
1468
|
-
const cacheDiscriminator = resourceData.Configuration
|
|
1471
|
+
const cacheDiscriminator = this.resolveCacheDiscriminator(resourceData.Configuration);
|
|
1469
1472
|
// **OPTIMIZATION: Check cache first to reuse existing loaded component**
|
|
1470
1473
|
const cached = this.cacheManager.getCachedComponent(driverClass, resourceData.ResourceRecordID || '', activeTab.applicationId, cacheDiscriminator);
|
|
1471
1474
|
if (cached) {
|
|
@@ -1893,13 +1896,15 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
1893
1896
|
// IMPORTANT: Check both resourceRecordId AND configuration.recordId
|
|
1894
1897
|
// because for nav items, the recordId is stored in configuration, not resourceRecordId
|
|
1895
1898
|
const effectiveRecordId = tab.resourceRecordId || tab.configuration?.recordId || '';
|
|
1899
|
+
const effectiveAbv = tab.configuration?.['AlternateBaseView'] || tab.configuration?.['alternateBaseView'] || '';
|
|
1896
1900
|
const parts = [
|
|
1897
1901
|
tab.applicationId,
|
|
1898
1902
|
tab.configuration?.resourceType || '',
|
|
1899
1903
|
tab.configuration?.driverClass || '',
|
|
1900
1904
|
tab.configuration?.Entity || '', // Include Entity name for Records resource type
|
|
1901
1905
|
effectiveRecordId,
|
|
1902
|
-
tab.configuration?.route || ''
|
|
1906
|
+
tab.configuration?.route || '',
|
|
1907
|
+
effectiveAbv
|
|
1903
1908
|
];
|
|
1904
1909
|
return parts.join('|');
|
|
1905
1910
|
}
|
|
@@ -1913,7 +1918,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
1913
1918
|
tabId: tab.id,
|
|
1914
1919
|
appId: tab.applicationId,
|
|
1915
1920
|
appColor,
|
|
1916
|
-
title: tab
|
|
1921
|
+
title: this.resolveTabTitle(tab),
|
|
1917
1922
|
route: tab.configuration['route'] || '',
|
|
1918
1923
|
isPinned: tab.isPinned,
|
|
1919
1924
|
isLoaded: false,
|
|
@@ -2018,7 +2023,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
2018
2023
|
const driverClass = resourceData.Configuration?.resourceTypeDriverClass || resourceData.ResourceType;
|
|
2019
2024
|
// Discriminate distinct "new record" tabs of different entities (all have empty
|
|
2020
2025
|
// ResourceRecordID otherwise — would silently collide in the cache).
|
|
2021
|
-
const cacheDiscriminator = resourceData.Configuration
|
|
2026
|
+
const cacheDiscriminator = this.resolveCacheDiscriminator(resourceData.Configuration);
|
|
2022
2027
|
// Check if we have a cached component for this resource
|
|
2023
2028
|
const cached = this.cacheManager.getCachedComponent(driverClass, resourceData.ResourceRecordID || '', tab.applicationId, cacheDiscriminator);
|
|
2024
2029
|
if (cached) {
|
|
@@ -2513,6 +2518,8 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
2513
2518
|
// reload from being handed back the component it just detached.
|
|
2514
2519
|
const existingEntity = existingResourceData?.Configuration?.Entity;
|
|
2515
2520
|
const newEntity = tab.configuration['Entity'];
|
|
2521
|
+
const existingAbv = (existingResourceData?.Configuration?.['AlternateBaseView'] ?? existingResourceData?.Configuration?.['alternateBaseView']) || '';
|
|
2522
|
+
const newAbv = (tab.configuration['AlternateBaseView'] ?? tab.configuration['alternateBaseView']) || '';
|
|
2516
2523
|
// The record id comparison accepts the URL-segment form ResourceRecordSaved writes into
|
|
2517
2524
|
// the component's Data ('ID|<uuid>' for a tab that keeps '<uuid>'). An exact comparison
|
|
2518
2525
|
// reloads the same cached component on every configuration emission, and each reload
|
|
@@ -2521,6 +2528,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
2521
2528
|
existingResourceData?.Configuration?.applicationId !== tab.applicationId ||
|
|
2522
2529
|
!TabContainerComponent.IsSameRecordId(existingRecordId, newRecordId) ||
|
|
2523
2530
|
existingEntity !== newEntity ||
|
|
2531
|
+
existingAbv !== newAbv ||
|
|
2524
2532
|
(tab.configuration['resourceType'] === 'Custom' && existingDriverClass !== newDriverClass);
|
|
2525
2533
|
if (needsReload) {
|
|
2526
2534
|
// Clean up old component
|
|
@@ -2548,7 +2556,7 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
2548
2556
|
const app = this.appManager.GetAppById(tab.applicationId);
|
|
2549
2557
|
const styleUpdate = {
|
|
2550
2558
|
isPinned: tab.isPinned,
|
|
2551
|
-
title: tab
|
|
2559
|
+
title: this.resolveTabTitle(tab),
|
|
2552
2560
|
appColor: app?.GetColor() || DEFAULT_APP_COLOR
|
|
2553
2561
|
};
|
|
2554
2562
|
if (IsRecordsTabConfiguration(tab.configuration)) {
|
|
@@ -3032,6 +3040,26 @@ export class TabContainerComponent extends BaseAngularComponent {
|
|
|
3032
3040
|
// Unblock the shell's first-load gate so the loading overlay clears.
|
|
3033
3041
|
this.emitFirstLoadCompleteOnce();
|
|
3034
3042
|
}
|
|
3043
|
+
resolveCacheDiscriminator(configuration) {
|
|
3044
|
+
if (typeof ComponentCacheManager.GetCacheDiscriminator === 'function') {
|
|
3045
|
+
return ComponentCacheManager.GetCacheDiscriminator(configuration);
|
|
3046
|
+
}
|
|
3047
|
+
if (!configuration) {
|
|
3048
|
+
return undefined;
|
|
3049
|
+
}
|
|
3050
|
+
const entity = typeof configuration['Entity'] === 'string' && configuration['Entity'].trim().length > 0
|
|
3051
|
+
? configuration['Entity'].trim()
|
|
3052
|
+
: '';
|
|
3053
|
+
const rawAbv = configuration['AlternateBaseView'];
|
|
3054
|
+
const abv = typeof rawAbv === 'string' && rawAbv.trim().length > 0 ? rawAbv.trim() : '';
|
|
3055
|
+
if (!entity && !abv) {
|
|
3056
|
+
return undefined;
|
|
3057
|
+
}
|
|
3058
|
+
if (entity && abv) {
|
|
3059
|
+
return `${entity}|abv:${abv}`;
|
|
3060
|
+
}
|
|
3061
|
+
return entity || `abv:${abv}`;
|
|
3062
|
+
}
|
|
3035
3063
|
static ɵfac = function TabContainerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TabContainerComponent)(i0.ɵɵdirectiveInject(i1.GoldenLayoutManager), i0.ɵɵdirectiveInject(i1.WorkspaceStateManager), i0.ɵɵdirectiveInject(i1.ApplicationManager), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.EnvironmentInjector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
3036
3064
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TabContainerComponent, selectors: [["mj-tab-container"]], viewQuery: function TabContainerComponent_Query(rf, ctx) { if (rf & 1) {
|
|
3037
3065
|
i0.ɵɵviewQuery(_c0, 5)(_c1, 5)(_c2, 5);
|