@memberjunction/ng-explorer-core 5.46.0 → 5.48.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 (69) hide show
  1. package/dist/generated/lazy-feature-config.js +126 -126
  2. package/dist/generated/lazy-feature-config.js.map +1 -1
  3. package/dist/lib/omnibar/index.d.ts +15 -0
  4. package/dist/lib/omnibar/index.d.ts.map +1 -0
  5. package/dist/lib/omnibar/index.js +24 -0
  6. package/dist/lib/omnibar/index.js.map +1 -0
  7. package/dist/lib/omnibar/omnibar-palette.component.d.ts +130 -0
  8. package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -0
  9. package/dist/lib/omnibar/omnibar-palette.component.js +829 -0
  10. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -0
  11. package/dist/lib/omnibar/omnibar-provider.d.ts +94 -0
  12. package/dist/lib/omnibar/omnibar-provider.d.ts.map +1 -0
  13. package/dist/lib/omnibar/omnibar-provider.js +84 -0
  14. package/dist/lib/omnibar/omnibar-provider.js.map +1 -0
  15. package/dist/lib/omnibar/omnibar-shortcut.d.ts +12 -0
  16. package/dist/lib/omnibar/omnibar-shortcut.d.ts.map +1 -0
  17. package/dist/lib/omnibar/omnibar-shortcut.js +16 -0
  18. package/dist/lib/omnibar/omnibar-shortcut.js.map +1 -0
  19. package/dist/lib/omnibar/omnibar-user-setting.d.ts +38 -0
  20. package/dist/lib/omnibar/omnibar-user-setting.d.ts.map +1 -0
  21. package/dist/lib/omnibar/omnibar-user-setting.js +53 -0
  22. package/dist/lib/omnibar/omnibar-user-setting.js.map +1 -0
  23. package/dist/lib/omnibar/providers/omnibar-agent.provider.d.ts +24 -0
  24. package/dist/lib/omnibar/providers/omnibar-agent.provider.d.ts.map +1 -0
  25. package/dist/lib/omnibar/providers/omnibar-agent.provider.js +69 -0
  26. package/dist/lib/omnibar/providers/omnibar-agent.provider.js.map +1 -0
  27. package/dist/lib/omnibar/providers/omnibar-command.provider.d.ts +29 -0
  28. package/dist/lib/omnibar/providers/omnibar-command.provider.d.ts.map +1 -0
  29. package/dist/lib/omnibar/providers/omnibar-command.provider.js +130 -0
  30. package/dist/lib/omnibar/providers/omnibar-command.provider.js.map +1 -0
  31. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts +35 -0
  32. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -0
  33. package/dist/lib/omnibar/providers/omnibar-record.provider.js +176 -0
  34. package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -0
  35. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts +21 -0
  36. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts.map +1 -0
  37. package/dist/lib/omnibar/providers/omnibar-search.provider.js +94 -0
  38. package/dist/lib/omnibar/providers/omnibar-search.provider.js.map +1 -0
  39. package/dist/lib/profile/profile-dialog.component.d.ts +12 -0
  40. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  41. package/dist/lib/profile/profile-dialog.component.js +189 -78
  42. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  43. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +16 -0
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +66 -6
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  47. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  48. package/dist/lib/resource-wrappers/view-resource.component.js +6 -2
  49. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  50. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +7 -0
  51. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  52. package/dist/lib/shell/components/tabs/tab-container.component.js +26 -4
  53. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  54. package/dist/lib/shell/shell.component.d.ts +62 -2
  55. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  56. package/dist/lib/shell/shell.component.js +341 -162
  57. package/dist/lib/shell/shell.component.js.map +1 -1
  58. package/dist/lib/shell/shell.module.d.ts +8 -7
  59. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  60. package/dist/lib/shell/shell.module.js +5 -2
  61. package/dist/lib/shell/shell.module.js.map +1 -1
  62. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  63. package/dist/lib/single-list-detail/single-list-detail.component.js +29 -20
  64. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  65. package/dist/public-api.d.ts +1 -0
  66. package/dist/public-api.d.ts.map +1 -1
  67. package/dist/public-api.js +2 -0
  68. package/dist/public-api.js.map +1 -1
  69. package/package.json +49 -49
@@ -1011,7 +1011,18 @@ export class TabContainerComponent extends BaseAngularComponent {
1011
1011
  this.componentRefs.set(tabId, componentRef);
1012
1012
  }
1013
1013
  catch (e) {
1014
+ // A tab whose resource can't resolve (e.g. a persisted tab referencing an
1015
+ // unknown ResourceType) must NEVER brick the shell: log, signal load-complete
1016
+ // so the boot loading screen clears, and close the poisoned tab so it doesn't
1017
+ // re-fail on every boot from restored workspace state.
1014
1018
  LogError(e);
1019
+ this.emitFirstLoadCompleteOnce();
1020
+ try {
1021
+ this.workspaceManager.CloseTab(tabId);
1022
+ }
1023
+ catch {
1024
+ // best-effort — leaving the tab is still recoverable via manual close
1025
+ }
1015
1026
  }
1016
1027
  finally {
1017
1028
  this.tabsCurrentlyLoading.delete(tabId);
@@ -1135,8 +1146,7 @@ export class TabContainerComponent extends BaseAngularComponent {
1135
1146
  // The engine loads ResourceTypes during startup and keeps them in memory.
1136
1147
  const resourceTypes = ResourcePermissionEngine.Instance.ResourceTypes;
1137
1148
  if (resourceTypes && resourceTypes.length > 0) {
1138
- const rt = resourceTypes.find(rt => rt.Name.trim().toLowerCase() === resourceType.trim().toLowerCase());
1139
- return rt || null;
1149
+ return TabContainerComponent.findResourceTypeTolerant(resourceTypes, resourceType);
1140
1150
  }
1141
1151
  // Fallback: if engine hasn't loaded yet (shouldn't happen in normal flow),
1142
1152
  // fetch the dataset directly
@@ -1150,11 +1160,23 @@ export class TabContainerComponent extends BaseAngularComponent {
1150
1160
  }
1151
1161
  const result = ds.Results.find(r => r.Code.trim().toLowerCase() === 'resourcetypes');
1152
1162
  if (result && result.Results?.length > 0) {
1153
- const rt = result.Results.find(rt => rt.Name.trim().toLowerCase() === resourceType.trim().toLowerCase());
1154
- return rt || null;
1163
+ return TabContainerComponent.findResourceTypeTolerant(result.Results, resourceType);
1155
1164
  }
1156
1165
  return null;
1157
1166
  }
1167
+ /**
1168
+ * Resolve a resource type BY NAME, tolerant of the 'MJ: ' prefix in EITHER
1169
+ * direction — core ResourceType rows predate the prefix convention ('User Views'),
1170
+ * while newer callers may pass 'MJ: User Views' (and vice versa). Exact match wins;
1171
+ * prefix-normalized is the fallback, so historical and prefixed names both resolve.
1172
+ */
1173
+ static findResourceTypeTolerant(rows, resourceType) {
1174
+ const wanted = resourceType.trim().toLowerCase();
1175
+ const normalize = (name) => name.trim().toLowerCase().replace(/^mj:\s*/, '');
1176
+ return rows.find(r => r.Name.trim().toLowerCase() === wanted)
1177
+ ?? rows.find(r => normalize(r.Name) === normalize(wanted))
1178
+ ?? null;
1179
+ }
1158
1180
  async getResourceTypeId(resourceType) {
1159
1181
  const rt = await this.getResourceTypeEntity(resourceType);
1160
1182
  if (rt) {