@memberjunction/ng-dashboards 2.120.0 → 2.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +23 -11
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +122 -95
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +88 -90
  6. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  7. package/dist/AI/components/agents/agent-filter-panel.component.js +2 -2
  8. package/dist/AI/components/execution-monitoring.component.d.ts +23 -10
  9. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  10. package/dist/AI/components/execution-monitoring.component.js +143 -124
  11. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  12. package/dist/AI/components/models/model-management-v2.component.d.ts +17 -13
  13. package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -1
  14. package/dist/AI/components/models/model-management-v2.component.js +248 -266
  15. package/dist/AI/components/models/model-management-v2.component.js.map +1 -1
  16. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +76 -78
  17. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  18. package/dist/AI/components/prompts/prompt-filter-panel.component.js +2 -2
  19. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +17 -15
  20. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -1
  21. package/dist/AI/components/prompts/prompt-management-v2.component.js +372 -397
  22. package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -1
  23. package/dist/AI/components/prompts/prompt-version-control.component.js +100 -102
  24. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  25. package/dist/AI/components/system/system-config-filter-panel.component.js +2 -2
  26. package/dist/AI/components/system/system-configuration.component.d.ts +17 -10
  27. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  28. package/dist/AI/components/system/system-configuration.component.js +82 -61
  29. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  30. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  31. package/dist/AI/components/widgets/kpi-card.component.js +11 -7
  32. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  33. package/dist/AI/index.d.ts +4 -0
  34. package/dist/AI/index.d.ts.map +1 -1
  35. package/dist/AI/index.js +6 -1
  36. package/dist/AI/index.js.map +1 -1
  37. package/dist/Actions/components/actions-list-view.component.js +9 -9
  38. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  39. package/dist/Actions/components/actions-overview.component.d.ts +16 -13
  40. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  41. package/dist/Actions/components/actions-overview.component.js +62 -48
  42. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  43. package/dist/Actions/components/categories-list-view.component.js +9 -9
  44. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  45. package/dist/Actions/components/code-management.component.d.ts +17 -7
  46. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  47. package/dist/Actions/components/code-management.component.js +45 -12
  48. package/dist/Actions/components/code-management.component.js.map +1 -1
  49. package/dist/Actions/components/entity-integration.component.d.ts +17 -7
  50. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  51. package/dist/Actions/components/entity-integration.component.js +45 -12
  52. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  53. package/dist/Actions/components/execution-monitoring.component.d.ts +16 -10
  54. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  55. package/dist/Actions/components/execution-monitoring.component.js +56 -30
  56. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  57. package/dist/Actions/components/scheduled-actions.component.d.ts +17 -7
  58. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  59. package/dist/Actions/components/scheduled-actions.component.js +45 -12
  60. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  61. package/dist/Actions/components/security-permissions.component.d.ts +17 -7
  62. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  63. package/dist/Actions/components/security-permissions.component.js +45 -12
  64. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  65. package/dist/Actions/index.d.ts +6 -1
  66. package/dist/Actions/index.d.ts.map +1 -1
  67. package/dist/Actions/index.js +9 -1
  68. package/dist/Actions/index.js.map +1 -1
  69. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  70. package/dist/ComponentStudio/component-studio-dashboard.component.js +8 -8
  71. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  72. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +52 -57
  73. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  74. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +8 -9
  75. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  76. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +107 -0
  77. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -0
  78. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +553 -0
  79. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -0
  80. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +179 -0
  81. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
  82. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +814 -0
  83. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
  84. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +151 -0
  85. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -0
  86. package/dist/DataExplorer/components/view-selector/view-selector.component.js +480 -0
  87. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -0
  88. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +439 -0
  89. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -0
  90. package/dist/DataExplorer/data-explorer-dashboard.component.js +2129 -0
  91. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -0
  92. package/dist/DataExplorer/index.d.ts +5 -0
  93. package/dist/DataExplorer/index.d.ts.map +1 -0
  94. package/dist/DataExplorer/index.js +10 -0
  95. package/dist/DataExplorer/index.js.map +1 -0
  96. package/dist/DataExplorer/models/explorer-state.interface.d.ts +183 -0
  97. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -0
  98. package/dist/DataExplorer/models/explorer-state.interface.js +31 -0
  99. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -0
  100. package/dist/DataExplorer/services/explorer-state.service.d.ts +232 -0
  101. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -0
  102. package/dist/DataExplorer/services/explorer-state.service.js +912 -0
  103. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -0
  104. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -1
  105. package/dist/EntityAdmin/components/entity-details.component.js +11 -13
  106. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -1
  107. package/dist/EntityAdmin/components/entity-filter-panel.component.js +2 -2
  108. package/dist/EntityAdmin/components/erd-composite.component.js +2 -2
  109. package/dist/EntityAdmin/components/erd-diagram.component.js +2 -2
  110. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +1 -1
  111. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  112. package/dist/EntityAdmin/entity-admin-dashboard.component.js +14 -15
  113. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  114. package/dist/Home/home-dashboard.component.d.ts +122 -0
  115. package/dist/Home/home-dashboard.component.d.ts.map +1 -0
  116. package/dist/Home/home-dashboard.component.js +698 -0
  117. package/dist/Home/home-dashboard.component.js.map +1 -0
  118. package/dist/Scheduling/components/index.d.ts +11 -0
  119. package/dist/Scheduling/components/index.d.ts.map +1 -0
  120. package/dist/Scheduling/components/index.js +13 -0
  121. package/dist/Scheduling/components/index.js.map +1 -0
  122. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +20 -0
  123. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +1 -0
  124. package/dist/Scheduling/components/scheduling-health-resource.component.js +55 -0
  125. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +1 -0
  126. package/dist/Scheduling/components/scheduling-health.component.js +7 -8
  127. package/dist/Scheduling/components/scheduling-health.component.js.map +1 -1
  128. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +20 -0
  129. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +1 -0
  130. package/dist/Scheduling/components/scheduling-history-resource.component.js +55 -0
  131. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +1 -0
  132. package/dist/Scheduling/components/scheduling-history.component.js +7 -8
  133. package/dist/Scheduling/components/scheduling-history.component.js.map +1 -1
  134. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +20 -0
  135. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -0
  136. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +55 -0
  137. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -0
  138. package/dist/Scheduling/components/scheduling-jobs.component.js +7 -8
  139. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  140. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +20 -0
  141. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +1 -0
  142. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +55 -0
  143. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +1 -0
  144. package/dist/Scheduling/components/scheduling-monitoring.component.js +7 -8
  145. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +1 -1
  146. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +20 -0
  147. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +1 -0
  148. package/dist/Scheduling/components/scheduling-types-resource.component.js +55 -0
  149. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +1 -0
  150. package/dist/Scheduling/components/scheduling-types.component.js +7 -8
  151. package/dist/Scheduling/components/scheduling-types.component.js.map +1 -1
  152. package/dist/Scheduling/scheduling-dashboard.component.d.ts +1 -1
  153. package/dist/Scheduling/scheduling-dashboard.component.js +3 -3
  154. package/dist/Testing/components/index.d.ts +11 -0
  155. package/dist/Testing/components/index.d.ts.map +1 -0
  156. package/dist/Testing/components/index.js +13 -0
  157. package/dist/Testing/components/index.js.map +1 -0
  158. package/dist/Testing/components/testing-analytics-resource.component.d.ts +20 -0
  159. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -0
  160. package/dist/Testing/components/testing-analytics-resource.component.js +55 -0
  161. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -0
  162. package/dist/Testing/components/testing-execution-resource.component.d.ts +20 -0
  163. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +1 -0
  164. package/dist/Testing/components/testing-execution-resource.component.js +55 -0
  165. package/dist/Testing/components/testing-execution-resource.component.js.map +1 -0
  166. package/dist/Testing/components/testing-execution.component.js +3 -3
  167. package/dist/Testing/components/testing-execution.component.js.map +1 -1
  168. package/dist/Testing/components/testing-feedback-resource.component.d.ts +20 -0
  169. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +1 -0
  170. package/dist/Testing/components/testing-feedback-resource.component.js +55 -0
  171. package/dist/Testing/components/testing-feedback-resource.component.js.map +1 -0
  172. package/dist/Testing/components/testing-overview-resource.component.d.ts +20 -0
  173. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +1 -0
  174. package/dist/Testing/components/testing-overview-resource.component.js +55 -0
  175. package/dist/Testing/components/testing-overview-resource.component.js.map +1 -0
  176. package/dist/Testing/components/testing-version-resource.component.d.ts +20 -0
  177. package/dist/Testing/components/testing-version-resource.component.d.ts.map +1 -0
  178. package/dist/Testing/components/testing-version-resource.component.js +55 -0
  179. package/dist/Testing/components/testing-version-resource.component.js.map +1 -0
  180. package/dist/Testing/testing-dashboard.component.d.ts +1 -1
  181. package/dist/Testing/testing-dashboard.component.js +23 -25
  182. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  183. package/dist/module.d.ts +83 -66
  184. package/dist/module.d.ts.map +1 -1
  185. package/dist/module.js +137 -19
  186. package/dist/module.js.map +1 -1
  187. package/dist/public-api.d.ts +6 -4
  188. package/dist/public-api.d.ts.map +1 -1
  189. package/dist/public-api.js +41 -13
  190. package/dist/public-api.js.map +1 -1
  191. package/package.json +17 -14
  192. package/dist/AI/ai-dashboard.component.d.ts +0 -62
  193. package/dist/AI/ai-dashboard.component.d.ts.map +0 -1
  194. package/dist/AI/ai-dashboard.component.js +0 -338
  195. package/dist/AI/ai-dashboard.component.js.map +0 -1
  196. package/dist/Actions/actions-management-dashboard.component.d.ts +0 -52
  197. package/dist/Actions/actions-management-dashboard.component.d.ts.map +0 -1
  198. package/dist/Actions/actions-management-dashboard.component.js +0 -308
  199. package/dist/Actions/actions-management-dashboard.component.js.map +0 -1
  200. package/dist/generic/base-dashboard.d.ts +0 -65
  201. package/dist/generic/base-dashboard.d.ts.map +0 -1
  202. package/dist/generic/base-dashboard.js +0 -74
  203. package/dist/generic/base-dashboard.js.map +0 -1
@@ -591,11 +591,11 @@ export class ERDDiagramComponent {
591
591
  i0.ɵɵelementEnd()()();
592
592
  i0.ɵɵelement(13, "div", 12, 0);
593
593
  i0.ɵɵelementEnd();
594
- } }, styles: [".erd-section[_ngcontent-%COMP%] {\n background: white;\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n \n h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n}\n\n.erd-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n \n &:hover {\n background-color: #f0f0f0;\n }\n}\n\n.erd-container[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n background-color: #fafafa;\n overflow: hidden;\n min-height: 400px;\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n \n svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n max-width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n }\n}\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(250, 250, 250, 0.95);\n backdrop-filter: blur(2px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.3s ease-in-out;\n}\n\n.loading-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s linear infinite;\n \n &:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n }\n \n &:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n }\n \n &:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n }\n}\n\n.loading-text[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n.control-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n// SVG visualization styles\n[_nghost-%COMP%] {\n .erd-container svg {\n .node .entity-rect.highlighted {\n stroke: #ff9800 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 8px rgba(255, 152, 0, 0.6));\n animation: pulse 1s ease-in-out infinite alternate;\n }\n \n .node.selected {\n .entity-rect {\n stroke: #2196f3 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n fill: #f3f8ff !important;\n animation: selectedPulse 2s ease-in-out infinite alternate;\n }\n \n .entity-header {\n fill: #2196f3 !important;\n }\n \n .entity-header-bottom {\n fill: #2196f3 !important;\n }\n \n .entity-name {\n fill: white !important;\n font-weight: bold !important;\n }\n }\n \n @keyframes selectedPulse {\n 0% { \n stroke-width: 4px;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n }\n 100% { \n stroke-width: 5px;\n filter: drop-shadow(0 0 16px rgba(33, 150, 243, 1));\n }\n }\n \n .node.relationship-connected {\n .entity-rect.relationship-highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n animation: entityPulse 1.5s ease-in-out infinite alternate;\n }\n \n .entity-header {\n fill: #ff6b35 !important;\n }\n \n .entity-header-bottom {\n fill: #ff6b35 !important;\n }\n }\n \n .node.entity-connections-highlighted {\n .entity-rect.connection-highlighted {\n stroke: #9b59b6 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(155, 89, 182, 0.5));\n opacity: 0.9;\n }\n \n .entity-header {\n fill: #9b59b6 !important;\n opacity: 0.8;\n }\n \n .entity-header-bottom {\n fill: #9b59b6 !important;\n opacity: 0.8;\n }\n }\n \n .link-group {\n .link {\n stroke-width: 2px;\n transition: all 0.2s ease;\n cursor: pointer;\n \n &:hover {\n stroke-width: 3px;\n stroke: #ff6b35;\n opacity: 1;\n }\n \n &.highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 4px !important;\n opacity: 1 !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n animation: linkPulse 1.5s ease-in-out infinite alternate;\n }\n }\n \n .link-label {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n opacity: 0.8;\n pointer-events: none;\n transition: opacity 0.2s ease;\n \n &.highlighted {\n opacity: 1;\n font-weight: bold;\n fill: #ff6b35;\n }\n }\n \n &.highlighted {\n z-index: 10;\n }\n }\n \n .field-group {\n .field-bg {\n transition: fill 0.2s;\n }\n \n &:hover .field-bg {\n fill: #e3f2fd !important;\n }\n }\n \n @keyframes pulse {\n 0% { stroke-width: 4px; }\n 100% { stroke-width: 6px; }\n }\n \n @keyframes linkPulse {\n 0% { \n stroke-width: 4px; \n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n }\n 100% { \n stroke-width: 5px; \n filter: drop-shadow(0 0 10px rgba(255, 107, 53, 0.8));\n }\n }\n \n @keyframes entityPulse {\n 0% { \n stroke-width: 3px; \n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n }\n 100% { \n stroke-width: 4px; \n filter: drop-shadow(0 0 8px rgba(255, 107, 53, 0.7));\n }\n }\n }\n}"] });
594
+ } }, styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.erd-section[_ngcontent-%COMP%] {\n background: white;\n overflow: hidden;\n height: 100%;\n flex-direction: column;\n min-height: 0; \n\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n}\n.section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n}\n\n.erd-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n}\n.control-btn[_ngcontent-%COMP%]:hover {\n background-color: #f0f0f0;\n}\n\n.erd-container[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n background-color: #fafafa;\n overflow: hidden;\n width: 100%;\n height: 1000px;\n box-sizing: border-box;\n}\n.erd-container[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n box-sizing: border-box;\n}\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(250, 250, 250, 0.95);\n backdrop-filter: blur(2px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.3s ease-in-out;\n}\n\n.loading-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s linear infinite;\n}\n.spinner-ring[_ngcontent-%COMP%]:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.spinner-ring[_ngcontent-%COMP%]:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.spinner-ring[_ngcontent-%COMP%]:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n\n.loading-text[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n.control-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n[_nghost-%COMP%] .erd-container svg .node .entity-rect.highlighted {\n stroke: #ff9800 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 8px rgba(255, 152, 0, 0.6));\n animation: _ngcontent-%COMP%_pulse 1s ease-in-out infinite alternate;\n}\n[_nghost-%COMP%] .erd-container svg .node.selected .entity-rect {\n stroke: #2196f3 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n fill: #f3f8ff !important;\n animation: _ngcontent-%COMP%_selectedPulse 2s ease-in-out infinite alternate;\n}\n[_nghost-%COMP%] .erd-container svg .node.selected .entity-header {\n fill: #2196f3 !important;\n}\n[_nghost-%COMP%] .erd-container svg .node.selected .entity-header-bottom {\n fill: #2196f3 !important;\n}\n[_nghost-%COMP%] .erd-container svg .node.selected .entity-name {\n fill: white !important;\n font-weight: bold !important;\n}\n@keyframes _ngcontent-%COMP%_selectedPulse {\n 0% {\n stroke-width: 4px;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n }\n 100% {\n stroke-width: 5px;\n filter: drop-shadow(0 0 16px rgb(33, 150, 243));\n }\n}\n[_nghost-%COMP%] .erd-container svg .node.relationship-connected .entity-rect.relationship-highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n animation: _ngcontent-%COMP%_entityPulse 1.5s ease-in-out infinite alternate;\n}\n[_nghost-%COMP%] .erd-container svg .node.relationship-connected .entity-header {\n fill: #ff6b35 !important;\n}\n[_nghost-%COMP%] .erd-container svg .node.relationship-connected .entity-header-bottom {\n fill: #ff6b35 !important;\n}\n[_nghost-%COMP%] .erd-container svg .node.entity-connections-highlighted .entity-rect.connection-highlighted {\n stroke: #9b59b6 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(155, 89, 182, 0.5));\n opacity: 0.9;\n}\n[_nghost-%COMP%] .erd-container svg .node.entity-connections-highlighted .entity-header {\n fill: #9b59b6 !important;\n opacity: 0.8;\n}\n[_nghost-%COMP%] .erd-container svg .node.entity-connections-highlighted .entity-header-bottom {\n fill: #9b59b6 !important;\n opacity: 0.8;\n}\n[_nghost-%COMP%] .erd-container svg .link-group .link {\n stroke-width: 2px;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n[_nghost-%COMP%] .erd-container svg .link-group .link:hover {\n stroke-width: 3px;\n stroke: #ff6b35;\n opacity: 1;\n}\n[_nghost-%COMP%] .erd-container svg .link-group .link.highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 4px !important;\n opacity: 1 !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n animation: _ngcontent-%COMP%_linkPulse 1.5s ease-in-out infinite alternate;\n}\n[_nghost-%COMP%] .erd-container svg .link-group .link-label {\n font-family: \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;\n opacity: 0.8;\n pointer-events: none;\n transition: opacity 0.2s ease;\n}\n[_nghost-%COMP%] .erd-container svg .link-group .link-label.highlighted {\n opacity: 1;\n font-weight: bold;\n fill: #ff6b35;\n}\n[_nghost-%COMP%] .erd-container svg .link-group.highlighted {\n z-index: 10;\n}\n[_nghost-%COMP%] .erd-container svg .field-group .field-bg {\n transition: fill 0.2s;\n}\n[_nghost-%COMP%] .erd-container svg .field-group:hover .field-bg {\n fill: #e3f2fd !important;\n}\n@keyframes _ngcontent-%COMP%_pulse {\n 0% {\n stroke-width: 4px;\n }\n 100% {\n stroke-width: 6px;\n }\n}\n@keyframes _ngcontent-%COMP%_linkPulse {\n 0% {\n stroke-width: 4px;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n }\n 100% {\n stroke-width: 5px;\n filter: drop-shadow(0 0 10px rgba(255, 107, 53, 0.8));\n }\n}\n@keyframes _ngcontent-%COMP%_entityPulse {\n 0% {\n stroke-width: 3px;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n }\n 100% {\n stroke-width: 4px;\n filter: drop-shadow(0 0 8px rgba(255, 107, 53, 0.7));\n }\n}"] });
595
595
  }
596
596
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ERDDiagramComponent, [{
597
597
  type: Component,
598
- args: [{ selector: 'mj-erd-diagram', template: "<div class=\"erd-section\">\n <div class=\"section-header\">\n <h3>Entity Relationship Diagram</h3>\n <div class=\"erd-controls\">\n <button class=\"control-btn\" (click)=\"zoomIn()\" title=\"Zoom In\">\n <span class=\"fa-solid fa-search-plus\"></span>\n </button>\n <button class=\"control-btn\" (click)=\"zoomOut()\" title=\"Zoom Out\">\n <span class=\"fa-solid fa-search-minus\"></span>\n </button>\n <button class=\"control-btn\" (click)=\"resetZoom()\" title=\"Reset Zoom\">\n <span class=\"fa-solid fa-expand\"></span>\n </button>\n <button class=\"control-btn\" (click)=\"setupERD()\" title=\"Refresh Diagram\">\n <span class=\"fa-solid fa-refresh\"></span>\n </button>\n </div>\n </div>\n <div class=\"erd-container\" #erdContainer></div>\n</div>", styles: [".erd-section {\n background: white;\n overflow: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n \n h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n}\n\n.erd-controls {\n display: flex;\n gap: 8px;\n}\n\n.control-btn {\n padding: 4px 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n \n &:hover {\n background-color: #f0f0f0;\n }\n}\n\n.erd-container {\n flex: 1;\n position: relative;\n background-color: #fafafa;\n overflow: hidden;\n min-height: 400px;\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n \n svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n max-width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n }\n}\n\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(250, 250, 250, 0.95);\n backdrop-filter: blur(2px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.3s ease-in-out;\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s linear infinite;\n \n &:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n }\n \n &:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n }\n \n &:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n }\n}\n\n.loading-text {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n.control-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n// SVG visualization styles\n:host ::ng-deep {\n .erd-container svg {\n .node .entity-rect.highlighted {\n stroke: #ff9800 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 8px rgba(255, 152, 0, 0.6));\n animation: pulse 1s ease-in-out infinite alternate;\n }\n \n .node.selected {\n .entity-rect {\n stroke: #2196f3 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n fill: #f3f8ff !important;\n animation: selectedPulse 2s ease-in-out infinite alternate;\n }\n \n .entity-header {\n fill: #2196f3 !important;\n }\n \n .entity-header-bottom {\n fill: #2196f3 !important;\n }\n \n .entity-name {\n fill: white !important;\n font-weight: bold !important;\n }\n }\n \n @keyframes selectedPulse {\n 0% { \n stroke-width: 4px;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n }\n 100% { \n stroke-width: 5px;\n filter: drop-shadow(0 0 16px rgba(33, 150, 243, 1));\n }\n }\n \n .node.relationship-connected {\n .entity-rect.relationship-highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n animation: entityPulse 1.5s ease-in-out infinite alternate;\n }\n \n .entity-header {\n fill: #ff6b35 !important;\n }\n \n .entity-header-bottom {\n fill: #ff6b35 !important;\n }\n }\n \n .node.entity-connections-highlighted {\n .entity-rect.connection-highlighted {\n stroke: #9b59b6 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(155, 89, 182, 0.5));\n opacity: 0.9;\n }\n \n .entity-header {\n fill: #9b59b6 !important;\n opacity: 0.8;\n }\n \n .entity-header-bottom {\n fill: #9b59b6 !important;\n opacity: 0.8;\n }\n }\n \n .link-group {\n .link {\n stroke-width: 2px;\n transition: all 0.2s ease;\n cursor: pointer;\n \n &:hover {\n stroke-width: 3px;\n stroke: #ff6b35;\n opacity: 1;\n }\n \n &.highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 4px !important;\n opacity: 1 !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n animation: linkPulse 1.5s ease-in-out infinite alternate;\n }\n }\n \n .link-label {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n opacity: 0.8;\n pointer-events: none;\n transition: opacity 0.2s ease;\n \n &.highlighted {\n opacity: 1;\n font-weight: bold;\n fill: #ff6b35;\n }\n }\n \n &.highlighted {\n z-index: 10;\n }\n }\n \n .field-group {\n .field-bg {\n transition: fill 0.2s;\n }\n \n &:hover .field-bg {\n fill: #e3f2fd !important;\n }\n }\n \n @keyframes pulse {\n 0% { stroke-width: 4px; }\n 100% { stroke-width: 6px; }\n }\n \n @keyframes linkPulse {\n 0% { \n stroke-width: 4px; \n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n }\n 100% { \n stroke-width: 5px; \n filter: drop-shadow(0 0 10px rgba(255, 107, 53, 0.8));\n }\n }\n \n @keyframes entityPulse {\n 0% { \n stroke-width: 3px; \n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n }\n 100% { \n stroke-width: 4px; \n filter: drop-shadow(0 0 8px rgba(255, 107, 53, 0.7));\n }\n }\n }\n}"] }]
598
+ args: [{ selector: 'mj-erd-diagram', template: "<div class=\"erd-section\">\n <div class=\"section-header\">\n <h3>Entity Relationship Diagram</h3>\n <div class=\"erd-controls\">\n <button class=\"control-btn\" (click)=\"zoomIn()\" title=\"Zoom In\">\n <span class=\"fa-solid fa-search-plus\"></span>\n </button>\n <button class=\"control-btn\" (click)=\"zoomOut()\" title=\"Zoom Out\">\n <span class=\"fa-solid fa-search-minus\"></span>\n </button>\n <button class=\"control-btn\" (click)=\"resetZoom()\" title=\"Reset Zoom\">\n <span class=\"fa-solid fa-expand\"></span>\n </button>\n <button class=\"control-btn\" (click)=\"setupERD()\" title=\"Refresh Diagram\">\n <span class=\"fa-solid fa-refresh\"></span>\n </button>\n </div>\n </div>\n <div class=\"erd-container\" #erdContainer></div>\n</div>", styles: [":host {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.erd-section {\n background: white;\n overflow: hidden;\n height: 100%;\n flex-direction: column;\n min-height: 0; /* Allow flex children to shrink below content size */\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n}\n.section-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n}\n\n.erd-controls {\n display: flex;\n gap: 8px;\n}\n\n.control-btn {\n padding: 4px 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n}\n.control-btn:hover {\n background-color: #f0f0f0;\n}\n\n.erd-container {\n flex: 1;\n position: relative;\n background-color: #fafafa;\n overflow: hidden;\n width: 100%;\n height: 1000px;\n box-sizing: border-box;\n}\n.erd-container svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n box-sizing: border-box;\n}\n\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(250, 250, 250, 0.95);\n backdrop-filter: blur(2px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.3s ease-in-out;\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s linear infinite;\n}\n.spinner-ring:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.spinner-ring:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.spinner-ring:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n\n.loading-text {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n.control-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n:host ::ng-deep .erd-container svg .node .entity-rect.highlighted {\n stroke: #ff9800 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 8px rgba(255, 152, 0, 0.6));\n animation: pulse 1s ease-in-out infinite alternate;\n}\n:host ::ng-deep .erd-container svg .node.selected .entity-rect {\n stroke: #2196f3 !important;\n stroke-width: 4px !important;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n fill: #f3f8ff !important;\n animation: selectedPulse 2s ease-in-out infinite alternate;\n}\n:host ::ng-deep .erd-container svg .node.selected .entity-header {\n fill: #2196f3 !important;\n}\n:host ::ng-deep .erd-container svg .node.selected .entity-header-bottom {\n fill: #2196f3 !important;\n}\n:host ::ng-deep .erd-container svg .node.selected .entity-name {\n fill: white !important;\n font-weight: bold !important;\n}\n@keyframes selectedPulse {\n 0% {\n stroke-width: 4px;\n filter: drop-shadow(0 0 12px rgba(33, 150, 243, 0.8));\n }\n 100% {\n stroke-width: 5px;\n filter: drop-shadow(0 0 16px rgb(33, 150, 243));\n }\n}\n:host ::ng-deep .erd-container svg .node.relationship-connected .entity-rect.relationship-highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n animation: entityPulse 1.5s ease-in-out infinite alternate;\n}\n:host ::ng-deep .erd-container svg .node.relationship-connected .entity-header {\n fill: #ff6b35 !important;\n}\n:host ::ng-deep .erd-container svg .node.relationship-connected .entity-header-bottom {\n fill: #ff6b35 !important;\n}\n:host ::ng-deep .erd-container svg .node.entity-connections-highlighted .entity-rect.connection-highlighted {\n stroke: #9b59b6 !important;\n stroke-width: 3px !important;\n filter: drop-shadow(0 0 6px rgba(155, 89, 182, 0.5));\n opacity: 0.9;\n}\n:host ::ng-deep .erd-container svg .node.entity-connections-highlighted .entity-header {\n fill: #9b59b6 !important;\n opacity: 0.8;\n}\n:host ::ng-deep .erd-container svg .node.entity-connections-highlighted .entity-header-bottom {\n fill: #9b59b6 !important;\n opacity: 0.8;\n}\n:host ::ng-deep .erd-container svg .link-group .link {\n stroke-width: 2px;\n transition: all 0.2s ease;\n cursor: pointer;\n}\n:host ::ng-deep .erd-container svg .link-group .link:hover {\n stroke-width: 3px;\n stroke: #ff6b35;\n opacity: 1;\n}\n:host ::ng-deep .erd-container svg .link-group .link.highlighted {\n stroke: #ff6b35 !important;\n stroke-width: 4px !important;\n opacity: 1 !important;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n animation: linkPulse 1.5s ease-in-out infinite alternate;\n}\n:host ::ng-deep .erd-container svg .link-group .link-label {\n font-family: \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;\n opacity: 0.8;\n pointer-events: none;\n transition: opacity 0.2s ease;\n}\n:host ::ng-deep .erd-container svg .link-group .link-label.highlighted {\n opacity: 1;\n font-weight: bold;\n fill: #ff6b35;\n}\n:host ::ng-deep .erd-container svg .link-group.highlighted {\n z-index: 10;\n}\n:host ::ng-deep .erd-container svg .field-group .field-bg {\n transition: fill 0.2s;\n}\n:host ::ng-deep .erd-container svg .field-group:hover .field-bg {\n fill: #e3f2fd !important;\n}\n@keyframes pulse {\n 0% {\n stroke-width: 4px;\n }\n 100% {\n stroke-width: 6px;\n }\n}\n@keyframes linkPulse {\n 0% {\n stroke-width: 4px;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.6));\n }\n 100% {\n stroke-width: 5px;\n filter: drop-shadow(0 0 10px rgba(255, 107, 53, 0.8));\n }\n}\n@keyframes entityPulse {\n 0% {\n stroke-width: 3px;\n filter: drop-shadow(0 0 6px rgba(255, 107, 53, 0.5));\n }\n 100% {\n stroke-width: 4px;\n filter: drop-shadow(0 0 8px rgba(255, 107, 53, 0.7));\n }\n}\n"] }]
599
599
  }], null, { erdContainer: [{
600
600
  type: ViewChild,
601
601
  args: ['erdContainer', { static: false }]
@@ -1,5 +1,5 @@
1
1
  import { AfterViewInit, OnDestroy } from '@angular/core';
2
- import { BaseDashboard } from '../generic/base-dashboard';
2
+ import { BaseDashboard } from '@memberjunction/ng-shared';
3
3
  import { EntityInfo } from '@memberjunction/core';
4
4
  import { ERDCompositeComponent } from './components/erd-composite.component';
5
5
  import * as i0 from "@angular/core";
@@ -1 +1 @@
1
- {"version":3,"file":"entity-admin-dashboard.component.d.ts","sourceRoot":"","sources":["../../src/EntityAdmin/entity-admin-dashboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAIhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;;AAE7E,UAAU,cAAc;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,GAAG,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAED,qBAMa,6BAA8B,SAAQ,aAAc,YAAW,aAAa,EAAE,SAAS;IACpD,YAAY,EAAG,qBAAqB,CAAC;IAE5E,SAAS,UAAS;IAClB,eAAe,UAAS;IACxB,cAAc,SAAM;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,kBAAkB,UAAQ;IAC1B,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IACzC,gBAAgB,EAAE,UAAU,EAAE,CAAM;IAG3C,OAAO,CAAC,sBAAsB,CAAiC;IAC/D,OAAO,CAAC,kBAAkB,CAAS;IAEnC,eAAe,IAAI,IAAI;IASvB,WAAW,IAAI,IAAI;IAInB,SAAS,CAAC,aAAa,IAAI,IAAI;IAK/B,SAAS,CAAC,QAAQ,IAAI,IAAI;IAInB,iBAAiB,IAAI,IAAI;IAQzB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoB1C,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAI9C,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKxC,YAAY,CAAC,KAAK,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI;IAQjE,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAS3C,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,mBAAmB;yCA1GhB,6BAA6B;2CAA7B,6BAA6B;CA8GzC;AAED,wBAAgB,wBAAwB,SAEvC"}
1
+ {"version":3,"file":"entity-admin-dashboard.component.d.ts","sourceRoot":"","sources":["../../src/EntityAdmin/entity-admin-dashboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAIhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;;AAE7E,UAAU,cAAc;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,GAAG,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAED,qBAMa,6BAA8B,SAAQ,aAAc,YAAW,aAAa,EAAE,SAAS;IACpD,YAAY,EAAG,qBAAqB,CAAC;IAE5E,SAAS,UAAS;IAClB,eAAe,UAAS;IACxB,cAAc,SAAM;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,kBAAkB,UAAQ;IAC1B,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IACzC,gBAAgB,EAAE,UAAU,EAAE,CAAM;IAG3C,OAAO,CAAC,sBAAsB,CAAiC;IAC/D,OAAO,CAAC,kBAAkB,CAAS;IAEnC,eAAe,IAAI,IAAI;IASd,WAAW,IAAI,IAAI;IAK5B,SAAS,CAAC,aAAa,IAAI,IAAI;IAK/B,SAAS,CAAC,QAAQ,IAAI,IAAI;IAInB,iBAAiB,IAAI,IAAI;IAQzB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoB1C,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAI9C,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKxC,YAAY,CAAC,KAAK,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI;IAQjE,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAS3C,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,mBAAmB;yCA3GhB,6BAA6B;2CAA7B,6BAA6B;CA+GzC;AAED,wBAAgB,wBAAwB,SAEvC"}
@@ -5,28 +5,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Component, ViewChild } from '@angular/core';
8
- import { BaseDashboard } from '../generic/base-dashboard';
8
+ import { BaseDashboard } from '@memberjunction/ng-shared';
9
9
  import { RegisterClass } from '@memberjunction/global';
10
10
  import { CompositeKey } from '@memberjunction/core';
11
11
  import { Subject } from 'rxjs';
12
12
  import { debounceTime } from 'rxjs/operators';
13
13
  import * as i0 from "@angular/core";
14
- import * as i1 from "./components/erd-composite.component";
14
+ import * as i1 from "@memberjunction/ng-shared-generic";
15
+ import * as i2 from "./components/erd-composite.component";
15
16
  const _c0 = ["erdComposite"];
16
17
  function EntityAdminDashboardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "div", 8)(1, "div", 11)(2, "div", 12);
18
- i0.ɵɵelement(3, "div", 13)(4, "div", 13)(5, "div", 13);
18
+ i0.ɵɵelementStart(0, "div", 8);
19
+ i0.ɵɵelement(1, "mj-loading", 11);
19
20
  i0.ɵɵelementEnd();
20
- i0.ɵɵelementStart(6, "div", 14);
21
- i0.ɵɵtext(7);
22
- i0.ɵɵelementEnd()()();
23
21
  } if (rf & 2) {
24
22
  const ctx_r0 = i0.ɵɵnextContext();
25
- i0.ɵɵadvance(7);
26
- i0.ɵɵtextInterpolate(ctx_r0.loadingMessage);
23
+ i0.ɵɵadvance();
24
+ i0.ɵɵproperty("text", ctx_r0.loadingMessage);
27
25
  } }
28
26
  function EntityAdminDashboardComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵelementStart(0, "div", 9)(1, "p", 15);
27
+ i0.ɵɵelementStart(0, "div", 9)(1, "p", 12);
30
28
  i0.ɵɵtext(2);
31
29
  i0.ɵɵelementEnd()();
32
30
  } if (rf & 2) {
@@ -36,7 +34,7 @@ function EntityAdminDashboardComponent_Conditional_10_Template(rf, ctx) { if (rf
36
34
  } }
37
35
  function EntityAdminDashboardComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
38
36
  const _r2 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "div", 10)(1, "mj-erd-composite", 16, 0);
37
+ i0.ɵɵelementStart(0, "div", 10)(1, "mj-erd-composite", 13, 0);
40
38
  i0.ɵɵlistener("stateChange", function EntityAdminDashboardComponent_Conditional_11_Template_mj_erd_composite_stateChange_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onStateChange($event)); })("userStateChange", function EntityAdminDashboardComponent_Conditional_11_Template_mj_erd_composite_userStateChange_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onUserStateChange($event)); })("entityOpened", function EntityAdminDashboardComponent_Conditional_11_Template_mj_erd_composite_entityOpened_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onEntityOpened($event)); })("openRecord", function EntityAdminDashboardComponent_Conditional_11_Template_mj_erd_composite_openRecord_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onOpenRecord($event)); });
41
39
  i0.ɵɵelementEnd()();
42
40
  } if (rf & 2) {
@@ -65,6 +63,7 @@ let EntityAdminDashboardComponent = class EntityAdminDashboardComponent extends
65
63
  }
66
64
  ngOnDestroy() {
67
65
  this.userStateChangeSubject.complete();
66
+ super.ngOnDestroy();
68
67
  }
69
68
  initDashboard() {
70
69
  // Initialize dashboard - called by BaseDashboard
@@ -142,7 +141,7 @@ let EntityAdminDashboardComponent = class EntityAdminDashboardComponent extends
142
141
  } if (rf & 2) {
143
142
  let _t;
144
143
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.erdComposite = _t.first);
145
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 6, consts: [["erdComposite", ""], [1, "entity-admin-dashboard-container"], [1, "dashboard-header"], [1, "header-info"], [1, "visible-entities-count"], [1, "header-controls"], ["title", "Toggle Filters", 1, "control-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "loading-container"], [1, "error-container"], [1, "dashboard-content"], [1, "loading-content"], [1, "loading-spinner"], [1, "spinner-ring"], [1, "loading-text"], [1, "error-message"], [3, "stateChange", "userStateChange", "entityOpened", "openRecord", "isRefreshingERD"]], template: function EntityAdminDashboardComponent_Template(rf, ctx) { if (rf & 1) {
144
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 6, consts: [["erdComposite", ""], [1, "entity-admin-dashboard-container"], [1, "dashboard-header"], [1, "header-info"], [1, "visible-entities-count"], [1, "header-controls"], ["title", "Toggle Filters", 1, "control-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "loading-container"], [1, "error-container"], [1, "dashboard-content"], ["size", "large", 3, "text"], [1, "error-message"], [3, "stateChange", "userStateChange", "entityOpened", "openRecord", "isRefreshingERD"]], template: function EntityAdminDashboardComponent_Template(rf, ctx) { if (rf & 1) {
146
145
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "span", 4);
147
146
  i0.ɵɵtext(4);
148
147
  i0.ɵɵelementEnd()();
@@ -151,7 +150,7 @@ let EntityAdminDashboardComponent = class EntityAdminDashboardComponent extends
151
150
  i0.ɵɵelement(7, "span", 7);
152
151
  i0.ɵɵtext(8, " Filters ");
153
152
  i0.ɵɵelementEnd()()();
154
- i0.ɵɵtemplate(9, EntityAdminDashboardComponent_Conditional_9_Template, 8, 1, "div", 8)(10, EntityAdminDashboardComponent_Conditional_10_Template, 3, 1, "div", 9)(11, EntityAdminDashboardComponent_Conditional_11_Template, 3, 1, "div", 10);
153
+ i0.ɵɵtemplate(9, EntityAdminDashboardComponent_Conditional_9_Template, 2, 1, "div", 8)(10, EntityAdminDashboardComponent_Conditional_10_Template, 3, 1, "div", 9)(11, EntityAdminDashboardComponent_Conditional_11_Template, 3, 1, "div", 10);
155
154
  i0.ɵɵelementEnd();
156
155
  } if (rf & 2) {
157
156
  i0.ɵɵadvance(4);
@@ -164,7 +163,7 @@ let EntityAdminDashboardComponent = class EntityAdminDashboardComponent extends
164
163
  i0.ɵɵconditional(ctx.error ? 10 : -1);
165
164
  i0.ɵɵadvance();
166
165
  i0.ɵɵconditional(!ctx.isLoading && !ctx.error ? 11 : -1);
167
- } }, dependencies: [i1.ERDCompositeComponent], styles: [".entity-admin-dashboard-container[_ngcontent-%COMP%] {\n overflow: hidden;\n padding: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dashboard-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n \n .header-info {\n flex: 1;\n display: flex;\n align-items: center;\n }\n \n .visible-entities-count {\n font-size: 12px;\n color: #2196f3;\n font-weight: 600;\n background: rgba(33, 150, 243, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid rgba(33, 150, 243, 0.2);\n }\n \n .header-controls {\n display: flex;\n gap: 8px;\n \n .control-btn {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n \n &:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n }\n \n &.active {\n background-color: #2196f3;\n border-color: #2196f3;\n color: white;\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n \n &:hover {\n background-color: white;\n border-color: #ccc;\n }\n }\n \n .fa-solid {\n font-size: 14px;\n }\n }\n }\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n flex: 1;\n \n p {\n color: #666;\n font-size: 14px;\n }\n}\n\n.error-message[_ngcontent-%COMP%] {\n color: #d32f2f;\n font-weight: 500;\n}\n\n.dashboard-content[_ngcontent-%COMP%] {\n overflow: hidden;\n flex: 1;\n}\n\n.loading-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s linear infinite;\n \n &:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n }\n \n &:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n }\n \n &:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n }\n}\n\n.loading-text[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}"] });
166
+ } }, dependencies: [i1.LoadingComponent, i2.ERDCompositeComponent], styles: [".entity-admin-dashboard-container[_ngcontent-%COMP%] {\n overflow: hidden;\n padding: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dashboard-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n}\n.dashboard-header[_ngcontent-%COMP%] .visible-entities-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #2196f3;\n font-weight: 600;\n background: rgba(33, 150, 243, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid rgba(33, 150, 243, 0.2);\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%]:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn.active[_ngcontent-%COMP%] {\n background-color: #2196f3;\n border-color: #2196f3;\n color: white;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%]:disabled:hover {\n background-color: white;\n border-color: #ccc;\n}\n.dashboard-header[_ngcontent-%COMP%] .header-controls[_ngcontent-%COMP%] .control-btn[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n flex: 1;\n}\n.loading-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n}\n\n.error-message[_ngcontent-%COMP%] {\n color: #d32f2f;\n font-weight: 500;\n}\n\n.dashboard-content[_ngcontent-%COMP%] {\n overflow: hidden;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; \n\n}\n\n.loading-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s linear infinite;\n}\n.spinner-ring[_ngcontent-%COMP%]:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.spinner-ring[_ngcontent-%COMP%]:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.spinner-ring[_ngcontent-%COMP%]:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n\n.loading-text[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}"] });
168
167
  };
169
168
  EntityAdminDashboardComponent = __decorate([
170
169
  RegisterClass(BaseDashboard, 'EntityAdmin')
@@ -172,7 +171,7 @@ EntityAdminDashboardComponent = __decorate([
172
171
  export { EntityAdminDashboardComponent };
173
172
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityAdminDashboardComponent, [{
174
173
  type: Component,
175
- args: [{ selector: 'mj-entity-admin-dashboard', template: "<div class=\"entity-admin-dashboard-container\">\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <span class=\"visible-entities-count\">{{ filteredEntities.length }} visible entities</span>\n </div>\n <div class=\"header-controls\">\n <button \n class=\"control-btn\" \n (click)=\"toggleFilterPanel()\" \n [class.active]=\"filterPanelVisible\"\n title=\"Toggle Filters\">\n <span class=\"fa-solid fa-filter\"></span>\n Filters\n </button>\n </div>\n </div>\n \n @if (isLoading) {\n <div class=\"loading-container\">\n <div class=\"loading-content\">\n <div class=\"loading-spinner\">\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n </div>\n <div class=\"loading-text\">{{ loadingMessage }}</div>\n </div>\n </div>\n }\n \n @if (error) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error }}</p>\n </div>\n }\n \n @if (!isLoading && !error) {\n <div class=\"dashboard-content\">\n <mj-erd-composite \n #erdComposite\n [isRefreshingERD]=\"isRefreshingERD\"\n (stateChange)=\"onStateChange($event)\"\n (userStateChange)=\"onUserStateChange($event)\"\n (entityOpened)=\"onEntityOpened($event)\"\n (openRecord)=\"onOpenRecord($event)\"\n >\n </mj-erd-composite>\n </div>\n }\n</div>", styles: [".entity-admin-dashboard-container {\n overflow: hidden;\n padding: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dashboard-header {\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n \n .header-info {\n flex: 1;\n display: flex;\n align-items: center;\n }\n \n .visible-entities-count {\n font-size: 12px;\n color: #2196f3;\n font-weight: 600;\n background: rgba(33, 150, 243, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid rgba(33, 150, 243, 0.2);\n }\n \n .header-controls {\n display: flex;\n gap: 8px;\n \n .control-btn {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n \n &:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n }\n \n &.active {\n background-color: #2196f3;\n border-color: #2196f3;\n color: white;\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n \n &:hover {\n background-color: white;\n border-color: #ccc;\n }\n }\n \n .fa-solid {\n font-size: 14px;\n }\n }\n }\n}\n\n.loading-container, .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n flex: 1;\n \n p {\n color: #666;\n font-size: 14px;\n }\n}\n\n.error-message {\n color: #d32f2f;\n font-weight: 500;\n}\n\n.dashboard-content {\n overflow: hidden;\n flex: 1;\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s linear infinite;\n \n &:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n }\n \n &:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n }\n \n &:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n }\n}\n\n.loading-text {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}"] }]
174
+ args: [{ selector: 'mj-entity-admin-dashboard', template: "<div class=\"entity-admin-dashboard-container\">\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <span class=\"visible-entities-count\">{{ filteredEntities.length }} visible entities</span>\n </div>\n <div class=\"header-controls\">\n <button \n class=\"control-btn\" \n (click)=\"toggleFilterPanel()\" \n [class.active]=\"filterPanelVisible\"\n title=\"Toggle Filters\">\n <span class=\"fa-solid fa-filter\"></span>\n Filters\n </button>\n </div>\n </div>\n \n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading [text]=\"loadingMessage\" size=\"large\"></mj-loading>\n </div>\n }\n \n @if (error) {\n <div class=\"error-container\">\n <p class=\"error-message\">{{ error }}</p>\n </div>\n }\n \n @if (!isLoading && !error) {\n <div class=\"dashboard-content\">\n <mj-erd-composite \n #erdComposite\n [isRefreshingERD]=\"isRefreshingERD\"\n (stateChange)=\"onStateChange($event)\"\n (userStateChange)=\"onUserStateChange($event)\"\n (entityOpened)=\"onEntityOpened($event)\"\n (openRecord)=\"onOpenRecord($event)\"\n >\n </mj-erd-composite>\n </div>\n }\n</div>", styles: [".entity-admin-dashboard-container {\n overflow: hidden;\n padding: 4px;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dashboard-header {\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.dashboard-header .header-info {\n flex: 1;\n display: flex;\n align-items: center;\n}\n.dashboard-header .visible-entities-count {\n font-size: 12px;\n color: #2196f3;\n font-weight: 600;\n background: rgba(33, 150, 243, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid rgba(33, 150, 243, 0.2);\n}\n.dashboard-header .header-controls {\n display: flex;\n gap: 8px;\n}\n.dashboard-header .header-controls .control-btn {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n background: white;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s;\n}\n.dashboard-header .header-controls .control-btn:hover {\n background-color: #f0f0f0;\n border-color: #2196f3;\n}\n.dashboard-header .header-controls .control-btn.active {\n background-color: #2196f3;\n border-color: #2196f3;\n color: white;\n}\n.dashboard-header .header-controls .control-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.dashboard-header .header-controls .control-btn:disabled:hover {\n background-color: white;\n border-color: #ccc;\n}\n.dashboard-header .header-controls .control-btn .fa-solid {\n font-size: 14px;\n}\n\n.loading-container, .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #fafafa;\n flex: 1;\n}\n.loading-container p, .error-container p {\n color: #666;\n font-size: 14px;\n}\n\n.error-message {\n color: #d32f2f;\n font-weight: 500;\n}\n\n.dashboard-content {\n overflow: hidden;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow flex children to shrink below their content size */\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n}\n\n.spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s linear infinite;\n}\n.spinner-ring:nth-child(1) {\n border-top-color: #2196f3;\n animation-delay: 0s;\n}\n.spinner-ring:nth-child(2) {\n border-top-color: #9c27b0;\n animation-delay: 0.3s;\n transform: scale(0.8);\n}\n.spinner-ring:nth-child(3) {\n border-top-color: #ff6b35;\n animation-delay: 0.6s;\n transform: scale(0.6);\n}\n\n.loading-text {\n font-size: 14px;\n color: #666;\n font-weight: 500;\n text-align: center;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n"] }]
176
175
  }], null, { erdComposite: [{
177
176
  type: ViewChild,
178
177
  args: ['erdComposite', { static: false }]
@@ -1 +1 @@
1
- {"version":3,"file":"entity-admin-dashboard.component.js","sourceRoot":"","sources":["../../src/EntityAdmin/entity-admin-dashboard.component.ts","../../src/EntityAdmin/entity-admin-dashboard.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-admin-dashboard.component.js","sourceRoot":"","sources":["../../src/EntityAdmin/entity-admin-dashboard.component.ts","../../src/EntityAdmin/entity-admin-dashboard.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { BaseDashboard, NavigationService, RecentAccessService, RecentAccessItem } from '@memberjunction/ng-shared';
4
+ import { UserFavoriteEntity, UserNotificationEntity } from '@memberjunction/core-entities';
5
+ import { ApplicationManager, BaseApplication } from '@memberjunction/ng-base-application';
6
+ import { UserAppConfigComponent } from '@memberjunction/ng-explorer-settings';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Home Dashboard - Personalized home screen showing all available applications
10
+ * with quick access navigation and configuration options.
11
+ */
12
+ export declare class HomeDashboardComponent extends BaseDashboard implements OnInit, OnDestroy {
13
+ private appManager;
14
+ private navigationService;
15
+ private recentAccessService;
16
+ private router;
17
+ private cdr;
18
+ private destroy$;
19
+ private metadata;
20
+ appConfigDialog: UserAppConfigComponent;
21
+ isLoading: boolean;
22
+ apps: BaseApplication[];
23
+ currentUser: {
24
+ Name: string;
25
+ Email: string;
26
+ } | null;
27
+ showConfigDialog: boolean;
28
+ favorites: UserFavoriteEntity[];
29
+ favoritesLoading: boolean;
30
+ recentItems: RecentAccessItem[];
31
+ recentsLoading: boolean;
32
+ unreadNotifications: UserNotificationEntity[];
33
+ notificationsLoading: boolean;
34
+ sidebarOpen: boolean;
35
+ /**
36
+ * Check if sidebar has any content to show
37
+ */
38
+ get hasSidebarContent(): boolean;
39
+ /**
40
+ * Toggle sidebar visibility
41
+ */
42
+ toggleSidebar(): void;
43
+ /**
44
+ * Check if current device is mobile (width <= 768px)
45
+ */
46
+ private isMobileDevice;
47
+ constructor(appManager: ApplicationManager, navigationService: NavigationService, recentAccessService: RecentAccessService, router: Router, cdr: ChangeDetectorRef);
48
+ ngOnInit(): Promise<void>;
49
+ ngOnDestroy(): void;
50
+ protected initDashboard(): void;
51
+ protected loadData(): void;
52
+ /**
53
+ * Get a greeting based on time of day
54
+ */
55
+ get greeting(): string;
56
+ /**
57
+ * Get formatted date string
58
+ */
59
+ get formattedDate(): string;
60
+ /**
61
+ * Navigate to an application
62
+ */
63
+ onAppClick(app: BaseApplication): Promise<void>;
64
+ /**
65
+ * Open app configuration dialog
66
+ */
67
+ openConfigDialog(): void;
68
+ /**
69
+ * Handle when config is saved
70
+ */
71
+ onConfigSaved(): void;
72
+ /**
73
+ * Get nav items count for an app
74
+ */
75
+ getNavItemsCount(app: BaseApplication): number;
76
+ /**
77
+ * Get first few nav items for preview
78
+ */
79
+ getNavItemsPreview(app: BaseApplication): {
80
+ Label: string;
81
+ Icon: string;
82
+ }[];
83
+ /**
84
+ * Load user favorites from the database
85
+ */
86
+ private loadFavorites;
87
+ /**
88
+ * Load recent items via the RecentAccessService
89
+ */
90
+ private loadRecents;
91
+ /**
92
+ * Navigate to a favorite item
93
+ */
94
+ onFavoriteClick(favorite: UserFavoriteEntity): void;
95
+ /**
96
+ * Navigate to a recent item
97
+ */
98
+ onRecentClick(item: RecentAccessItem): void;
99
+ /**
100
+ * Navigate to a notification
101
+ */
102
+ onNotificationClick(notification: UserNotificationEntity): void;
103
+ /**
104
+ * Get icon for a resource type
105
+ */
106
+ getResourceIcon(resourceType: string): string;
107
+ /**
108
+ * Get icon for a favorite based on its entity type
109
+ */
110
+ getFavoriteIcon(favorite: UserFavoriteEntity): string;
111
+ /**
112
+ * Format a date for display
113
+ */
114
+ formatDate(date: Date): string;
115
+ static ɵfac: i0.ɵɵFactoryDeclaration<HomeDashboardComponent, never>;
116
+ static ɵcmp: i0.ɵɵComponentDeclaration<HomeDashboardComponent, "mj-home-dashboard", never, {}, {}, never, never, false, never>;
117
+ }
118
+ /**
119
+ * Tree-shaking prevention
120
+ */
121
+ export declare function LoadHomeDashboard(): void;
122
+ //# sourceMappingURL=home-dashboard.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-dashboard.component.d.ts","sourceRoot":"","sources":["../../src/Home/home-dashboard.component.ts"],"names":[],"mappings":"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"}