@memberjunction/ng-explorer-core 6.2.0-edge.3 → 6.2.0-edge.4

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 (117) hide show
  1. package/README.md +10 -0
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +5 -0
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts +1 -1
  6. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  7. package/dist/generated/lazy-feature-config.js +3 -2
  8. package/dist/generated/lazy-feature-config.js.map +1 -1
  9. package/dist/lib/guards/moved-nav-item-redirect.d.ts +15 -0
  10. package/dist/lib/guards/moved-nav-item-redirect.d.ts.map +1 -0
  11. package/dist/lib/guards/moved-nav-item-redirect.js +37 -0
  12. package/dist/lib/guards/moved-nav-item-redirect.js.map +1 -0
  13. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts +34 -0
  14. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts.map +1 -0
  15. package/dist/lib/omnibar/omnibar-dashboard-matches.js +70 -0
  16. package/dist/lib/omnibar/omnibar-dashboard-matches.js.map +1 -0
  17. package/dist/lib/omnibar/omnibar-palette.component.d.ts +27 -2
  18. package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -1
  19. package/dist/lib/omnibar/omnibar-palette.component.js +126 -65
  20. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
  21. package/dist/lib/omnibar/omnibar-provider.d.ts +4 -0
  22. package/dist/lib/omnibar/omnibar-provider.d.ts.map +1 -1
  23. package/dist/lib/omnibar/omnibar-provider.js.map +1 -1
  24. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts +2 -2
  25. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -1
  26. package/dist/lib/omnibar/providers/omnibar-record.provider.js +3 -7
  27. package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -1
  28. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts +15 -2
  29. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts.map +1 -1
  30. package/dist/lib/omnibar/providers/omnibar-search.provider.js +59 -7
  31. package/dist/lib/omnibar/providers/omnibar-search.provider.js.map +1 -1
  32. package/dist/lib/profile/forking-setting.d.ts +8 -0
  33. package/dist/lib/profile/forking-setting.d.ts.map +1 -0
  34. package/dist/lib/profile/forking-setting.js +18 -0
  35. package/dist/lib/profile/forking-setting.js.map +1 -0
  36. package/dist/lib/profile/profile-dialog.component.d.ts +8 -0
  37. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  38. package/dist/lib/profile/profile-dialog.component.js +182 -92
  39. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  40. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +16 -1
  41. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  42. package/dist/lib/resource-wrappers/artifact-resource.component.js +27 -4
  43. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -18
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +20 -41
  47. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  48. package/dist/lib/resource-wrappers/chat-search-routing.d.ts +10 -3
  49. package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/chat-search-routing.js +11 -4
  51. package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -1
  52. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts +29 -0
  53. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts.map +1 -0
  54. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js +141 -0
  55. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js.map +1 -0
  56. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts +28 -0
  57. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts.map +1 -0
  58. package/dist/lib/resource-wrappers/dashboard-part-config.js +150 -0
  59. package/dist/lib/resource-wrappers/dashboard-part-config.js.map +1 -0
  60. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +361 -56
  61. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  62. package/dist/lib/resource-wrappers/dashboard-resource.component.js +1312 -361
  63. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  64. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts +86 -0
  65. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts.map +1 -0
  66. package/dist/lib/resource-wrappers/dashboard-source-search.js +136 -0
  67. package/dist/lib/resource-wrappers/dashboard-source-search.js.map +1 -0
  68. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts +30 -0
  69. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts.map +1 -0
  70. package/dist/lib/resource-wrappers/dashboard-studio-pane.js +55 -0
  71. package/dist/lib/resource-wrappers/dashboard-studio-pane.js.map +1 -0
  72. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts +135 -0
  73. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts.map +1 -0
  74. package/dist/lib/resource-wrappers/dashboard-studio-tools.js +856 -0
  75. package/dist/lib/resource-wrappers/dashboard-studio-tools.js.map +1 -0
  76. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts +87 -0
  77. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts.map +1 -0
  78. package/dist/lib/resource-wrappers/dashboard-tab-agent.js +125 -0
  79. package/dist/lib/resource-wrappers/dashboard-tab-agent.js.map +1 -0
  80. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +28 -7
  81. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  82. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +174 -112
  83. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  84. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  85. package/dist/lib/resource-wrappers/search-results-resource.component.js +5 -4
  86. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  87. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +7 -0
  88. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  89. package/dist/lib/shell/components/tabs/tab-container.component.js +20 -2
  90. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  91. package/dist/lib/shell/dashboard-tab-for-url.d.ts +35 -0
  92. package/dist/lib/shell/dashboard-tab-for-url.d.ts.map +1 -0
  93. package/dist/lib/shell/dashboard-tab-for-url.js +39 -0
  94. package/dist/lib/shell/dashboard-tab-for-url.js.map +1 -0
  95. package/dist/lib/shell/shell.component.d.ts +31 -2
  96. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  97. package/dist/lib/shell/shell.component.js +109 -35
  98. package/dist/lib/shell/shell.component.js.map +1 -1
  99. package/dist/lib/shell/shell.module.d.ts +2 -1
  100. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  101. package/dist/lib/shell/shell.module.js +6 -2
  102. package/dist/lib/shell/shell.module.js.map +1 -1
  103. package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
  104. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  105. package/dist/lib/template-user/template-user-banner.component.d.ts +20 -0
  106. package/dist/lib/template-user/template-user-banner.component.d.ts.map +1 -0
  107. package/dist/lib/template-user/template-user-banner.component.js +67 -0
  108. package/dist/lib/template-user/template-user-banner.component.js.map +1 -0
  109. package/dist/module.d.ts +61 -59
  110. package/dist/module.d.ts.map +1 -1
  111. package/dist/module.js +7 -0
  112. package/dist/module.js.map +1 -1
  113. package/dist/public-api.d.ts +1 -0
  114. package/dist/public-api.d.ts.map +1 -1
  115. package/dist/public-api.js +1 -0
  116. package/dist/public-api.js.map +1 -1
  117. package/package.json +58 -53
@@ -15,9 +15,10 @@ import * as i13 from "@memberjunction/ng-search";
15
15
  import * as i14 from "./components/record-open/records-hub-pill.component";
16
16
  import * as i15 from "./components/record-open/record-bar.component";
17
17
  import * as i16 from "./components/record-open/record-switcher-sheet.component";
18
+ import * as i17 from "@memberjunction/ng-realtime-media";
18
19
  export declare class ShellModule {
19
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ShellModule, never>;
20
- static ɵmod: i0.ɵɵNgModuleDeclaration<ShellModule, [typeof i1.ShellComponent, typeof i2.AppSwitcherComponent, typeof i3.AppNavComponent, typeof i4.TabContainerComponent, typeof i5.AppAccessDialogComponent, typeof i6.CommandPaletteComponent, typeof i7.OmnibarPaletteComponent], [typeof i8.CommonModule, typeof i9.FormsModule, typeof i10.MJDropdownComponent, typeof i10.MJClickableDirective, typeof i10.MJButtonDirective, typeof i10.MJEmptyStateComponent, typeof i11.ExplorerSettingsModule, typeof i12.SharedGenericModule, typeof i13.SearchModule, typeof i14.RecordsHubPillComponent, typeof i15.RecordBarComponent, typeof i16.RecordSwitcherSheetComponent], [typeof i1.ShellComponent]>;
21
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ShellModule, [typeof i1.ShellComponent, typeof i2.AppSwitcherComponent, typeof i3.AppNavComponent, typeof i4.TabContainerComponent, typeof i5.AppAccessDialogComponent, typeof i6.CommandPaletteComponent, typeof i7.OmnibarPaletteComponent], [typeof i8.CommonModule, typeof i9.FormsModule, typeof i10.MJDropdownComponent, typeof i10.MJClickableDirective, typeof i10.MJButtonDirective, typeof i10.MJEmptyStateComponent, typeof i11.ExplorerSettingsModule, typeof i12.SharedGenericModule, typeof i13.SearchModule, typeof i14.RecordsHubPillComponent, typeof i15.RecordBarComponent, typeof i16.RecordSwitcherSheetComponent, typeof i17.SharePanelDirective], [typeof i1.ShellComponent]>;
21
22
  static ɵinj: i0.ɵɵInjectorDeclaration<ShellModule>;
22
23
  }
23
24
  //# sourceMappingURL=shell.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.module.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoBA,qBA+Ba,WAAW;yCAAX,WAAW;0CAAX,WAAW;0CAAX,WAAW;CAAI"}
1
+ {"version":3,"file":"shell.module.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAsBA,qBAgCa,WAAW;yCAAX,WAAW;0CAAX,WAAW;0CAAX,WAAW;CAAI"}
@@ -17,6 +17,8 @@ import { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';
17
17
  import { SharedGenericModule } from '@memberjunction/ng-shared-generic';
18
18
  import { MJDropdownComponent, MJClickableDirective, MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';
19
19
  import { SearchModule } from '@memberjunction/ng-search';
20
+ // Marks the main content area as a panel a call can share on its own ("This panel").
21
+ import { SharePanelDirective } from '@memberjunction/ng-realtime-media';
20
22
  import * as i0 from "@angular/core";
21
23
  export class ShellModule {
22
24
  static ɵfac = function ShellModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ShellModule)(); };
@@ -56,7 +58,8 @@ export class ShellModule {
56
58
  SearchModule,
57
59
  RecordsHubPillComponent,
58
60
  RecordBarComponent,
59
- RecordSwitcherSheetComponent
61
+ RecordSwitcherSheetComponent,
62
+ SharePanelDirective
60
63
  ],
61
64
  providers: [
62
65
  CommandPaletteService
@@ -83,5 +86,6 @@ export class ShellModule {
83
86
  SearchModule,
84
87
  RecordsHubPillComponent,
85
88
  RecordBarComponent,
86
- RecordSwitcherSheetComponent], exports: [ShellComponent] }); })();
89
+ RecordSwitcherSheetComponent,
90
+ SharePanelDirective], exports: [ShellComponent] }); })();
87
91
  //# sourceMappingURL=shell.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.module.js","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,yEAAyE;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AACxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACvI,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAiCzD,MAAM,OAAO,WAAW;qGAAX,WAAW;4DAAX,WAAW;iEAPX;YACT,qBAAqB;SACtB,YAfC,YAAY;YACZ,WAAW;YACX,mBAAmB;YAGnB,qBAAqB;YACrB,sBAAsB;YACtB,mBAAmB;YACnB,YAAY;YAGZ,4BAA4B;;iFASnB,WAAW;cA/BvB,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,eAAe;oBACf,qBAAqB;oBACrB,wBAAwB;oBACxB,uBAAuB;oBACvB,uBAAuB;iBACxB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,oBAAoB;oBACpB,iBAAiB;oBACjB,qBAAqB;oBACrB,sBAAsB;oBACtB,mBAAmB;oBACnB,YAAY;oBACZ,uBAAuB;oBACvB,kBAAkB;oBAClB,4BAA4B;iBAC7B;gBACD,SAAS,EAAE;oBACT,qBAAqB;iBACtB;gBACD,OAAO,EAAE;oBACP,cAAc;iBACf;aACF;;wFACY,WAAW,mBA7BpB,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,wBAAwB;QACxB,uBAAuB;QACvB,uBAAuB,aAGvB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;QACjB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;QACnB,YAAY;QACZ,uBAAuB;QACvB,kBAAkB;QAClB,4BAA4B,aAM5B,cAAc","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ShellComponent } from './shell.component';\nimport { AppSwitcherComponent } from './components/header/app-switcher.component';\nimport { AppNavComponent } from './components/header/app-nav.component';\nimport { TabContainerComponent } from './components/tabs/tab-container.component';\nimport { AppAccessDialogComponent } from './components/dialogs/app-access-dialog.component';\nimport { CommandPaletteComponent } from '../command-palette/command-palette.component';\nimport { OmnibarPaletteComponent } from '../omnibar/omnibar-palette.component';\nimport { CommandPaletteService } from '../command-palette/command-palette.service';\n// Records-style record-open surface (Shell.RecordOpen.Style = 'records')\nimport { RecordsHubPillComponent } from './components/record-open/records-hub-pill.component';\nimport { RecordBarComponent } from './components/record-open/record-bar.component';\nimport { RecordSwitcherSheetComponent } from './components/record-open/record-switcher-sheet.component';\nimport { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { MJDropdownComponent, MJClickableDirective, MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';\nimport { SearchModule } from '@memberjunction/ng-search';\n\n@NgModule({\n declarations: [\n ShellComponent,\n AppSwitcherComponent,\n AppNavComponent,\n TabContainerComponent,\n AppAccessDialogComponent,\n CommandPaletteComponent,\n OmnibarPaletteComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MJDropdownComponent,\n MJClickableDirective,\n MJButtonDirective,\n MJEmptyStateComponent,\n ExplorerSettingsModule,\n SharedGenericModule,\n SearchModule,\n RecordsHubPillComponent,\n RecordBarComponent,\n RecordSwitcherSheetComponent\n ],\n providers: [\n CommandPaletteService\n ],\n exports: [\n ShellComponent\n ]\n})\nexport class ShellModule { }\n"]}
1
+ {"version":3,"file":"shell.module.js","sourceRoot":"","sources":["../../../src/lib/shell/shell.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,yEAAyE;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AACxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACvI,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,qFAAqF;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;;AAkCxE,MAAM,OAAO,WAAW;qGAAX,WAAW;4DAAX,WAAW;iEAPX;YACT,qBAAqB;SACtB,YAhBC,YAAY;YACZ,WAAW;YACX,mBAAmB;YAGnB,qBAAqB;YACrB,sBAAsB;YACtB,mBAAmB;YACnB,YAAY;YAGZ,4BAA4B;;iFAUnB,WAAW;cAhCvB,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,eAAe;oBACf,qBAAqB;oBACrB,wBAAwB;oBACxB,uBAAuB;oBACvB,uBAAuB;iBACxB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,oBAAoB;oBACpB,iBAAiB;oBACjB,qBAAqB;oBACrB,sBAAsB;oBACtB,mBAAmB;oBACnB,YAAY;oBACZ,uBAAuB;oBACvB,kBAAkB;oBAClB,4BAA4B;oBAC5B,mBAAmB;iBACpB;gBACD,SAAS,EAAE;oBACT,qBAAqB;iBACtB;gBACD,OAAO,EAAE;oBACP,cAAc;iBACf;aACF;;wFACY,WAAW,mBA9BpB,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,wBAAwB;QACxB,uBAAuB;QACvB,uBAAuB,aAGvB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;QACjB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;QACnB,YAAY;QACZ,uBAAuB;QACvB,kBAAkB;QAClB,4BAA4B;QAC5B,mBAAmB,aAMnB,cAAc","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ShellComponent } from './shell.component';\nimport { AppSwitcherComponent } from './components/header/app-switcher.component';\nimport { AppNavComponent } from './components/header/app-nav.component';\nimport { TabContainerComponent } from './components/tabs/tab-container.component';\nimport { AppAccessDialogComponent } from './components/dialogs/app-access-dialog.component';\nimport { CommandPaletteComponent } from '../command-palette/command-palette.component';\nimport { OmnibarPaletteComponent } from '../omnibar/omnibar-palette.component';\nimport { CommandPaletteService } from '../command-palette/command-palette.service';\n// Records-style record-open surface (Shell.RecordOpen.Style = 'records')\nimport { RecordsHubPillComponent } from './components/record-open/records-hub-pill.component';\nimport { RecordBarComponent } from './components/record-open/record-bar.component';\nimport { RecordSwitcherSheetComponent } from './components/record-open/record-switcher-sheet.component';\nimport { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { MJDropdownComponent, MJClickableDirective, MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';\nimport { SearchModule } from '@memberjunction/ng-search';\n// Marks the main content area as a panel a call can share on its own (\"This panel\").\nimport { SharePanelDirective } from '@memberjunction/ng-realtime-media';\n\n@NgModule({\n declarations: [\n ShellComponent,\n AppSwitcherComponent,\n AppNavComponent,\n TabContainerComponent,\n AppAccessDialogComponent,\n CommandPaletteComponent,\n OmnibarPaletteComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MJDropdownComponent,\n MJClickableDirective,\n MJButtonDirective,\n MJEmptyStateComponent,\n ExplorerSettingsModule,\n SharedGenericModule,\n SearchModule,\n RecordsHubPillComponent,\n RecordBarComponent,\n RecordSwitcherSheetComponent,\n SharePanelDirective\n ],\n providers: [\n CommandPaletteService\n ],\n exports: [\n ShellComponent\n ]\n})\nexport class ShellModule { }\n"]}
@@ -330,7 +330,7 @@ export class SingleDashboardComponent extends BaseDashboard {
330
330
  if (this.ResourceData.ResourceRecordID && this.ResourceData.ResourceRecordID.length > 0) {
331
331
  await this.DashboardEntity.Load(this.ResourceData.ResourceRecordID);
332
332
  // Log access to dashboard (fire-and-forget, don't await)
333
- this.recentAccessService.logAccess('Dashboards', this.ResourceData.ResourceRecordID, 'dashboard');
333
+ this.recentAccessService.LogAccess('MJ: Dashboards', this.ResourceData.ResourceRecordID, 'dashboard');
334
334
  // now we have loaded and we need to get the UIConfigDetails
335
335
  const raw = this.DashboardEntity.UIConfigDetails;
336
336
  if (raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"single-dashboard.component.js","sourceRoot":"","sources":["../../../src/lib/single-dashboard/single-dashboard.component.ts","../../../src/lib/single-dashboard/single-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { MJDashboardEntityExtended, MJResourceTypeEntity } from '@memberjunction/core-entities';\nimport { Metadata } from '@memberjunction/core';\nimport { SharedService, RecentAccessService } from '@memberjunction/ng-shared';\nimport { ResourceContainerComponent } from '../generic/resource-container-component';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\n\n@Component({\n standalone: false,\n selector: 'mj-single-dashboard',\n templateUrl: './single-dashboard.component.html',\n styleUrls: ['./single-dashboard.component.css']\n})\nexport class SingleDashboardComponent extends BaseDashboard implements OnInit {\n\n @ViewChild('dashboardNameInput') DashboardNameInput!: ElementRef<HTMLInputElement>\n\n /** @deprecated Use {@link DashboardNameInput}. */\n get dashboardNameInput(): ElementRef<HTMLInputElement> {\n return this.DashboardNameInput;\n }\n /** @deprecated Use {@link DashboardNameInput}. */\n set dashboardNameInput(value: ElementRef<HTMLInputElement>) {\n this.DashboardNameInput = value;\n }\n\n @Input() public ResourceData!: ResourceData;\n @Output() public DashboardSaved: EventEmitter<MJDashboardEntityExtended> = new EventEmitter<MJDashboardEntityExtended>();\n\n /**\n * @deprecated Use {@link DashboardSaved}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (dashboardSaved) keeps working. Must stay AFTER DashboardSaved: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() public dashboardSaved = this.DashboardSaved;\n @Output() public loadComplete: EventEmitter<any> = new EventEmitter<any>(); // case-violation-ok-legacy-back-compat: an ancestor class already declares the PascalCase name\n @Output() public loadStarted: EventEmitter<any> = new EventEmitter<any>(); // case-violation-ok-legacy-back-compat: an ancestor class already declares the PascalCase name\n\n public Items: DashboardItem[] = [];\n\n /** @deprecated Use {@link Items}. */\n public get items(): DashboardItem[] {\n return this.Items;\n }\n /** @deprecated Use {@link Items}. */\n public set items(value: DashboardItem[]) {\n this.Items = value;\n }\n public DashboardEntity!: MJDashboardEntityExtended;\n\n /** @deprecated Use {@link DashboardEntity}. */\n public get dashboardEntity(): MJDashboardEntityExtended {\n return this.DashboardEntity;\n }\n /** @deprecated Use {@link DashboardEntity}. */\n public set dashboardEntity(value: MJDashboardEntityExtended) {\n this.DashboardEntity = value;\n }\n public config: DashboardConfigDetails = new DashboardConfigDetails();\n public IsItemDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsItemDialogOpened}. */\n public get isItemDialogOpened(): boolean {\n return this.IsItemDialogOpened;\n }\n /** @deprecated Use {@link IsItemDialogOpened}. */\n public set isItemDialogOpened(value: boolean) {\n this.IsItemDialogOpened = value;\n }\n public IsEditDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsEditDialogOpened}. */\n public get isEditDialogOpened(): boolean {\n return this.IsEditDialogOpened;\n }\n /** @deprecated Use {@link IsEditDialogOpened}. */\n public set isEditDialogOpened(value: boolean) {\n this.IsEditDialogOpened = value;\n }\n public IsEditDashboardNameDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsEditDashboardNameDialogOpened}. */\n public get isEditDashboardNameDialogOpened(): boolean {\n return this.IsEditDashboardNameDialogOpened;\n }\n /** @deprecated Use {@link IsEditDashboardNameDialogOpened}. */\n public set isEditDashboardNameDialogOpened(value: boolean) {\n this.IsEditDashboardNameDialogOpened = value;\n }\n public IsDeletingDashboardItem: boolean = false;\n\n /** @deprecated Use {@link IsDeletingDashboardItem}. */\n public get isDeletingDashboardItem(): boolean {\n return this.IsDeletingDashboardItem;\n }\n /** @deprecated Use {@link IsDeletingDashboardItem}. */\n public set isDeletingDashboardItem(value: boolean) {\n this.IsDeletingDashboardItem = value;\n }\n public AllowResize: boolean = false;\n\n /** @deprecated Use {@link AllowResize}. */\n public get allowResize(): boolean {\n return this.AllowResize;\n }\n /** @deprecated Use {@link AllowResize}. */\n public set allowResize(value: boolean) {\n this.AllowResize = value;\n }\n public AllowReorder: boolean = false;\n\n /** @deprecated Use {@link AllowReorder}. */\n public get allowReorder(): boolean {\n return this.AllowReorder;\n }\n /** @deprecated Use {@link AllowReorder}. */\n public set allowReorder(value: boolean) {\n this.AllowReorder = value;\n }\n public IsEditingDashboard: boolean = false;\n\n /** @deprecated Use {@link IsEditingDashboard}. */\n public get isEditingDashboard(): boolean {\n return this.IsEditingDashboard;\n }\n /** @deprecated Use {@link IsEditingDashboard}. */\n public set isEditingDashboard(value: boolean) {\n this.IsEditingDashboard = value;\n }\n public SelectedResource!: MJResourceTypeEntity | null;\n\n /** @deprecated Use {@link SelectedResource}. */\n public get selectedResource(): MJResourceTypeEntity | null {\n return this.SelectedResource;\n }\n /** @deprecated Use {@link SelectedResource}. */\n public set selectedResource(value: MJResourceTypeEntity | null) {\n this.SelectedResource = value;\n }\n public SelectedDashboardItem!: DashboardItem | null;\n\n /** @deprecated Use {@link SelectedDashboardItem}. */\n public get selectedDashboardItem(): DashboardItem | null {\n return this.SelectedDashboardItem;\n }\n /** @deprecated Use {@link SelectedDashboardItem}. */\n public set selectedDashboardItem(value: DashboardItem | null) {\n this.SelectedDashboardItem = value;\n }\n private saveChangesSubject: Subject<any> = new Subject();\n private editOnLoad: boolean = false;\n private recentAccessService: RecentAccessService;\n\n public get ContentLoading(): boolean {\n for (const item of this.Items) {\n if (item.contentLoading) {\n return true;\n }\n }\n return false;\n }\n\n /** @deprecated Use {@link ContentLoading}. */\n public get contentLoading(): boolean {\n return this.ContentLoading;\n }\n\n protected initDashboard(): void {\n \n }\n protected loadData(): void {\n \n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return \"Dashboard\"\n }\n\n constructor(private route: ActivatedRoute, public SharedService: SharedService) {\n super();\n this.recentAccessService = new RecentAccessService();\n\n this.saveChangesSubject\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe(() => {\n this.SaveDashboard();\n });\n\n let edit = this.route.snapshot.queryParamMap.get('edit');\n if(edit){\n this.editOnLoad = true;\n }\n }\n\n /** @deprecated Use {@link SharedService}. */\n public get sharedService(): SharedService {\n return this.SharedService;\n }\n /** @deprecated Use {@link SharedService}. */\n public set sharedService(value: SharedService) {\n this.SharedService = value;\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n // load up the dashboard\n const d = this.ResourceData;\n const config = this.ResourceData.Configuration;\n if (this.ResourceData) {\n const md = this.ProviderToUse;\n let uiConfig: any = {items:[]};\n this.DashboardEntity = await md.GetEntityObject<MJDashboardEntityExtended>('MJ: Dashboards');\n if (this.ResourceData.ResourceRecordID && this.ResourceData.ResourceRecordID.length > 0) {\n await this.DashboardEntity.Load(this.ResourceData.ResourceRecordID);\n // Log access to dashboard (fire-and-forget, don't await)\n this.recentAccessService.logAccess('Dashboards', this.ResourceData.ResourceRecordID, 'dashboard');\n\n // now we have loaded and we need to get the UIConfigDetails\n const raw = this.DashboardEntity.UIConfigDetails;\n if (raw) {\n uiConfig = JSON.parse(raw);\n this.config.columns = uiConfig.columns;\n this.config.rowHeight = uiConfig.rowHeight;\n this.config.resizable = uiConfig.resizable;\n this.config.reorderable = uiConfig.reorderable;\n }\n\n //the save and canel functions call this function\n //and we only want to show the edit view once\n if(this.editOnLoad){\n this.editOnLoad = false;\n this.ToggleEditDashboard(true);\n }\n }\n else {\n this.DashboardEntity.NewRecord(); // creating a new dashboard\n this.DashboardEntity.UserID = md.CurrentUser.ID;\n \n // We should never get here now because dashboard creation is handled in dashboard-browser\n // But just in case, set a better default name\n this.DashboardEntity.Name = 'My Dashboard';\n \n // Set default configuration\n this.config.columns = 4; // 4-column layout\n this.config.rowHeight = 150;\n this.config.resizable = true;\n this.config.reorderable = true;\n \n // Automatically show edit mode for new dashboards to encourage adding items\n setTimeout(() => {\n this.ToggleEditDashboard(true);\n }, 500);\n }\n\n // now we need to load up the items\n this.Items = [];\n //const tempItems = uiConfig.items.sort((a: any, b: any) => a.order - b.order);\n for (const item of uiConfig.items) {\n const dashboardItem = this.CreateDashboardItem(item);\n this.Items.push(dashboardItem);\n }\n }\n\n this.NotifyLoadComplete();\n }\n\n protected CreateDashboardItem(item: any): DashboardItem {\n const dashboardItem = new DashboardItem();\n if (item) {\n dashboardItem.title = item.title;\n dashboardItem.order = item.order ? item.order : 0;\n dashboardItem.col = item.col;\n dashboardItem.row = item.row;\n dashboardItem.rowSpan = item.rowSpan;\n dashboardItem.colSpan = item.colSpan;\n dashboardItem.ResourceData = new ResourceData(item.ResourceData); \n }\n return dashboardItem;\n }\n\n public LoadingStarted(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.Items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = true;\n this.loadStarted.emit();\n }\n }\n\n /** @deprecated Use {@link LoadingStarted}. */\n public loadingStarted(resourceComponent: ResourceContainerComponent) {\n return this.LoadingStarted(resourceComponent);\n }\n\n public LoadingComplete(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.Items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = false;\n if (!this.ContentLoading) {\n this.loadComplete.emit();\n }\n }\n }\n\n /** @deprecated Use {@link LoadingComplete}. */\n public loadingComplete(resourceComponent: ResourceContainerComponent) {\n return this.LoadingComplete(resourceComponent);\n }\n\n public AddItem(resourceType: any = null): void {\n this.SelectedResource = resourceType;\n this.IsItemDialogOpened = true;\n this.IsEditDialogOpened = false;\n }\n\n /** @deprecated Use {@link AddItem}. */\n public addItem(resourceType: any = null): void {\n return this.AddItem(resourceType);\n }\n\n public CloseDialog(data: any): void {\n if(data) {\n const dashboardItem = this.CreateDashboardItem(data);\n this.Items.push(dashboardItem);\n console.log(dashboardItem);\n this.saveChangesSubject.next(true);\n }\n this.SelectedResource = null;\n this.IsItemDialogOpened = false;\n }\n\n /** @deprecated Use {@link CloseDialog}. */\n public closeDialog(data: any): void {\n return this.CloseDialog(data);\n }\n\n public ToggleEditDashboard(allowEdit: boolean): void {\n this.AllowReorder = allowEdit;\n this.AllowResize = allowEdit;\n this.IsEditingDashboard = allowEdit;\n this.ToggleInlineNameEdit(false);\n }\n\n /** @deprecated Use {@link ToggleEditDashboard}. */\n public toggleEditDashboard(allowEdit: boolean): void {\n return this.ToggleEditDashboard(allowEdit);\n }\n\n public async OnClickSaveDashboard(): Promise<void> {\n this.ToggleEditDashboard(false);\n let result = await this.SaveDashboard();\n if(result){\n this.SharedService.CreateSimpleNotification(\"Dashboard changes have been saved.\", \"success\", 1000);\n await this.ngOnInit();\n }\n else{\n this.SharedService.CreateSimpleNotification(\"An error occured saving the dashboard changes\", \"error\", 1000);\n }\n }\n\n /** @deprecated Use {@link OnClickSaveDashboard}. */\n public async onClickSaveDashboard(): Promise<void> {\n return this.OnClickSaveDashboard();\n }\n\n public async OnclickCancelChanges(): Promise<void> {\n this.ToggleEditDashboard(false);\n await this.ngOnInit();\n }\n\n /** @deprecated Use {@link OnclickCancelChanges}. */\n public async onclickCancelChanges(): Promise<void> {\n return this.OnclickCancelChanges();\n }\n\n public CloseDashboardDialog(data: any = null){\n this.IsEditDialogOpened = false;\n }\n\n /** @deprecated Use {@link CloseDashboardDialog}. */\n public closeDashboardDialog(data: any = null) {\n return this.CloseDashboardDialog(data);\n }\n\n SaveChanges(data: any): void {\n if(data.config){\n this.config = data.config;\n }\n if(data.itemsChanged && data.items){\n this.Items = data.items;\n this.SharedService.InvokeManualResize();\n }\n this.SaveDashboard();\n this.CloseDashboardDialog();\n }\n\n /** @deprecated Use {@link SaveChanges}. */\n saveChanges(data: any): void {\n return this.SaveChanges(data);\n }\n\n public async SaveDashboard(): Promise<boolean> {\n if (this.DashboardEntity) {\n const configData = {\n columns: this.config.columns,\n rowHeight: this.config.rowHeight,\n resizable: this.config.resizable,\n reorderable: this.config.reorderable,\n items: this.Items\n }\n const configJSON = JSON.stringify(configData);\n this.DashboardEntity.UIConfigDetails = configJSON;\n const result = await this.DashboardEntity.Save();\n \n return result;\n }\n else \n return false;\n }\n\n public DashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n this.DashboardSaved.emit(entity);\n }\n\n /** @deprecated Use {@link DashboardSaveComplete}. */\n public dashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n return this.DashboardSaveComplete(entity);\n }\n\n public ToggleInlineNameEdit(visible: boolean): void {\n this.IsEditDashboardNameDialogOpened = visible;\n if(this.IsEditDashboardNameDialogOpened){\n this.DashboardNameInput?.nativeElement?.focus();\n }\n }\n\n /** @deprecated Use {@link ToggleInlineNameEdit}. */\n public toggleInlineNameEdit(visible: boolean): void {\n return this.ToggleInlineNameEdit(visible);\n }\n\n public SaveDashboardName(): void {\n this.ToggleInlineNameEdit(true);\n const inputValue = this.DashboardNameInput.nativeElement.value;\n if(inputValue && inputValue.length > 3){\n this.DashboardEntity.Name = inputValue;\n this.SaveDashboard();\n }\n else {\n this.SharedService.CreateSimpleNotification('Invalid dashboard name: Must be at least 3 characters.','warning', 1000);\n }\n }\n\n /** @deprecated Use {@link SaveDashboardName}. */\n public saveDashboardName(): void {\n return this.SaveDashboardName();\n }\n\n public CancelNameChange(): void {\n this.ToggleInlineNameEdit(false);\n }\n\n /** @deprecated Use {@link CancelNameChange}. */\n public cancelNameChange(): void {\n return this.CancelNameChange();\n }\n\n public CloseDeleteItemComponent(): void {\n this.SelectedDashboardItem = null;\n this.IsDeletingDashboardItem = false;\n }\n\n /** @deprecated Use {@link CloseDeleteItemComponent}. */\n public closeDeleteItemComponent(): void {\n return this.CloseDeleteItemComponent();\n }\n\n public ShowConfirmDeleteDashboardItem(item: DashboardItem): void {\n this.SelectedDashboardItem = item;\n this.IsDeletingDashboardItem = true;\n }\n\n /** @deprecated Use {@link ShowConfirmDeleteDashboardItem}. */\n public showConfirmDeleteDashboardItem(item: DashboardItem): void {\n return this.ShowConfirmDeleteDashboardItem(item);\n }\n\n public async DeleteDashboardItem(item: DashboardItem): Promise<void> {\n this.Items = this.Items.filter(i => i.uniqueId != item.uniqueId);\n let result = await this.SaveDashboard();\n if(result){\n this.SharedService.CreateSimpleNotification(`Dashboard item ${item.uniqueId} deleted successfully`, \"success\", 1000);\n }\n else{\n this.SharedService.CreateSimpleNotification(`Unable to delete dashboard item ${item.uniqueId}`, \"error\", 1000);\n }\n this.SelectedDashboardItem = null;\n this.IsDeletingDashboardItem = false;\n }\n\n /** @deprecated Use {@link DeleteDashboardItem}. */\n public async deleteDashboardItem(item: DashboardItem): Promise<void> {\n return this.DeleteDashboardItem(item);\n }\n\n public GetIsEditingItemBodyStyle(): string {\n return this.IsEditingDashboard ? \"bg-light-grey\" : \"\";\n }\n\n /** @deprecated Use {@link GetIsEditingItemBodyStyle}. */\n public getIsEditingItemBodyStyle(): string {\n return this.GetIsEditingItemBodyStyle();\n }\n\n public GetIsEditingItemHeaderStyle(): string {\n return this.IsEditingDashboard ? \"bg-dark-grey\" : \"bg-blue\";\n }\n\n /** @deprecated Use {@link GetIsEditingItemHeaderStyle}. */\n public getIsEditingItemHeaderStyle(): string {\n return this.GetIsEditingItemHeaderStyle();\n }\n\n OnReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.Items.find(i => i.uniqueId === e.uniqueId) : this.Items[e.oldIndex];\n if (item) {\n if (e.oldIndex !== e.newIndex) {\n this.Items.splice(e.oldIndex, 1);\n this.Items.splice(e.newIndex, 0, item);\n }\n item.col = e.newCol ?? item.col;\n item.row = e.newRow ?? item.row;\n }\n }\n\n /** @deprecated Use {@link OnReorder}. */\n onReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n return this.OnReorder(e);\n }\n\n OnResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.Items.find(i => i.uniqueId === e.uniqueId) : undefined;\n if (item) {\n item.colSpan = e.newColSpan;\n item.rowSpan = e.newRowSpan;\n }\n }\n\n /** @deprecated Use {@link OnResize}. */\n onResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n return this.OnResize(e);\n }\n\n OnMouseEnter(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /** @deprecated Use {@link OnMouseEnter}. */\n onMouseEnter(e: MouseEvent): void {\n return this.OnMouseEnter(e);\n }\n\n OnMouseOut(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /** @deprecated Use {@link OnMouseOut}. */\n onMouseOut(e: MouseEvent): void {\n return this.OnMouseOut(e);\n }\n\n /**\n * Get the appropriate icon for a resource type\n * @param resourceType The type of resource\n * @returns FontAwesome icon class\n */\n GetResourceIcon(resourceType: string | undefined): string {\n // Default to a cube icon if type is undefined\n if (!resourceType) return 'fa-solid fa-cube';\n \n // Map resource types to appropriate FontAwesome icons\n const iconMap: {[key: string]: string} = {\n 'UserViews': 'fa-solid fa-table',\n 'Dashboards': 'fa-solid fa-grip',\n 'Lists': 'fa-solid fa-list',\n 'default': 'fa-solid fa-cube'\n };\n \n return iconMap[resourceType] || iconMap['default'];\n }\n\n /** @deprecated Use {@link GetResourceIcon}. */\n getResourceIcon(resourceType: string | undefined): string {\n return this.GetResourceIcon(resourceType);\n }\n}\n\nexport class DashboardConfigDetails {\n columns: number = 4; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n rowHeight: number = 150; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n resizable: boolean = true; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n reorderable: boolean = true; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n}\n\nexport class DashboardItem {\n private static nextUniqueId: number = 1;\n private getNextUniqueID(): number {\n return DashboardItem.nextUniqueId++;\n }\n constructor() {\n this.UniqueId = this.getNextUniqueID();\n }\n UniqueId!: number;\n\n /** @deprecated Use {@link UniqueId}. */\n get uniqueId(): number {\n return this.UniqueId;\n }\n /** @deprecated Use {@link UniqueId}. */\n set uniqueId(value: number) {\n this.UniqueId = value;\n }\n Title!: string;\n\n /** @deprecated Use {@link Title}. */\n get title(): string {\n return this.Title;\n }\n /** @deprecated Use {@link Title}. */\n set title(value: string) {\n this.Title = value;\n }\n Col!: number;\n\n /** @deprecated Use {@link Col}. */\n get col(): number {\n return this.Col;\n }\n /** @deprecated Use {@link Col}. */\n set col(value: number) {\n this.Col = value;\n }\n Row!: number;\n\n /** @deprecated Use {@link Row}. */\n get row(): number {\n return this.Row;\n }\n /** @deprecated Use {@link Row}. */\n set row(value: number) {\n this.Row = value;\n }\n RowSpan!: number;\n\n /** @deprecated Use {@link RowSpan}. */\n get rowSpan(): number {\n return this.RowSpan;\n }\n /** @deprecated Use {@link RowSpan}. */\n set rowSpan(value: number) {\n this.RowSpan = value;\n }\n ColSpan!: number;\n\n /** @deprecated Use {@link ColSpan}. */\n get colSpan(): number {\n return this.ColSpan;\n }\n /** @deprecated Use {@link ColSpan}. */\n set colSpan(value: number) {\n this.ColSpan = value;\n }\n Order!: number;\n\n /** @deprecated Use {@link Order}. */\n get order(): number {\n return this.Order;\n }\n /** @deprecated Use {@link Order}. */\n set order(value: number) {\n this.Order = value;\n }\n ResourceData!: ResourceData;\n ContentLoading: boolean = false;\n\n /** @deprecated Use {@link ContentLoading}. */\n get contentLoading(): boolean {\n return this.ContentLoading;\n }\n /** @deprecated Use {@link ContentLoading}. */\n set contentLoading(value: boolean) {\n this.ContentLoading = value;\n }\n}","@if (isItemDialogOpened) {\n <app-add-item-dialog (onClose)=\"closeDialog($event)\" [selectedResource]=\"selectedResource\"></app-add-item-dialog>\n}\n@if (isEditDialogOpened) {\n <div>\n <app-edit-dashboard (onClose)=\"closeDashboardDialog($event)\" (triggerAddItem)=\"addItem($event)\" [items]=\"items\" [config]=\"config\" (onSave)=\"saveChanges($event)\"></app-edit-dashboard>\n </div>\n}\n\n@if (isDeletingDashboardItem) {\n <app-delete-item-dialog [dashboardItem]=\"selectedDashboardItem\" (removeDashboardItem)=\"deleteDashboardItem($event)\" (onClose)=\"closeDeleteItemComponent()\"></app-delete-item-dialog>\n}\n\n<div class=\"dashboard-container\">\n <div class=\"main-head-dashboard\">\n <div class=\"dashboard-title\">\n @if (isEditDashboardNameDialogOpened) {\n <div class=\"dashboard-header\">\n <input class=\"mj-input\" (keydown.enter)=\"saveDashboardName()\" type=\"text\" placeholder=\"Enter name here\" id=\"txtDashboardName\" #dashboardNameInput>\n <button mjButton (click)=\"saveDashboardName()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"cancelNameChange()\" >\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <i class=\"fa-solid fa-star dashboard-star-icon\" aria-hidden=\"true\"></i>\n <h3 (click)=\"toggleInlineNameEdit(true)\">{{dashboardEntity ? dashboardEntity.Name : ''}}</h3>\n }\n </div>\n <div class=\"dashboard-header\">\n @if (isEditingDashboard) {\n <div>\n <button mjButton (click)=\"onClickSaveDashboard()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"onclickCancelChanges()\">\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <button mjButton (click)=\"addItem()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add Item\n </button>\n <button mjButton (click)=\"toggleEditDashboard(true)\" >\n <span class=\"fa-solid fa-gear\"></span>\n Edit Dashboard\n </button>\n }\n </div>\n </div>\n <div class=\"tile-resource-container\">\n <!-- Show empty state if no items -->\n @if (items.length === 0 && !isEditingDashboard) {\n <mj-empty-state class=\"empty-dashboard\"\n Icon=\"fa-solid fa-grip-vertical\"\n Title=\"This dashboard is empty\"\n Message=\"Start by adding reports or user views to your dashboard\"\n ActionText=\"Add Item\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addItem()\" />\n }\n\n <!-- Show tile layout if there are items or if editing -->\n @if (items.length > 0 || isEditingDashboard) {\n <div class=\"mj-tile-layout\"\n [style.grid-template-columns]=\"'repeat(' + config.columns + ', 1fr)'\"\n [style.grid-auto-rows]=\"config.rowHeight + 'px'\">\n @for (item of items; track item.uniqueId) {\n <div class=\"mj-tile-item\"\n [style.grid-column]=\"item.col + ' / span ' + item.colSpan\"\n [style.grid-row]=\"'span ' + item.rowSpan\"\n [id]=\"item.uniqueId\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseOut($event)\">\n <div class=\"mj-tile-header\" [ngClass]=\"[getIsEditingItemHeaderStyle()]\">\n <div class=\"item-title\">\n <i [class]=\"getResourceIcon(item.ResourceData.ResourceType)\" aria-hidden=\"true\"></i>\n {{item.title}}\n </div>\n @if (!isEditingDashboard) {\n <div>\n <div class=\"btn-wrapper\">\n <button mjButton title=\"Edit dashboard\" (click)=\"toggleEditDashboard(true)\">\n <span class=\"fa-solid fa-pen-to-square\"></span>\n </button>\n <button mjButton title=\"Remove item\" (click)=\"showConfirmDeleteDashboardItem(item)\">\n <span class=\"fa-solid fa-trash\"></span>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"mj-tile-body\" [ngClass]=\"[getIsEditingItemBodyStyle()]\">\n <mj-resource [Data]=\"item.ResourceData\" [isVisible]=\"true\" (ContentLoadingStarted)=\"loadingStarted($event)\" (ContentLoadingComplete)=\"loadingComplete($event)\"></mj-resource>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"single-dashboard.component.js","sourceRoot":"","sources":["../../../src/lib/single-dashboard/single-dashboard.component.ts","../../../src/lib/single-dashboard/single-dashboard.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ResourceData } from '@memberjunction/core-entities';\nimport { MJDashboardEntityExtended, MJResourceTypeEntity } from '@memberjunction/core-entities';\nimport { Metadata } from '@memberjunction/core';\nimport { SharedService, RecentAccessService } from '@memberjunction/ng-shared';\nimport { ResourceContainerComponent } from '../generic/resource-container-component';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\n\n@Component({\n standalone: false,\n selector: 'mj-single-dashboard',\n templateUrl: './single-dashboard.component.html',\n styleUrls: ['./single-dashboard.component.css']\n})\nexport class SingleDashboardComponent extends BaseDashboard implements OnInit {\n\n @ViewChild('dashboardNameInput') DashboardNameInput!: ElementRef<HTMLInputElement>\n\n /** @deprecated Use {@link DashboardNameInput}. */\n get dashboardNameInput(): ElementRef<HTMLInputElement> {\n return this.DashboardNameInput;\n }\n /** @deprecated Use {@link DashboardNameInput}. */\n set dashboardNameInput(value: ElementRef<HTMLInputElement>) {\n this.DashboardNameInput = value;\n }\n\n @Input() public ResourceData!: ResourceData;\n @Output() public DashboardSaved: EventEmitter<MJDashboardEntityExtended> = new EventEmitter<MJDashboardEntityExtended>();\n\n /**\n * @deprecated Use {@link DashboardSaved}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (dashboardSaved) keeps working. Must stay AFTER DashboardSaved: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() public dashboardSaved = this.DashboardSaved;\n @Output() public loadComplete: EventEmitter<any> = new EventEmitter<any>(); // case-violation-ok-legacy-back-compat: an ancestor class already declares the PascalCase name\n @Output() public loadStarted: EventEmitter<any> = new EventEmitter<any>(); // case-violation-ok-legacy-back-compat: an ancestor class already declares the PascalCase name\n\n public Items: DashboardItem[] = [];\n\n /** @deprecated Use {@link Items}. */\n public get items(): DashboardItem[] {\n return this.Items;\n }\n /** @deprecated Use {@link Items}. */\n public set items(value: DashboardItem[]) {\n this.Items = value;\n }\n public DashboardEntity!: MJDashboardEntityExtended;\n\n /** @deprecated Use {@link DashboardEntity}. */\n public get dashboardEntity(): MJDashboardEntityExtended {\n return this.DashboardEntity;\n }\n /** @deprecated Use {@link DashboardEntity}. */\n public set dashboardEntity(value: MJDashboardEntityExtended) {\n this.DashboardEntity = value;\n }\n public config: DashboardConfigDetails = new DashboardConfigDetails();\n public IsItemDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsItemDialogOpened}. */\n public get isItemDialogOpened(): boolean {\n return this.IsItemDialogOpened;\n }\n /** @deprecated Use {@link IsItemDialogOpened}. */\n public set isItemDialogOpened(value: boolean) {\n this.IsItemDialogOpened = value;\n }\n public IsEditDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsEditDialogOpened}. */\n public get isEditDialogOpened(): boolean {\n return this.IsEditDialogOpened;\n }\n /** @deprecated Use {@link IsEditDialogOpened}. */\n public set isEditDialogOpened(value: boolean) {\n this.IsEditDialogOpened = value;\n }\n public IsEditDashboardNameDialogOpened: boolean = false;\n\n /** @deprecated Use {@link IsEditDashboardNameDialogOpened}. */\n public get isEditDashboardNameDialogOpened(): boolean {\n return this.IsEditDashboardNameDialogOpened;\n }\n /** @deprecated Use {@link IsEditDashboardNameDialogOpened}. */\n public set isEditDashboardNameDialogOpened(value: boolean) {\n this.IsEditDashboardNameDialogOpened = value;\n }\n public IsDeletingDashboardItem: boolean = false;\n\n /** @deprecated Use {@link IsDeletingDashboardItem}. */\n public get isDeletingDashboardItem(): boolean {\n return this.IsDeletingDashboardItem;\n }\n /** @deprecated Use {@link IsDeletingDashboardItem}. */\n public set isDeletingDashboardItem(value: boolean) {\n this.IsDeletingDashboardItem = value;\n }\n public AllowResize: boolean = false;\n\n /** @deprecated Use {@link AllowResize}. */\n public get allowResize(): boolean {\n return this.AllowResize;\n }\n /** @deprecated Use {@link AllowResize}. */\n public set allowResize(value: boolean) {\n this.AllowResize = value;\n }\n public AllowReorder: boolean = false;\n\n /** @deprecated Use {@link AllowReorder}. */\n public get allowReorder(): boolean {\n return this.AllowReorder;\n }\n /** @deprecated Use {@link AllowReorder}. */\n public set allowReorder(value: boolean) {\n this.AllowReorder = value;\n }\n public IsEditingDashboard: boolean = false;\n\n /** @deprecated Use {@link IsEditingDashboard}. */\n public get isEditingDashboard(): boolean {\n return this.IsEditingDashboard;\n }\n /** @deprecated Use {@link IsEditingDashboard}. */\n public set isEditingDashboard(value: boolean) {\n this.IsEditingDashboard = value;\n }\n public SelectedResource!: MJResourceTypeEntity | null;\n\n /** @deprecated Use {@link SelectedResource}. */\n public get selectedResource(): MJResourceTypeEntity | null {\n return this.SelectedResource;\n }\n /** @deprecated Use {@link SelectedResource}. */\n public set selectedResource(value: MJResourceTypeEntity | null) {\n this.SelectedResource = value;\n }\n public SelectedDashboardItem!: DashboardItem | null;\n\n /** @deprecated Use {@link SelectedDashboardItem}. */\n public get selectedDashboardItem(): DashboardItem | null {\n return this.SelectedDashboardItem;\n }\n /** @deprecated Use {@link SelectedDashboardItem}. */\n public set selectedDashboardItem(value: DashboardItem | null) {\n this.SelectedDashboardItem = value;\n }\n private saveChangesSubject: Subject<any> = new Subject();\n private editOnLoad: boolean = false;\n private recentAccessService: RecentAccessService;\n\n public get ContentLoading(): boolean {\n for (const item of this.Items) {\n if (item.contentLoading) {\n return true;\n }\n }\n return false;\n }\n\n /** @deprecated Use {@link ContentLoading}. */\n public get contentLoading(): boolean {\n return this.ContentLoading;\n }\n\n protected initDashboard(): void {\n \n }\n protected loadData(): void {\n \n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return \"Dashboard\"\n }\n\n constructor(private route: ActivatedRoute, public SharedService: SharedService) {\n super();\n this.recentAccessService = new RecentAccessService();\n\n this.saveChangesSubject\n .pipe(debounceTime(500), takeUntil(this.destroy$))\n .subscribe(() => {\n this.SaveDashboard();\n });\n\n let edit = this.route.snapshot.queryParamMap.get('edit');\n if(edit){\n this.editOnLoad = true;\n }\n }\n\n /** @deprecated Use {@link SharedService}. */\n public get sharedService(): SharedService {\n return this.SharedService;\n }\n /** @deprecated Use {@link SharedService}. */\n public set sharedService(value: SharedService) {\n this.SharedService = value;\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n // load up the dashboard\n const d = this.ResourceData;\n const config = this.ResourceData.Configuration;\n if (this.ResourceData) {\n const md = this.ProviderToUse;\n let uiConfig: any = {items:[]};\n this.DashboardEntity = await md.GetEntityObject<MJDashboardEntityExtended>('MJ: Dashboards');\n if (this.ResourceData.ResourceRecordID && this.ResourceData.ResourceRecordID.length > 0) {\n await this.DashboardEntity.Load(this.ResourceData.ResourceRecordID);\n // Log access to dashboard (fire-and-forget, don't await)\n this.recentAccessService.LogAccess('MJ: Dashboards', this.ResourceData.ResourceRecordID, 'dashboard');\n\n // now we have loaded and we need to get the UIConfigDetails\n const raw = this.DashboardEntity.UIConfigDetails;\n if (raw) {\n uiConfig = JSON.parse(raw);\n this.config.columns = uiConfig.columns;\n this.config.rowHeight = uiConfig.rowHeight;\n this.config.resizable = uiConfig.resizable;\n this.config.reorderable = uiConfig.reorderable;\n }\n\n //the save and canel functions call this function\n //and we only want to show the edit view once\n if(this.editOnLoad){\n this.editOnLoad = false;\n this.ToggleEditDashboard(true);\n }\n }\n else {\n this.DashboardEntity.NewRecord(); // creating a new dashboard\n this.DashboardEntity.UserID = md.CurrentUser.ID;\n \n // We should never get here now because dashboard creation is handled in dashboard-browser\n // But just in case, set a better default name\n this.DashboardEntity.Name = 'My Dashboard';\n \n // Set default configuration\n this.config.columns = 4; // 4-column layout\n this.config.rowHeight = 150;\n this.config.resizable = true;\n this.config.reorderable = true;\n \n // Automatically show edit mode for new dashboards to encourage adding items\n setTimeout(() => {\n this.ToggleEditDashboard(true);\n }, 500);\n }\n\n // now we need to load up the items\n this.Items = [];\n //const tempItems = uiConfig.items.sort((a: any, b: any) => a.order - b.order);\n for (const item of uiConfig.items) {\n const dashboardItem = this.CreateDashboardItem(item);\n this.Items.push(dashboardItem);\n }\n }\n\n this.NotifyLoadComplete();\n }\n\n protected CreateDashboardItem(item: any): DashboardItem {\n const dashboardItem = new DashboardItem();\n if (item) {\n dashboardItem.title = item.title;\n dashboardItem.order = item.order ? item.order : 0;\n dashboardItem.col = item.col;\n dashboardItem.row = item.row;\n dashboardItem.rowSpan = item.rowSpan;\n dashboardItem.colSpan = item.colSpan;\n dashboardItem.ResourceData = new ResourceData(item.ResourceData); \n }\n return dashboardItem;\n }\n\n public LoadingStarted(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.Items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = true;\n this.loadStarted.emit();\n }\n }\n\n /** @deprecated Use {@link LoadingStarted}. */\n public loadingStarted(resourceComponent: ResourceContainerComponent) {\n return this.LoadingStarted(resourceComponent);\n }\n\n public LoadingComplete(resourceComponent: ResourceContainerComponent) {\n // look up the copmonent in the \n const item = this.Items.find(i => i.ResourceData === resourceComponent.Data);\n if (item) {\n item.contentLoading = false;\n if (!this.ContentLoading) {\n this.loadComplete.emit();\n }\n }\n }\n\n /** @deprecated Use {@link LoadingComplete}. */\n public loadingComplete(resourceComponent: ResourceContainerComponent) {\n return this.LoadingComplete(resourceComponent);\n }\n\n public AddItem(resourceType: any = null): void {\n this.SelectedResource = resourceType;\n this.IsItemDialogOpened = true;\n this.IsEditDialogOpened = false;\n }\n\n /** @deprecated Use {@link AddItem}. */\n public addItem(resourceType: any = null): void {\n return this.AddItem(resourceType);\n }\n\n public CloseDialog(data: any): void {\n if(data) {\n const dashboardItem = this.CreateDashboardItem(data);\n this.Items.push(dashboardItem);\n console.log(dashboardItem);\n this.saveChangesSubject.next(true);\n }\n this.SelectedResource = null;\n this.IsItemDialogOpened = false;\n }\n\n /** @deprecated Use {@link CloseDialog}. */\n public closeDialog(data: any): void {\n return this.CloseDialog(data);\n }\n\n public ToggleEditDashboard(allowEdit: boolean): void {\n this.AllowReorder = allowEdit;\n this.AllowResize = allowEdit;\n this.IsEditingDashboard = allowEdit;\n this.ToggleInlineNameEdit(false);\n }\n\n /** @deprecated Use {@link ToggleEditDashboard}. */\n public toggleEditDashboard(allowEdit: boolean): void {\n return this.ToggleEditDashboard(allowEdit);\n }\n\n public async OnClickSaveDashboard(): Promise<void> {\n this.ToggleEditDashboard(false);\n let result = await this.SaveDashboard();\n if(result){\n this.SharedService.CreateSimpleNotification(\"Dashboard changes have been saved.\", \"success\", 1000);\n await this.ngOnInit();\n }\n else{\n this.SharedService.CreateSimpleNotification(\"An error occured saving the dashboard changes\", \"error\", 1000);\n }\n }\n\n /** @deprecated Use {@link OnClickSaveDashboard}. */\n public async onClickSaveDashboard(): Promise<void> {\n return this.OnClickSaveDashboard();\n }\n\n public async OnclickCancelChanges(): Promise<void> {\n this.ToggleEditDashboard(false);\n await this.ngOnInit();\n }\n\n /** @deprecated Use {@link OnclickCancelChanges}. */\n public async onclickCancelChanges(): Promise<void> {\n return this.OnclickCancelChanges();\n }\n\n public CloseDashboardDialog(data: any = null){\n this.IsEditDialogOpened = false;\n }\n\n /** @deprecated Use {@link CloseDashboardDialog}. */\n public closeDashboardDialog(data: any = null) {\n return this.CloseDashboardDialog(data);\n }\n\n SaveChanges(data: any): void {\n if(data.config){\n this.config = data.config;\n }\n if(data.itemsChanged && data.items){\n this.Items = data.items;\n this.SharedService.InvokeManualResize();\n }\n this.SaveDashboard();\n this.CloseDashboardDialog();\n }\n\n /** @deprecated Use {@link SaveChanges}. */\n saveChanges(data: any): void {\n return this.SaveChanges(data);\n }\n\n public async SaveDashboard(): Promise<boolean> {\n if (this.DashboardEntity) {\n const configData = {\n columns: this.config.columns,\n rowHeight: this.config.rowHeight,\n resizable: this.config.resizable,\n reorderable: this.config.reorderable,\n items: this.Items\n }\n const configJSON = JSON.stringify(configData);\n this.DashboardEntity.UIConfigDetails = configJSON;\n const result = await this.DashboardEntity.Save();\n \n return result;\n }\n else \n return false;\n }\n\n public DashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n this.DashboardSaved.emit(entity);\n }\n\n /** @deprecated Use {@link DashboardSaveComplete}. */\n public dashboardSaveComplete(entity: MJDashboardEntityExtended): void {\n return this.DashboardSaveComplete(entity);\n }\n\n public ToggleInlineNameEdit(visible: boolean): void {\n this.IsEditDashboardNameDialogOpened = visible;\n if(this.IsEditDashboardNameDialogOpened){\n this.DashboardNameInput?.nativeElement?.focus();\n }\n }\n\n /** @deprecated Use {@link ToggleInlineNameEdit}. */\n public toggleInlineNameEdit(visible: boolean): void {\n return this.ToggleInlineNameEdit(visible);\n }\n\n public SaveDashboardName(): void {\n this.ToggleInlineNameEdit(true);\n const inputValue = this.DashboardNameInput.nativeElement.value;\n if(inputValue && inputValue.length > 3){\n this.DashboardEntity.Name = inputValue;\n this.SaveDashboard();\n }\n else {\n this.SharedService.CreateSimpleNotification('Invalid dashboard name: Must be at least 3 characters.','warning', 1000);\n }\n }\n\n /** @deprecated Use {@link SaveDashboardName}. */\n public saveDashboardName(): void {\n return this.SaveDashboardName();\n }\n\n public CancelNameChange(): void {\n this.ToggleInlineNameEdit(false);\n }\n\n /** @deprecated Use {@link CancelNameChange}. */\n public cancelNameChange(): void {\n return this.CancelNameChange();\n }\n\n public CloseDeleteItemComponent(): void {\n this.SelectedDashboardItem = null;\n this.IsDeletingDashboardItem = false;\n }\n\n /** @deprecated Use {@link CloseDeleteItemComponent}. */\n public closeDeleteItemComponent(): void {\n return this.CloseDeleteItemComponent();\n }\n\n public ShowConfirmDeleteDashboardItem(item: DashboardItem): void {\n this.SelectedDashboardItem = item;\n this.IsDeletingDashboardItem = true;\n }\n\n /** @deprecated Use {@link ShowConfirmDeleteDashboardItem}. */\n public showConfirmDeleteDashboardItem(item: DashboardItem): void {\n return this.ShowConfirmDeleteDashboardItem(item);\n }\n\n public async DeleteDashboardItem(item: DashboardItem): Promise<void> {\n this.Items = this.Items.filter(i => i.uniqueId != item.uniqueId);\n let result = await this.SaveDashboard();\n if(result){\n this.SharedService.CreateSimpleNotification(`Dashboard item ${item.uniqueId} deleted successfully`, \"success\", 1000);\n }\n else{\n this.SharedService.CreateSimpleNotification(`Unable to delete dashboard item ${item.uniqueId}`, \"error\", 1000);\n }\n this.SelectedDashboardItem = null;\n this.IsDeletingDashboardItem = false;\n }\n\n /** @deprecated Use {@link DeleteDashboardItem}. */\n public async deleteDashboardItem(item: DashboardItem): Promise<void> {\n return this.DeleteDashboardItem(item);\n }\n\n public GetIsEditingItemBodyStyle(): string {\n return this.IsEditingDashboard ? \"bg-light-grey\" : \"\";\n }\n\n /** @deprecated Use {@link GetIsEditingItemBodyStyle}. */\n public getIsEditingItemBodyStyle(): string {\n return this.GetIsEditingItemBodyStyle();\n }\n\n public GetIsEditingItemHeaderStyle(): string {\n return this.IsEditingDashboard ? \"bg-dark-grey\" : \"bg-blue\";\n }\n\n /** @deprecated Use {@link GetIsEditingItemHeaderStyle}. */\n public getIsEditingItemHeaderStyle(): string {\n return this.GetIsEditingItemHeaderStyle();\n }\n\n OnReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.Items.find(i => i.uniqueId === e.uniqueId) : this.Items[e.oldIndex];\n if (item) {\n if (e.oldIndex !== e.newIndex) {\n this.Items.splice(e.oldIndex, 1);\n this.Items.splice(e.newIndex, 0, item);\n }\n item.col = e.newCol ?? item.col;\n item.row = e.newRow ?? item.row;\n }\n }\n\n /** @deprecated Use {@link OnReorder}. */\n onReorder(e: { oldIndex: number; newIndex: number; newCol?: number; newRow?: number; uniqueId?: number }): void {\n return this.OnReorder(e);\n }\n\n OnResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n const item = e.uniqueId != null ? this.Items.find(i => i.uniqueId === e.uniqueId) : undefined;\n if (item) {\n item.colSpan = e.newColSpan;\n item.rowSpan = e.newRowSpan;\n }\n }\n\n /** @deprecated Use {@link OnResize}. */\n onResize(e: { newColSpan: number; newRowSpan: number; uniqueId?: number }): void {\n return this.OnResize(e);\n }\n\n OnMouseEnter(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /** @deprecated Use {@link OnMouseEnter}. */\n onMouseEnter(e: MouseEvent): void {\n return this.OnMouseEnter(e);\n }\n\n OnMouseOut(e: MouseEvent): void {\n // Available for future drag-and-drop support\n }\n\n /** @deprecated Use {@link OnMouseOut}. */\n onMouseOut(e: MouseEvent): void {\n return this.OnMouseOut(e);\n }\n\n /**\n * Get the appropriate icon for a resource type\n * @param resourceType The type of resource\n * @returns FontAwesome icon class\n */\n GetResourceIcon(resourceType: string | undefined): string {\n // Default to a cube icon if type is undefined\n if (!resourceType) return 'fa-solid fa-cube';\n \n // Map resource types to appropriate FontAwesome icons\n const iconMap: {[key: string]: string} = {\n 'UserViews': 'fa-solid fa-table',\n 'Dashboards': 'fa-solid fa-grip',\n 'Lists': 'fa-solid fa-list',\n 'default': 'fa-solid fa-cube'\n };\n \n return iconMap[resourceType] || iconMap['default'];\n }\n\n /** @deprecated Use {@link GetResourceIcon}. */\n getResourceIcon(resourceType: string | undefined): string {\n return this.GetResourceIcon(resourceType);\n }\n}\n\nexport class DashboardConfigDetails {\n columns: number = 4; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n rowHeight: number = 150; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n resizable: boolean = true; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n reorderable: boolean = true; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply\n}\n\nexport class DashboardItem {\n private static nextUniqueId: number = 1;\n private getNextUniqueID(): number {\n return DashboardItem.nextUniqueId++;\n }\n constructor() {\n this.UniqueId = this.getNextUniqueID();\n }\n UniqueId!: number;\n\n /** @deprecated Use {@link UniqueId}. */\n get uniqueId(): number {\n return this.UniqueId;\n }\n /** @deprecated Use {@link UniqueId}. */\n set uniqueId(value: number) {\n this.UniqueId = value;\n }\n Title!: string;\n\n /** @deprecated Use {@link Title}. */\n get title(): string {\n return this.Title;\n }\n /** @deprecated Use {@link Title}. */\n set title(value: string) {\n this.Title = value;\n }\n Col!: number;\n\n /** @deprecated Use {@link Col}. */\n get col(): number {\n return this.Col;\n }\n /** @deprecated Use {@link Col}. */\n set col(value: number) {\n this.Col = value;\n }\n Row!: number;\n\n /** @deprecated Use {@link Row}. */\n get row(): number {\n return this.Row;\n }\n /** @deprecated Use {@link Row}. */\n set row(value: number) {\n this.Row = value;\n }\n RowSpan!: number;\n\n /** @deprecated Use {@link RowSpan}. */\n get rowSpan(): number {\n return this.RowSpan;\n }\n /** @deprecated Use {@link RowSpan}. */\n set rowSpan(value: number) {\n this.RowSpan = value;\n }\n ColSpan!: number;\n\n /** @deprecated Use {@link ColSpan}. */\n get colSpan(): number {\n return this.ColSpan;\n }\n /** @deprecated Use {@link ColSpan}. */\n set colSpan(value: number) {\n this.ColSpan = value;\n }\n Order!: number;\n\n /** @deprecated Use {@link Order}. */\n get order(): number {\n return this.Order;\n }\n /** @deprecated Use {@link Order}. */\n set order(value: number) {\n this.Order = value;\n }\n ResourceData!: ResourceData;\n ContentLoading: boolean = false;\n\n /** @deprecated Use {@link ContentLoading}. */\n get contentLoading(): boolean {\n return this.ContentLoading;\n }\n /** @deprecated Use {@link ContentLoading}. */\n set contentLoading(value: boolean) {\n this.ContentLoading = value;\n }\n}","@if (isItemDialogOpened) {\n <app-add-item-dialog (onClose)=\"closeDialog($event)\" [selectedResource]=\"selectedResource\"></app-add-item-dialog>\n}\n@if (isEditDialogOpened) {\n <div>\n <app-edit-dashboard (onClose)=\"closeDashboardDialog($event)\" (triggerAddItem)=\"addItem($event)\" [items]=\"items\" [config]=\"config\" (onSave)=\"saveChanges($event)\"></app-edit-dashboard>\n </div>\n}\n\n@if (isDeletingDashboardItem) {\n <app-delete-item-dialog [dashboardItem]=\"selectedDashboardItem\" (removeDashboardItem)=\"deleteDashboardItem($event)\" (onClose)=\"closeDeleteItemComponent()\"></app-delete-item-dialog>\n}\n\n<div class=\"dashboard-container\">\n <div class=\"main-head-dashboard\">\n <div class=\"dashboard-title\">\n @if (isEditDashboardNameDialogOpened) {\n <div class=\"dashboard-header\">\n <input class=\"mj-input\" (keydown.enter)=\"saveDashboardName()\" type=\"text\" placeholder=\"Enter name here\" id=\"txtDashboardName\" #dashboardNameInput>\n <button mjButton (click)=\"saveDashboardName()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"cancelNameChange()\" >\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <i class=\"fa-solid fa-star dashboard-star-icon\" aria-hidden=\"true\"></i>\n <h3 (click)=\"toggleInlineNameEdit(true)\">{{dashboardEntity ? dashboardEntity.Name : ''}}</h3>\n }\n </div>\n <div class=\"dashboard-header\">\n @if (isEditingDashboard) {\n <div>\n <button mjButton (click)=\"onClickSaveDashboard()\">\n <span class=\"fa-solid fa-check\"></span>\n Save\n </button>\n <button mjButton (click)=\"onclickCancelChanges()\">\n <span class=\"fa-solid fa-xmark\"></span>\n Cancel\n </button>\n </div>\n } @else {\n <button mjButton (click)=\"addItem()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add Item\n </button>\n <button mjButton (click)=\"toggleEditDashboard(true)\" >\n <span class=\"fa-solid fa-gear\"></span>\n Edit Dashboard\n </button>\n }\n </div>\n </div>\n <div class=\"tile-resource-container\">\n <!-- Show empty state if no items -->\n @if (items.length === 0 && !isEditingDashboard) {\n <mj-empty-state class=\"empty-dashboard\"\n Icon=\"fa-solid fa-grip-vertical\"\n Title=\"This dashboard is empty\"\n Message=\"Start by adding reports or user views to your dashboard\"\n ActionText=\"Add Item\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addItem()\" />\n }\n\n <!-- Show tile layout if there are items or if editing -->\n @if (items.length > 0 || isEditingDashboard) {\n <div class=\"mj-tile-layout\"\n [style.grid-template-columns]=\"'repeat(' + config.columns + ', 1fr)'\"\n [style.grid-auto-rows]=\"config.rowHeight + 'px'\">\n @for (item of items; track item.uniqueId) {\n <div class=\"mj-tile-item\"\n [style.grid-column]=\"item.col + ' / span ' + item.colSpan\"\n [style.grid-row]=\"'span ' + item.rowSpan\"\n [id]=\"item.uniqueId\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseOut($event)\">\n <div class=\"mj-tile-header\" [ngClass]=\"[getIsEditingItemHeaderStyle()]\">\n <div class=\"item-title\">\n <i [class]=\"getResourceIcon(item.ResourceData.ResourceType)\" aria-hidden=\"true\"></i>\n {{item.title}}\n </div>\n @if (!isEditingDashboard) {\n <div>\n <div class=\"btn-wrapper\">\n <button mjButton title=\"Edit dashboard\" (click)=\"toggleEditDashboard(true)\">\n <span class=\"fa-solid fa-pen-to-square\"></span>\n </button>\n <button mjButton title=\"Remove item\" (click)=\"showConfirmDeleteDashboardItem(item)\">\n <span class=\"fa-solid fa-trash\"></span>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"mj-tile-body\" [ngClass]=\"[getIsEditingItemBodyStyle()]\">\n <mj-resource [Data]=\"item.ResourceData\" [isVisible]=\"true\" (ContentLoadingStarted)=\"loadingStarted($event)\" (ContentLoadingComplete)=\"loadingComplete($event)\"></mj-resource>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n"]}
@@ -0,0 +1,20 @@
1
+ import { OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A banner across the top of Explorer while the signed-in user is a template user (`User.IsTemplate`).
5
+ *
6
+ * A template user exists to be copied: its pinned apps, views, settings, dashboards and conversations
7
+ * become the starting point for new users. Working in one by mistake changes what every future copy
8
+ * gets, so the banner is loud and stays up for the whole session.
9
+ */
10
+ export declare class TemplateUserBannerComponent implements OnInit {
11
+ private readonly destroyRef;
12
+ /** The template user's email while one is signed in; null otherwise. A signal, so a late sign-in redraws. */
13
+ readonly TemplateEmail: import("@angular/core").WritableSignal<string | null>;
14
+ ngOnInit(): void;
15
+ /** Re-reads the current user. */
16
+ Refresh(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TemplateUserBannerComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<TemplateUserBannerComponent, "mj-template-user-banner", never, {}, {}, never, never, true, never>;
19
+ }
20
+ //# sourceMappingURL=template-user-banner.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-user-banner.component.d.ts","sourceRoot":"","sources":["../../../src/lib/template-user/template-user-banner.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,EAAkB,MAAM,eAAe,CAAC;;AAM9E;;;;;;GAMG;AACH,qBAkDa,2BAA4B,YAAW,MAAM;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,6GAA6G;IAC7G,SAAgB,aAAa,wDAA+B;IAE5D,QAAQ,IAAI,IAAI;IAYhB,iCAAiC;IAC1B,OAAO,IAAI,IAAI;yCAnBX,2BAA2B;2CAA3B,2BAA2B;CAuBvC"}
@@ -0,0 +1,67 @@
1
+ import { Component, DestroyRef, inject, signal } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { filter } from 'rxjs/operators';
4
+ import { Metadata } from '@memberjunction/core';
5
+ import { MJEventType, MJGlobal } from '@memberjunction/global';
6
+ import * as i0 from "@angular/core";
7
+ function TemplateUserBannerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵdomElementStart(0, "div", 0);
9
+ i0.ɵɵdomElement(1, "i", 1);
10
+ i0.ɵɵdomElementStart(2, "span")(3, "strong");
11
+ i0.ɵɵtext(4, "Template user.");
12
+ i0.ɵɵdomElementEnd();
13
+ i0.ɵɵtext(5);
14
+ i0.ɵɵdomElementEnd()();
15
+ } if (rf & 2) {
16
+ i0.ɵɵadvance(5);
17
+ i0.ɵɵtextInterpolate1(" You are signed in as ", ctx, ", a template. Everything you set up here (pinned apps, views, settings, dashboards, conversations) is copied to new users created from this template. ");
18
+ } }
19
+ /**
20
+ * A banner across the top of Explorer while the signed-in user is a template user (`User.IsTemplate`).
21
+ *
22
+ * A template user exists to be copied: its pinned apps, views, settings, dashboards and conversations
23
+ * become the starting point for new users. Working in one by mistake changes what every future copy
24
+ * gets, so the banner is loud and stays up for the whole session.
25
+ */
26
+ export class TemplateUserBannerComponent {
27
+ destroyRef = inject(DestroyRef);
28
+ /** The template user's email while one is signed in; null otherwise. A signal, so a late sign-in redraws. */
29
+ TemplateEmail = signal(null, ...(ngDevMode ? [{ debugName: "TemplateEmail" }] : /* istanbul ignore next */ []));
30
+ ngOnInit() {
31
+ // The current user is known once the provider signs in; the replaying listener covers a banner
32
+ // created after that happened.
33
+ MJGlobal.Instance.GetEventListener(true)
34
+ .pipe(filter((e) => e.event === MJEventType.LoggedIn), takeUntilDestroyed(this.destroyRef))
35
+ .subscribe(() => this.Refresh());
36
+ this.Refresh();
37
+ }
38
+ /** Re-reads the current user. */
39
+ Refresh() {
40
+ const user = Metadata.Provider?.CurrentUser; // global-provider-ok: the Explorer shell runs under the single signed-in provider
41
+ this.TemplateEmail.set(user?.IsTemplate === true ? user.Email || user.Name : null);
42
+ }
43
+ static ɵfac = function TemplateUserBannerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TemplateUserBannerComponent)(); };
44
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TemplateUserBannerComponent, selectors: [["mj-template-user-banner"]], decls: 1, vars: 1, consts: [["role", "alert", 1, "template-user-banner"], ["aria-hidden", "true", 1, "fa-solid", "fa-clone"]], template: function TemplateUserBannerComponent_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵconditionalCreate(0, TemplateUserBannerComponent_Conditional_0_Template, 6, 1, "div", 0);
46
+ } if (rf & 2) {
47
+ let tmp_0_0;
48
+ i0.ɵɵconditional((tmp_0_0 = ctx.TemplateEmail()) ? 0 : -1, tmp_0_0);
49
+ } }, styles: ["[_nghost-%COMP%] {\n flex-shrink: 0;\n width: 100%;\n }\n\n .template-user-banner[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border-bottom: 2px solid var(--mj-status-error-border);\n padding: 8px 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 14px;\n }\n\n .template-user-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n flex-shrink: 0;\n }\n\n .template-user-banner[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n text-align: center;\n }\n\n @media (max-width: 480px) {\n .template-user-banner[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 13px;\n }\n }"] });
50
+ }
51
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateUserBannerComponent, [{
52
+ type: Component,
53
+ args: [{ selector: 'mj-template-user-banner', standalone: true, template: `
54
+ @if (TemplateEmail(); as email) {
55
+ <div class="template-user-banner" role="alert">
56
+ <i class="fa-solid fa-clone" aria-hidden="true"></i>
57
+ <span>
58
+ <strong>Template user.</strong>
59
+ You are signed in as {{ email }}, a template. Everything you set up here (pinned apps, views,
60
+ settings, dashboards, conversations) is copied to new users created from this template.
61
+ </span>
62
+ </div>
63
+ }
64
+ `, styles: ["\n :host {\n flex-shrink: 0;\n width: 100%;\n }\n\n .template-user-banner {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border-bottom: 2px solid var(--mj-status-error-border);\n padding: 8px 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 14px;\n }\n\n .template-user-banner i {\n font-size: 16px;\n flex-shrink: 0;\n }\n\n .template-user-banner span {\n text-align: center;\n }\n\n @media (max-width: 480px) {\n .template-user-banner {\n padding: 6px 12px;\n font-size: 13px;\n }\n }\n "] }]
65
+ }], null, null); })();
66
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TemplateUserBannerComponent, { className: "TemplateUserBannerComponent", filePath: "src/lib/template-user/template-user-banner.component.ts", lineNumber: 64 }); })();
67
+ //# sourceMappingURL=template-user-banner.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-user-banner.component.js","sourceRoot":"","sources":["../../../src/lib/template-user/template-user-banner.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;;;IAczD,iCAA+C;IAC7C,0BAAoD;IAElD,AADF,+BAAM,aACI;IAAA,8BAAc;IAAA,oBAAS;IAC/B,YAEF;IACF,AADE,oBAAO,EACH;;IAHF,eAEF;IAFE,8MAEF;;AAlBR;;;;;;GAMG;AAmDH,MAAM,OAAO,2BAA2B;IACrB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAEjD,6GAA6G;IAC7F,aAAa,GAAG,MAAM,CAAgB,IAAI,oFAAC,CAAC;IAE5D,QAAQ;QACN,+FAA+F;QAC/F,+BAA+B;QAC/B,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;aACrC,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,QAAQ,CAAC,EAC/C,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC;aACA,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,iCAAiC;IAC1B,OAAO;QACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,kFAAkF;QAC/H,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC;qHAtBU,2BAA2B;6DAA3B,2BAA2B;YA9CpC,6FAAiC;;;YAAjC,mEASC;;;iFAqCQ,2BAA2B;cAlDvC,SAAS;2BACE,yBAAyB,cACvB,IAAI,YACN;;;;;;;;;;;GAWT;;kFAoCU,2BAA2B","sourcesContent":["import { Component, DestroyRef, OnInit, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { Metadata } from '@memberjunction/core';\nimport { MJEventType, MJGlobal } from '@memberjunction/global';\n\n/**\n * A banner across the top of Explorer while the signed-in user is a template user (`User.IsTemplate`).\n *\n * A template user exists to be copied: its pinned apps, views, settings, dashboards and conversations\n * become the starting point for new users. Working in one by mistake changes what every future copy\n * gets, so the banner is loud and stays up for the whole session.\n */\n@Component({\n selector: 'mj-template-user-banner',\n standalone: true,\n template: `\n @if (TemplateEmail(); as email) {\n <div class=\"template-user-banner\" role=\"alert\">\n <i class=\"fa-solid fa-clone\" aria-hidden=\"true\"></i>\n <span>\n <strong>Template user.</strong>\n You are signed in as {{ email }}, a template. Everything you set up here (pinned apps, views,\n settings, dashboards, conversations) is copied to new users created from this template.\n </span>\n </div>\n }\n `,\n styles: [`\n :host {\n flex-shrink: 0;\n width: 100%;\n }\n\n .template-user-banner {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border-bottom: 2px solid var(--mj-status-error-border);\n padding: 8px 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 14px;\n }\n\n .template-user-banner i {\n font-size: 16px;\n flex-shrink: 0;\n }\n\n .template-user-banner span {\n text-align: center;\n }\n\n @media (max-width: 480px) {\n .template-user-banner {\n padding: 6px 12px;\n font-size: 13px;\n }\n }\n `],\n})\nexport class TemplateUserBannerComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n /** The template user's email while one is signed in; null otherwise. A signal, so a late sign-in redraws. */\n public readonly TemplateEmail = signal<string | null>(null);\n\n ngOnInit(): void {\n // The current user is known once the provider signs in; the replaying listener covers a banner\n // created after that happened.\n MJGlobal.Instance.GetEventListener(true)\n .pipe(\n filter((e) => e.event === MJEventType.LoggedIn),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.Refresh());\n this.Refresh();\n }\n\n /** Re-reads the current user. */\n public Refresh(): void {\n const user = Metadata.Provider?.CurrentUser; // global-provider-ok: the Explorer shell runs under the single signed-in provider\n this.TemplateEmail.set(user?.IsTemplate === true ? user.Email || user.Name : null);\n }\n}\n"]}
package/dist/module.d.ts CHANGED
@@ -3,67 +3,69 @@ import * as i1 from "./lib/oauth/oauth-callback.component";
3
3
  import * as i2 from "./lib/identity-claims/claim-redeem.component";
4
4
  import * as i3 from "./lib/generic/resource-container-component";
5
5
  import * as i4 from "./lib/resource-wrappers/dashboard-resource.component";
6
- import * as i5 from "./lib/resource-wrappers/record-resource.component";
7
- import * as i6 from "./lib/resource-wrappers/search-results-resource.component";
8
- import * as i7 from "./lib/resource-wrappers/view-resource.component";
9
- import * as i8 from "./lib/single-record/single-record.component";
10
- import * as i9 from "./lib/single-search-result/single-search-result.component";
11
- import * as i10 from "./lib/single-query/single-query.component";
12
- import * as i11 from "./lib/user-profile/user-profile.component";
13
- import * as i12 from "./lib/single-dashboard/single-dashboard.component";
14
- import * as i13 from "./lib/single-dashboard/Components/add-item/add-item.component";
15
- import * as i14 from "./lib/single-dashboard/Components/delete-item/delete-item.component";
16
- import * as i15 from "./lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component";
17
- import * as i16 from "./lib/user-notifications/user-notifications.component";
18
- import * as i17 from "./lib/resource-wrappers/query-resource.component";
19
- import * as i18 from "./lib/single-list-detail/single-list-detail.component";
20
- import * as i19 from "./lib/resource-wrappers/list-detail-resource.component";
21
- import * as i20 from "./lib/resource-wrappers/chat-conversations-resource.component";
22
- import * as i21 from "./lib/resource-wrappers/chat-collections-resource.component";
23
- import * as i22 from "./lib/resource-wrappers/chat-tasks-resource.component";
24
- import * as i23 from "./lib/resource-wrappers/artifact-resource.component";
25
- import * as i24 from "./lib/resource-wrappers/notifications-resource.component";
26
- import * as i25 from "./lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component";
27
- import * as i26 from "./lib/conversation-feedback/conversation-feedback";
28
- import * as i27 from "./lib/resource-wrappers/livekit-room-resource.component";
29
- import * as i28 from "./lib/resource-wrappers/human-handoff-console-resource.component";
30
- import * as i29 from "./lib/resource-wrappers/meetings-resource.component";
31
- import * as i30 from "@memberjunction/ng-markdown";
32
- import * as i31 from "./app-routing.module";
33
- import * as i32 from "@angular/common";
34
- import * as i33 from "@angular/forms";
35
- import * as i34 from "@angular/router";
36
- import * as i35 from "@memberjunction/ng-export-service";
37
- import * as i36 from "@memberjunction/ng-record-changes";
38
- import * as i37 from "@memberjunction/ng-container-directives";
39
- import * as i38 from "@memberjunction/ng-base-forms";
40
- import * as i39 from "@memberjunction/ng-query-viewer";
41
- import * as i40 from "@memberjunction/ng-shared";
42
- import * as i41 from "@memberjunction/ng-conversations";
43
- import * as i42 from "@memberjunction/ng-dashboards/core-dashboards.module";
44
- import * as i43 from "@memberjunction/ng-dashboard-viewer";
45
- import * as i44 from "@memberjunction/ng-explorer-settings";
46
- import * as i45 from "@memberjunction/ng-file-storage";
47
- import * as i46 from "@memberjunction/ng-entity-form-dialog";
48
- import * as i47 from "@memberjunction/ng-record-selector";
49
- import * as i48 from "@memberjunction/ng-resource-permissions";
50
- import * as i49 from "@memberjunction/ng-generic-dialog";
51
- import * as i50 from "@memberjunction/ng-ui-components";
52
- import * as i51 from "@angular/cdk/drag-drop";
53
- import * as i52 from "@memberjunction/ng-ai-test-harness";
54
- import * as i53 from "@memberjunction/ng-artifacts";
55
- import * as i54 from "@memberjunction/ng-shared-generic";
56
- import * as i55 from "@memberjunction/ng-entity-viewer";
57
- import * as i56 from "@memberjunction/ng-list-detail-grid";
58
- import * as i57 from "@memberjunction/ng-list-management";
59
- import * as i58 from "@memberjunction/ng-search";
60
- import * as i59 from "@memberjunction/ng-word-cloud";
61
- import * as i60 from "@memberjunction/ng-pagination";
62
- import * as i61 from "@memberjunction/ng-mj-livekit-room";
63
- import * as i62 from "@memberjunction/ng-conversation-offers";
6
+ import * as i5 from "./lib/resource-wrappers/dashboard-add-to-menu.component";
7
+ import * as i6 from "./lib/resource-wrappers/record-resource.component";
8
+ import * as i7 from "./lib/resource-wrappers/search-results-resource.component";
9
+ import * as i8 from "./lib/resource-wrappers/view-resource.component";
10
+ import * as i9 from "./lib/single-record/single-record.component";
11
+ import * as i10 from "./lib/single-search-result/single-search-result.component";
12
+ import * as i11 from "./lib/single-query/single-query.component";
13
+ import * as i12 from "./lib/user-profile/user-profile.component";
14
+ import * as i13 from "./lib/single-dashboard/single-dashboard.component";
15
+ import * as i14 from "./lib/single-dashboard/Components/add-item/add-item.component";
16
+ import * as i15 from "./lib/single-dashboard/Components/delete-item/delete-item.component";
17
+ import * as i16 from "./lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component";
18
+ import * as i17 from "./lib/user-notifications/user-notifications.component";
19
+ import * as i18 from "./lib/resource-wrappers/query-resource.component";
20
+ import * as i19 from "./lib/single-list-detail/single-list-detail.component";
21
+ import * as i20 from "./lib/resource-wrappers/list-detail-resource.component";
22
+ import * as i21 from "./lib/resource-wrappers/chat-conversations-resource.component";
23
+ import * as i22 from "./lib/resource-wrappers/chat-collections-resource.component";
24
+ import * as i23 from "./lib/resource-wrappers/chat-tasks-resource.component";
25
+ import * as i24 from "./lib/resource-wrappers/artifact-resource.component";
26
+ import * as i25 from "./lib/resource-wrappers/notifications-resource.component";
27
+ import * as i26 from "./lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component";
28
+ import * as i27 from "./lib/conversation-feedback/conversation-feedback";
29
+ import * as i28 from "./lib/resource-wrappers/livekit-room-resource.component";
30
+ import * as i29 from "./lib/resource-wrappers/human-handoff-console-resource.component";
31
+ import * as i30 from "./lib/resource-wrappers/meetings-resource.component";
32
+ import * as i31 from "@memberjunction/ng-markdown";
33
+ import * as i32 from "./app-routing.module";
34
+ import * as i33 from "@angular/common";
35
+ import * as i34 from "@angular/forms";
36
+ import * as i35 from "@angular/router";
37
+ import * as i36 from "@memberjunction/ng-export-service";
38
+ import * as i37 from "@memberjunction/ng-record-changes";
39
+ import * as i38 from "@memberjunction/ng-container-directives";
40
+ import * as i39 from "@memberjunction/ng-base-forms";
41
+ import * as i40 from "@memberjunction/ng-query-viewer";
42
+ import * as i41 from "@memberjunction/ng-shared";
43
+ import * as i42 from "@memberjunction/ng-conversations";
44
+ import * as i43 from "@memberjunction/ng-dashboards/core-dashboards.module";
45
+ import * as i44 from "@memberjunction/ng-dashboard-viewer";
46
+ import * as i45 from "angular-split";
47
+ import * as i46 from "@memberjunction/ng-explorer-settings";
48
+ import * as i47 from "@memberjunction/ng-file-storage";
49
+ import * as i48 from "@memberjunction/ng-entity-form-dialog";
50
+ import * as i49 from "@memberjunction/ng-record-selector";
51
+ import * as i50 from "@memberjunction/ng-resource-permissions";
52
+ import * as i51 from "@memberjunction/ng-generic-dialog";
53
+ import * as i52 from "@memberjunction/ng-ui-components";
54
+ import * as i53 from "@angular/cdk/drag-drop";
55
+ import * as i54 from "@memberjunction/ng-ai-test-harness";
56
+ import * as i55 from "@memberjunction/ng-artifacts";
57
+ import * as i56 from "@memberjunction/ng-shared-generic";
58
+ import * as i57 from "@memberjunction/ng-entity-viewer";
59
+ import * as i58 from "@memberjunction/ng-list-detail-grid";
60
+ import * as i59 from "@memberjunction/ng-list-management";
61
+ import * as i60 from "@memberjunction/ng-search";
62
+ import * as i61 from "@memberjunction/ng-word-cloud";
63
+ import * as i62 from "@memberjunction/ng-pagination";
64
+ import * as i63 from "@memberjunction/ng-mj-livekit-room";
65
+ import * as i64 from "@memberjunction/ng-conversation-offers";
64
66
  export declare class ExplorerCoreModule {
65
67
  static ɵfac: i0.ɵɵFactoryDeclaration<ExplorerCoreModule, never>;
66
- static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerCoreModule, [typeof i1.OAuthCallbackComponent, typeof i2.ClaimRedeemComponent, typeof i3.ResourceContainerComponent, typeof i4.DashboardResource, typeof i5.EntityRecordResource, typeof i6.SearchResultsResource, typeof i7.UserViewResource, typeof i8.SingleRecordComponent, typeof i9.SingleSearchResultComponent, typeof i10.SingleQueryComponent, typeof i11.UserProfileComponent, typeof i12.SingleDashboardComponent, typeof i13.AddItemComponent, typeof i14.DeleteItemComponent, typeof i15.EditDashboardComponent, typeof i16.UserNotificationsComponent, typeof i17.QueryResource, typeof i18.SingleListDetailComponent, typeof i19.ListDetailResource, typeof i20.ChatConversationsResource, typeof i21.ChatCollectionsResource, typeof i22.ChatTasksResource, typeof i23.ArtifactResource, typeof i24.NotificationsResource, typeof i25.DashboardPreferencesDialogComponent, typeof i26.ConversationFeedbackResource, typeof i27.LiveKitRoomResource, typeof i28.HumanHandoffConsoleResource, typeof i29.MeetingsResource], [typeof i30.MarkdownModule, typeof i31.AppRoutingModule, typeof i32.CommonModule, typeof i33.FormsModule, typeof i33.ReactiveFormsModule, typeof i34.RouterModule, typeof i35.ExportServiceModule, typeof i36.RecordChangesModule, typeof i37.ContainerDirectivesModule, typeof i38.BaseFormsModule, typeof i39.QueryViewerModule, typeof i40.MemberJunctionSharedModule, typeof i41.ConversationsModule, typeof i42.CoreDashboardsModule, typeof i43.DashboardViewerModule, typeof i44.ExplorerSettingsModule, typeof i45.FileStorageModule, typeof i46.EntityFormDialogModule, typeof i47.RecordSelectorModule, typeof i48.ResourcePermissionsModule, typeof i49.GenericDialogModule, typeof i50.MJProgressBarComponent, typeof i51.DragDropModule, typeof i52.AITestHarnessModule, typeof i53.ArtifactsModule, typeof i54.SharedGenericModule, typeof i55.EntityViewerModule, typeof i56.ListDetailGridModule, typeof i57.ListManagementModule, typeof i58.SearchModule, typeof i59.MJWordCloudComponent, typeof i50.MJButtonDirective, typeof i50.MJDialogComponent, typeof i50.MJDialogTitlebarComponent, typeof i50.MJDialogActionsComponent, typeof i50.MJDropdownComponent, typeof i50.MJWindowComponent, typeof i50.MJWindowTitlebarComponent, typeof i60.PaginationComponent, typeof i61.MJLiveKitRoomComponent, typeof i61.MJMeetingListComponent, typeof i61.MJMeetingScheduleFormComponent, typeof i61.MJMeetingLobbyComponent, typeof i62.MJConversationOffersComponent, typeof i50.MJEmptyStateComponent, typeof i50.MJAlertComponent], [typeof i3.ResourceContainerComponent, typeof i4.DashboardResource, typeof i5.EntityRecordResource, typeof i6.SearchResultsResource, typeof i7.UserViewResource, typeof i8.SingleRecordComponent, typeof i9.SingleSearchResultComponent, typeof i11.UserProfileComponent, typeof i12.SingleDashboardComponent, typeof i13.AddItemComponent, typeof i14.DeleteItemComponent, typeof i15.EditDashboardComponent, typeof i16.UserNotificationsComponent, typeof i19.ListDetailResource, typeof i25.DashboardPreferencesDialogComponent, typeof i26.ConversationFeedbackResource, typeof i29.MeetingsResource]>;
68
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerCoreModule, [typeof i1.OAuthCallbackComponent, typeof i2.ClaimRedeemComponent, typeof i3.ResourceContainerComponent, typeof i4.DashboardResource, typeof i5.DashboardAddToMenuComponent, typeof i6.EntityRecordResource, typeof i7.SearchResultsResource, typeof i8.UserViewResource, typeof i9.SingleRecordComponent, typeof i10.SingleSearchResultComponent, typeof i11.SingleQueryComponent, typeof i12.UserProfileComponent, typeof i13.SingleDashboardComponent, typeof i14.AddItemComponent, typeof i15.DeleteItemComponent, typeof i16.EditDashboardComponent, typeof i17.UserNotificationsComponent, typeof i18.QueryResource, typeof i19.SingleListDetailComponent, typeof i20.ListDetailResource, typeof i21.ChatConversationsResource, typeof i22.ChatCollectionsResource, typeof i23.ChatTasksResource, typeof i24.ArtifactResource, typeof i25.NotificationsResource, typeof i26.DashboardPreferencesDialogComponent, typeof i27.ConversationFeedbackResource, typeof i28.LiveKitRoomResource, typeof i29.HumanHandoffConsoleResource, typeof i30.MeetingsResource], [typeof i31.MarkdownModule, typeof i32.AppRoutingModule, typeof i33.CommonModule, typeof i34.FormsModule, typeof i34.ReactiveFormsModule, typeof i35.RouterModule, typeof i36.ExportServiceModule, typeof i37.RecordChangesModule, typeof i38.ContainerDirectivesModule, typeof i39.BaseFormsModule, typeof i40.QueryViewerModule, typeof i41.MemberJunctionSharedModule, typeof i42.ConversationsModule, typeof i43.CoreDashboardsModule, typeof i44.DashboardViewerModule, typeof i45.AngularSplitModule, typeof i46.ExplorerSettingsModule, typeof i47.FileStorageModule, typeof i48.EntityFormDialogModule, typeof i49.RecordSelectorModule, typeof i50.ResourcePermissionsModule, typeof i51.GenericDialogModule, typeof i52.MJProgressBarComponent, typeof i53.DragDropModule, typeof i54.AITestHarnessModule, typeof i55.ArtifactsModule, typeof i56.SharedGenericModule, typeof i57.EntityViewerModule, typeof i58.ListDetailGridModule, typeof i59.ListManagementModule, typeof i60.SearchModule, typeof i61.MJWordCloudComponent, typeof i52.MJButtonDirective, typeof i52.MJDialogComponent, typeof i52.MJDialogTitlebarComponent, typeof i52.MJDialogActionsComponent, typeof i52.MJDropdownComponent, typeof i52.MJWindowComponent, typeof i52.MJWindowTitlebarComponent, typeof i62.PaginationComponent, typeof i63.MJLiveKitRoomComponent, typeof i63.MJMeetingListComponent, typeof i63.MJMeetingScheduleFormComponent, typeof i63.MJMeetingLobbyComponent, typeof i64.MJConversationOffersComponent, typeof i52.MJEmptyStateComponent, typeof i52.MJAlertComponent], [typeof i3.ResourceContainerComponent, typeof i4.DashboardResource, typeof i6.EntityRecordResource, typeof i7.SearchResultsResource, typeof i8.UserViewResource, typeof i9.SingleRecordComponent, typeof i10.SingleSearchResultComponent, typeof i12.UserProfileComponent, typeof i13.SingleDashboardComponent, typeof i14.AddItemComponent, typeof i15.DeleteItemComponent, typeof i16.EditDashboardComponent, typeof i17.UserNotificationsComponent, typeof i20.ListDetailResource, typeof i26.DashboardPreferencesDialogComponent, typeof i27.ConversationFeedbackResource, typeof i30.MeetingsResource]>;
67
69
  static ɵinj: i0.ɵɵInjectorDeclaration<ExplorerCoreModule>;
68
70
  }
69
71
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,qBAyGa,kBAAkB;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAAG"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkFA,qBA2Ga,kBAAkB;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAAG"}