@memberjunction/ng-explorer-core 6.1.0-edge.5 → 6.1.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 +19 -0
- package/dist/generated/lazy-feature-config.js +3 -3
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/about/about-dialog.component.js +4 -4
- package/dist/lib/about/about-dialog.component.js.map +1 -1
- package/dist/lib/command-palette/command-palette.component.js +1 -1
- package/dist/lib/conversation-feedback/conversation-feedback.js +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +1 -1
- package/dist/lib/oauth/oauth-callback.component.js +1 -1
- package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -1
- package/dist/lib/omnibar/omnibar-palette.component.js +9 -3
- package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
- package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -1
- package/dist/lib/omnibar/providers/omnibar-record.provider.js +9 -3
- package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -1
- package/dist/lib/profile/profile-dialog.component.js +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +6 -14
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.d.ts +3 -0
- package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +18 -4
- package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +6 -2
- package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +6 -3
- 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/dialogs/app-access-dialog.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.js +1 -1
- package/dist/lib/shell/components/header/app-switcher.component.js +82 -83
- package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
- package/dist/lib/shell/components/record-open/record-bar.component.js +1 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +1 -1
- package/dist/lib/shell/components/record-open/record-switcher-sheet.component.js +1 -1
- package/dist/lib/shell/components/record-open/records-hub-pill.component.js +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +25 -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 +88 -4
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/services/sharing-center-dialog-host.component.js +2 -2
- package/dist/lib/shell/services/sharing-center-dialog-host.component.js.map +1 -1
- package/dist/lib/shell/shell-chrome-policy.d.ts +54 -0
- package/dist/lib/shell/shell-chrome-policy.d.ts.map +1 -0
- package/dist/lib/shell/shell-chrome-policy.js +62 -0
- package/dist/lib/shell/shell-chrome-policy.js.map +1 -0
- package/dist/lib/shell/shell.component.d.ts +19 -0
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +190 -119
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +9 -0
- 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 +34 -15
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/lib/single-record/single-record.component.d.ts +10 -0
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +23 -3
- package/dist/lib/single-record/single-record.component.js.map +1 -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 +5 -2
- package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +11 -12
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/lib/user-profile/user-profile.component.js +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +62 -62
|
@@ -47,8 +47,8 @@ export class SharingCenterDialogHostComponent {
|
|
|
47
47
|
case 'Resource Permissions':
|
|
48
48
|
case 'Access Control Rules':
|
|
49
49
|
if (row.ResourceType) {
|
|
50
|
-
|
|
51
|
-
key.
|
|
50
|
+
// Resource types are MJ core entities (Dashboards, Reports, Queries, ...), all keyed by ID.
|
|
51
|
+
const key = CompositeKey.FromID(row.ResourceID); // first-pk-ok: ResourceType is one of the core resource entities (Dashboards, Reports, Queries, ...), all keyed by ID
|
|
52
52
|
// Transient dialog: default origin capture (the page
|
|
53
53
|
// behind it) is the right "back" target once it closes.
|
|
54
54
|
this.navigationService.OpenEntityRecord(row.ResourceType, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharing-center-dialog-host.component.js","sourceRoot":"","sources":["../../../../src/lib/shell/services/sharing-center-dialog-host.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAmB,MAAM,qCAAqC,CAAC;;AAE1F;;;;;;;;;GASG;AAcH,MAAM,OAAO,gCAAgC;IACxB,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEzD,KAAK,CAAC,iBAAiB,CAAC,GAAyB;QAC7C,IAAI,CAAC,GAAG,CAAC,UAAU;YAAE,OAAO;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,GAAyB;QAC3D,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,uBAAuB;gBACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,UAAW,EAAE,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;gBACvF,OAAO,IAAI,CAAC;YAEhB,KAAK,sBAAsB;gBACvB,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,UAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC;YAEhB,KAAK,wBAAwB;gBACzB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAW,CAAC,CAAC;YAEhD,KAAK,mBAAmB;gBACpB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAW,EAAE,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC;YAEhB,KAAK,sBAAsB,CAAC;YAC5B,KAAK,sBAAsB;gBACvB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"sharing-center-dialog-host.component.js","sourceRoot":"","sources":["../../../../src/lib/shell/services/sharing-center-dialog-host.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAmB,MAAM,qCAAqC,CAAC;;AAE1F;;;;;;;;;GASG;AAcH,MAAM,OAAO,gCAAgC;IACxB,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEzD,KAAK,CAAC,iBAAiB,CAAC,GAAyB;QAC7C,IAAI,CAAC,GAAG,CAAC,UAAU;YAAE,OAAO;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,GAAyB;QAC3D,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,uBAAuB;gBACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,UAAW,EAAE,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;gBACvF,OAAO,IAAI,CAAC;YAEhB,KAAK,sBAAsB;gBACvB,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,UAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC;YAEhB,KAAK,wBAAwB;gBACzB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAW,CAAC,CAAC;YAEhD,KAAK,mBAAmB;gBACpB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAW,EAAE,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC;YAEhB,KAAK,sBAAsB,CAAC;YAC5B,KAAK,sBAAsB;gBACvB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACnB,4FAA4F;oBAC5F,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAW,CAAC,CAAC,CAAC,sHAAsH;oBACxK,qDAAqD;oBACrD,wDAAwD;oBACxD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;oBAC/D,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,KAAK,CAAC;YAEjB;gBACI,OAAO,KAAK,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,cAAc,CAAC,YAAoB;QAC7C,MAAM,IAAI,GAAsB,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YACzC,+EAA+E;YAC/E,yEAAyE;YACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAChC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,yBAAyB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,QAAQ,CACrG,CAAC;YACF,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;gBACzF,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;0HAzEQ,gCAAgC;6DAAhC,gCAAgC;YAPrC,iDAG0C;YAAtC,AADA,uJAAmB,6BAAyB,IAAC,kIAC3B,sBAAkB,IAAC;YACzC,iBAAyB;;YAHrB,uCAAyB;4BAJvB,0BAA0B;;iFAU3B,gCAAgC;cAb5C,SAAS;eAAC;gBACP,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,wCAAwC;gBAClD,OAAO,EAAE,CAAC,0BAA0B,CAAC;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,QAAQ,EAAE;;;;;;KAMT;aACJ;;kFACY,gCAAgC","sourcesContent":["import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { CompositeKey, NormalizedPermission } from '@memberjunction/core';\nimport { MJDialogRef } from '@memberjunction/ng-ui-components';\nimport { UserSharingCenterComponent } from '@memberjunction/ng-resource-permissions';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport { ApplicationManager, BaseApplication } from '@memberjunction/ng-base-application';\n\n/**\n * Thin Explorer-side wrapper around the Generic {@link UserSharingCenterComponent}.\n *\n * The Generic component is intentionally Router-free; this host translates its\n * `ResourceClicked` and `CloseRequested` events into calls against `NavigationService`\n * (Explorer's wrapper around Angular Router) and `MJDialogRef` (its host dialog).\n *\n * Apps that don't use NavigationService can instantiate the Generic component\n * directly and provide their own routing strategy.\n */\n@Component({\n standalone: true,\n selector: 'mj-explorer-sharing-center-dialog-host',\n imports: [UserSharingCenterComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <mj-user-sharing-center\n [ShowCloseButton]=\"false\"\n (ResourceClicked)=\"OnResourceClicked($event)\"\n (CloseRequested)=\"OnCloseRequested()\">\n </mj-user-sharing-center>\n `,\n})\nexport class SharingCenterDialogHostComponent {\n private readonly dialogRef = inject(MJDialogRef, { optional: true });\n private readonly navigationService = inject(NavigationService);\n private readonly appManager = inject(ApplicationManager);\n\n async OnResourceClicked(row: NormalizedPermission): Promise<void> {\n if (!row.ResourceID) return;\n const opened = await this.openResourceForExplorer(row);\n if (opened) {\n this.dialogRef?.Close();\n }\n }\n\n OnCloseRequested(): void {\n this.dialogRef?.Close();\n }\n\n private async openResourceForExplorer(row: NormalizedPermission): Promise<boolean> {\n switch (row.DomainName) {\n case 'Dashboard Permissions':\n this.navigationService.OpenDashboard(row.ResourceID!, row.ResourceName ?? 'Dashboard');\n return true;\n\n case 'Artifact Permissions':\n this.navigationService.OpenArtifact(row.ResourceID!, row.ResourceName);\n return true;\n\n case 'Collection Permissions':\n return this.openCollection(row.ResourceID!);\n\n case 'Query Permissions':\n this.navigationService.OpenQuery(row.ResourceID!, row.ResourceName ?? 'Query');\n return true;\n\n case 'Resource Permissions':\n case 'Access Control Rules':\n if (row.ResourceType) {\n // Resource types are MJ core entities (Dashboards, Reports, Queries, ...), all keyed by ID.\n const key = CompositeKey.FromID(row.ResourceID!); // first-pk-ok: ResourceType is one of the core resource entities (Dashboards, Reports, Queries, ...), all keyed by ID\n // Transient dialog: default origin capture (the page\n // behind it) is the right \"back\" target once it closes.\n this.navigationService.OpenEntityRecord(row.ResourceType, key);\n return true;\n }\n return false;\n\n default:\n return false;\n }\n }\n\n /**\n * Collections have no NavigationService.Open* helper — they live behind the\n * 'Collections' nav item of the Chat app. Find whichever app exposes that nav\n * item (the Sharing Center can be opened from any app, so the ACTIVE app can't\n * be assumed) and switch to it with the collectionId as query params, which\n * drives both fresh tabs (initial param read) and cached ones (OnQueryParamsChanged).\n */\n private async openCollection(collectionId: string): Promise<boolean> {\n const apps: BaseApplication[] = await firstValueFrom(this.appManager.Applications).catch(() => []);\n for (const app of apps) {\n const navItems = await app.GetNavItems();\n // Match on DriverClass (stable identity — survives label renames/localization)\n // and only consider Active items (Status defaults to Active when unset).\n const collectionsNav = navItems.find(\n (item) => item.DriverClass === 'ChatCollectionsResource' && (item.Status ?? 'Active') === 'Active'\n );\n if (collectionsNav) {\n await this.navigationService.SwitchToApp(app.ID, collectionsNav.Label, { collectionId });\n return true;\n }\n }\n return false;\n }\n}\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import type { RecordOpenStyle } from '@memberjunction/ng-shared';
|
|
3
|
+
import type { AppSwitcherStyle } from './components/header/app-switcher.component';
|
|
4
|
+
/**
|
|
5
|
+
* The shell's chrome as one resolved set: which header affordances render and how the app
|
|
6
|
+
* switcher and record-opening behave. Instance Config supplies the platform-wide answer
|
|
7
|
+
* (`Shell.SearchBar.Enabled` and friends); a host's {@link BaseShellChromePolicy} may narrow it.
|
|
8
|
+
*/
|
|
9
|
+
export interface ShellChromeFlags {
|
|
10
|
+
searchBar: boolean;
|
|
11
|
+
searchPreview: boolean;
|
|
12
|
+
notifications: boolean;
|
|
13
|
+
appSwitcher: boolean;
|
|
14
|
+
appSwitcherStyle: AppSwitcherStyle;
|
|
15
|
+
appNav: boolean;
|
|
16
|
+
recordOpenStyle: RecordOpenStyle;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Host hook for the shell's chrome, per user or tenant.
|
|
20
|
+
*
|
|
21
|
+
* Instance Config decides the platform-wide chrome and is the ceiling. A host that needs a
|
|
22
|
+
* narrower answer for SOME users — a white-label product hiding the search bar for
|
|
23
|
+
* organizations whose plan does not include browsing the knowledge base, say — registers a
|
|
24
|
+
* subclass and overrides {@link Resolve}. The shell consults the policy every time it
|
|
25
|
+
* resolves its flags, and re-resolves when the policy fires {@link Changed} (the user's
|
|
26
|
+
* organization or plan changed under them).
|
|
27
|
+
*
|
|
28
|
+
* Booleans can only be narrowed: a `true` from the policy never re-enables something Instance
|
|
29
|
+
* Config turned off, and `recordOpenStyle` is not the policy's to change (it is resolved at
|
|
30
|
+
* startup and pushed to collaborators). `appSwitcherStyle` may be replaced.
|
|
31
|
+
*
|
|
32
|
+
* Same ClassFactory pattern as {@link BaseUserMenu}:
|
|
33
|
+
* ```typescript
|
|
34
|
+
* @RegisterClass(BaseShellChromePolicy)
|
|
35
|
+
* export class MyChromePolicy extends BaseShellChromePolicy {
|
|
36
|
+
* public override Resolve(flags: ShellChromeFlags): ShellChromeFlags {
|
|
37
|
+
* return { ...flags, searchBar: flags.searchBar && this.orgHasKnowledgePlus() };
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
* The default (this class) is the identity: nothing changes for hosts that register nothing.
|
|
42
|
+
*/
|
|
43
|
+
export declare class BaseShellChromePolicy {
|
|
44
|
+
/** Fire when the answer may have changed; the shell drops its cached flags and repaints. */
|
|
45
|
+
readonly Changed: Subject<void>;
|
|
46
|
+
/** Return the chrome this user should see, given what Instance Config allows. */
|
|
47
|
+
Resolve(flags: ShellChromeFlags): ShellChromeFlags;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Applies a policy's answer to the Instance Config baseline, enforcing the contract above:
|
|
51
|
+
* booleans narrow only, `recordOpenStyle` is kept, `appSwitcherStyle` is taken as given.
|
|
52
|
+
*/
|
|
53
|
+
export declare function ApplyShellChromePolicy(baseline: ShellChromeFlags, policy: BaseShellChromePolicy): ShellChromeFlags;
|
|
54
|
+
//# sourceMappingURL=shell-chrome-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-chrome-policy.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell-chrome-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAEnF;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,qBAAqB;IAChC,4FAA4F;IAC5F,SAAgB,OAAO,gBAAuB;IAE9C,iFAAiF;IAC1E,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB;CAG1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,CAoBlH"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { LogError } from '@memberjunction/core';
|
|
3
|
+
/**
|
|
4
|
+
* Host hook for the shell's chrome, per user or tenant.
|
|
5
|
+
*
|
|
6
|
+
* Instance Config decides the platform-wide chrome and is the ceiling. A host that needs a
|
|
7
|
+
* narrower answer for SOME users — a white-label product hiding the search bar for
|
|
8
|
+
* organizations whose plan does not include browsing the knowledge base, say — registers a
|
|
9
|
+
* subclass and overrides {@link Resolve}. The shell consults the policy every time it
|
|
10
|
+
* resolves its flags, and re-resolves when the policy fires {@link Changed} (the user's
|
|
11
|
+
* organization or plan changed under them).
|
|
12
|
+
*
|
|
13
|
+
* Booleans can only be narrowed: a `true` from the policy never re-enables something Instance
|
|
14
|
+
* Config turned off, and `recordOpenStyle` is not the policy's to change (it is resolved at
|
|
15
|
+
* startup and pushed to collaborators). `appSwitcherStyle` may be replaced.
|
|
16
|
+
*
|
|
17
|
+
* Same ClassFactory pattern as {@link BaseUserMenu}:
|
|
18
|
+
* ```typescript
|
|
19
|
+
* @RegisterClass(BaseShellChromePolicy)
|
|
20
|
+
* export class MyChromePolicy extends BaseShellChromePolicy {
|
|
21
|
+
* public override Resolve(flags: ShellChromeFlags): ShellChromeFlags {
|
|
22
|
+
* return { ...flags, searchBar: flags.searchBar && this.orgHasKnowledgePlus() };
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
* The default (this class) is the identity: nothing changes for hosts that register nothing.
|
|
27
|
+
*/
|
|
28
|
+
export class BaseShellChromePolicy {
|
|
29
|
+
/** Fire when the answer may have changed; the shell drops its cached flags and repaints. */
|
|
30
|
+
Changed = new Subject();
|
|
31
|
+
/** Return the chrome this user should see, given what Instance Config allows. */
|
|
32
|
+
Resolve(flags) {
|
|
33
|
+
return flags;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Applies a policy's answer to the Instance Config baseline, enforcing the contract above:
|
|
38
|
+
* booleans narrow only, `recordOpenStyle` is kept, `appSwitcherStyle` is taken as given.
|
|
39
|
+
*/
|
|
40
|
+
export function ApplyShellChromePolicy(baseline, policy) {
|
|
41
|
+
let answer;
|
|
42
|
+
try {
|
|
43
|
+
answer = policy.Resolve({ ...baseline });
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// Host code. A throwing policy must not take the shell's chrome down with it: the reader
|
|
47
|
+
// keeps the Instance Config chrome, and the error names the subclass rather than
|
|
48
|
+
// surfacing as mysteriously missing buttons.
|
|
49
|
+
LogError(`Shell chrome policy ${policy.constructor.name}.Resolve threw; using the Instance Config chrome unchanged. ${error instanceof Error ? error.message : String(error)}`);
|
|
50
|
+
return { ...baseline };
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
searchBar: baseline.searchBar && answer.searchBar,
|
|
54
|
+
searchPreview: baseline.searchPreview && answer.searchPreview,
|
|
55
|
+
notifications: baseline.notifications && answer.notifications,
|
|
56
|
+
appSwitcher: baseline.appSwitcher && answer.appSwitcher,
|
|
57
|
+
appSwitcherStyle: answer.appSwitcherStyle ?? baseline.appSwitcherStyle,
|
|
58
|
+
appNav: baseline.appNav && answer.appNav,
|
|
59
|
+
recordOpenStyle: baseline.recordOpenStyle,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=shell-chrome-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-chrome-policy.js","sourceRoot":"","sources":["../../../src/lib/shell/shell-chrome-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAmBhD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,qBAAqB;IAChC,4FAA4F;IAC5E,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;IAE9C,iFAAiF;IAC1E,OAAO,CAAC,KAAuB;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA0B,EAAE,MAA6B;IAC9F,IAAI,MAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yFAAyF;QACzF,iFAAiF;QACjF,6CAA6C;QAC7C,QAAQ,CAAC,uBAAuB,MAAM,CAAC,WAAW,CAAC,IAAI,+DAA+D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChL,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IACzB,CAAC;IACD,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;QACjD,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa;QAC7D,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa;QAC7D,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;QACvD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB;QACtE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;QACxC,eAAe,EAAE,QAAQ,CAAC,eAAe;KAC1C,CAAC;AACJ,CAAC","sourcesContent":["import { Subject } from 'rxjs';\nimport { LogError } from '@memberjunction/core';\nimport type { RecordOpenStyle } from '@memberjunction/ng-shared';\nimport type { AppSwitcherStyle } from './components/header/app-switcher.component';\n\n/**\n * The shell's chrome as one resolved set: which header affordances render and how the app\n * switcher and record-opening behave. Instance Config supplies the platform-wide answer\n * (`Shell.SearchBar.Enabled` and friends); a host's {@link BaseShellChromePolicy} may narrow it.\n */\nexport interface ShellChromeFlags {\n searchBar: boolean;\n searchPreview: boolean;\n notifications: boolean;\n appSwitcher: boolean;\n appSwitcherStyle: AppSwitcherStyle;\n appNav: boolean;\n recordOpenStyle: RecordOpenStyle;\n}\n\n/**\n * Host hook for the shell's chrome, per user or tenant.\n *\n * Instance Config decides the platform-wide chrome and is the ceiling. A host that needs a\n * narrower answer for SOME users — a white-label product hiding the search bar for\n * organizations whose plan does not include browsing the knowledge base, say — registers a\n * subclass and overrides {@link Resolve}. The shell consults the policy every time it\n * resolves its flags, and re-resolves when the policy fires {@link Changed} (the user's\n * organization or plan changed under them).\n *\n * Booleans can only be narrowed: a `true` from the policy never re-enables something Instance\n * Config turned off, and `recordOpenStyle` is not the policy's to change (it is resolved at\n * startup and pushed to collaborators). `appSwitcherStyle` may be replaced.\n *\n * Same ClassFactory pattern as {@link BaseUserMenu}:\n * ```typescript\n * @RegisterClass(BaseShellChromePolicy)\n * export class MyChromePolicy extends BaseShellChromePolicy {\n * public override Resolve(flags: ShellChromeFlags): ShellChromeFlags {\n * return { ...flags, searchBar: flags.searchBar && this.orgHasKnowledgePlus() };\n * }\n * }\n * ```\n * The default (this class) is the identity: nothing changes for hosts that register nothing.\n */\nexport class BaseShellChromePolicy {\n /** Fire when the answer may have changed; the shell drops its cached flags and repaints. */\n public readonly Changed = new Subject<void>();\n\n /** Return the chrome this user should see, given what Instance Config allows. */\n public Resolve(flags: ShellChromeFlags): ShellChromeFlags {\n return flags;\n }\n}\n\n/**\n * Applies a policy's answer to the Instance Config baseline, enforcing the contract above:\n * booleans narrow only, `recordOpenStyle` is kept, `appSwitcherStyle` is taken as given.\n */\nexport function ApplyShellChromePolicy(baseline: ShellChromeFlags, policy: BaseShellChromePolicy): ShellChromeFlags {\n let answer: ShellChromeFlags;\n try {\n answer = policy.Resolve({ ...baseline });\n } catch (error) {\n // Host code. A throwing policy must not take the shell's chrome down with it: the reader\n // keeps the Instance Config chrome, and the error names the subclass rather than\n // surfacing as mysteriously missing buttons.\n LogError(`Shell chrome policy ${policy.constructor.name}.Resolve threw; using the Instance Config chrome unchanged. ${error instanceof Error ? error.message : String(error)}`);\n return { ...baseline };\n }\n return {\n searchBar: baseline.searchBar && answer.searchBar,\n searchPreview: baseline.searchPreview && answer.searchPreview,\n notifications: baseline.notifications && answer.notifications,\n appSwitcher: baseline.appSwitcher && answer.appSwitcher,\n appSwitcherStyle: answer.appSwitcherStyle ?? baseline.appSwitcherStyle,\n appNav: baseline.appNav && answer.appNav,\n recordOpenStyle: baseline.recordOpenStyle,\n };\n}\n"]}
|
|
@@ -20,6 +20,14 @@ import { FeedbackDialogService, FeedbackService } from '@memberjunction/ng-feedb
|
|
|
20
20
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
21
21
|
import { AppSwitcherStyle } from './components/header/app-switcher.component';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
23
|
+
/**
|
|
24
|
+
* Main shell component for the new Explorer UX.
|
|
25
|
+
*
|
|
26
|
+
* Provides:
|
|
27
|
+
* - App-centric header with app switcher and nav items
|
|
28
|
+
* - Golden Layout-based tab container
|
|
29
|
+
* - Unified workspace state management
|
|
30
|
+
*/
|
|
23
31
|
export declare class ShellComponent extends BaseAngularComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
24
32
|
private appManager;
|
|
25
33
|
private workspaceManager;
|
|
@@ -112,13 +120,24 @@ export declare class ShellComponent extends BaseAngularComponent implements OnIn
|
|
|
112
120
|
mobileNavToggle?: ElementRef<HTMLButtonElement>;
|
|
113
121
|
LegacySearchOpen: boolean;
|
|
114
122
|
private _chromeFlags;
|
|
123
|
+
/**
|
|
124
|
+
* The host's chrome policy (see {@link BaseShellChromePolicy}) — the identity unless a host
|
|
125
|
+
* registered a subclass. Consulted on every resolve; its `Changed` drops the cache.
|
|
126
|
+
*/
|
|
127
|
+
private readonly chromePolicy;
|
|
115
128
|
/**
|
|
116
129
|
* Resolve the instance-config chrome flags once and cache them. Computed live
|
|
117
130
|
* from the fail-open defaults until InstanceConfigEngine has loaded, then frozen
|
|
118
131
|
* on the first post-load read — so the pre-load defaults are never cached over
|
|
119
132
|
* the real values, and every steady-state read is a plain field access.
|
|
133
|
+
*
|
|
134
|
+
* Instance Config is the ceiling; the host's chrome policy may narrow it per user
|
|
135
|
+
* (see {@link BaseShellChromePolicy}). The cache is dropped when the policy fires
|
|
136
|
+
* `Changed`, so an organization or plan switch repaints the chrome.
|
|
120
137
|
*/
|
|
121
138
|
private get chromeFlags();
|
|
139
|
+
/** The policy's answer may have changed: forget the cached flags and repaint. */
|
|
140
|
+
private onChromePolicyChanged;
|
|
122
141
|
/** The record-open style resolved at startup ('records' until resolved) */
|
|
123
142
|
private resolvedRecordOpenStyle;
|
|
124
143
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAa,UAAU,EAAgB,MAAM,eAAe,CAAC;AACtJ,OAAO,EAAE,cAAc,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,UAAU,EAIV,OAAO,EACR,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAY,UAAU,EAAgN,MAAM,sBAAsB,CAAC;AAE1Q,OAAO,EAAc,iBAAiB,EAAgC,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAsF,MAAM,2BAA2B,CAAC;AAChS,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,wBAAwB,EAAyB,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAgB,eAAe,EAAE,YAAY,EAA0D,MAAM,cAAc,CAAC;AAEnI,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;;
|
|
1
|
+
{"version":3,"file":"shell.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.component.ts"],"names":[],"mappings":"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"}
|