@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
@@ -0,0 +1,480 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Metadata, RunView } from '@memberjunction/core';
3
+ import { Subject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ const _forTrack0 = ($index, $item) => $item.id;
6
+ function ViewSelectorComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
7
+ const _r1 = i0.ɵɵgetCurrentView();
8
+ i0.ɵɵelementStart(0, "div", 12);
9
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDropdown()); });
10
+ i0.ɵɵelementEnd();
11
+ } }
12
+ function ViewSelectorComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "span", 6);
14
+ i0.ɵɵtext(1, "\u2022");
15
+ i0.ɵɵelementEnd();
16
+ } }
17
+ function ViewSelectorComponent_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelement(0, "i", 16);
19
+ } }
20
+ function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelement(0, "i", 33);
22
+ } }
23
+ function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelement(0, "i", 34);
25
+ } }
26
+ function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelement(0, "i", 16);
28
+ } }
29
+ function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Template(rf, ctx) { if (rf & 1) {
30
+ const _r4 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "div", 31);
32
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Template_div_click_0_listener() { const view_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectView(view_r5)); });
33
+ i0.ɵɵelement(1, "i", 32);
34
+ i0.ɵɵelementStart(2, "span", 15);
35
+ i0.ɵɵtext(3);
36
+ i0.ɵɵelementEnd();
37
+ i0.ɵɵtemplate(4, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_4_Template, 1, 0, "i", 33)(5, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_5_Template, 1, 0, "i", 34)(6, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_6_Template, 1, 0, "i", 16);
38
+ i0.ɵɵelementEnd();
39
+ } if (rf & 2) {
40
+ const view_r5 = ctx.$implicit;
41
+ const ctx_r1 = i0.ɵɵnextContext(3);
42
+ i0.ɵɵclassProp("selected", ctx_r1.selectedViewId === view_r5.id);
43
+ i0.ɵɵadvance(3);
44
+ i0.ɵɵtextInterpolate(view_r5.name);
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵconditional(view_r5.isShared ? 4 : -1);
47
+ i0.ɵɵadvance();
48
+ i0.ɵɵconditional(view_r5.isDefault ? 5 : -1);
49
+ i0.ɵɵadvance();
50
+ i0.ɵɵconditional(ctx_r1.selectedViewId === view_r5.id ? 6 : -1);
51
+ } }
52
+ function ViewSelectorComponent_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 26);
54
+ i0.ɵɵelement(2, "i", 27);
55
+ i0.ɵɵelementStart(3, "span", 28);
56
+ i0.ɵɵtext(4, "My Views");
57
+ i0.ɵɵelementEnd();
58
+ i0.ɵɵelementStart(5, "span", 29);
59
+ i0.ɵɵtext(6);
60
+ i0.ɵɵelementEnd()();
61
+ i0.ɵɵrepeaterCreate(7, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Template, 7, 6, "div", 30, _forTrack0);
62
+ i0.ɵɵelementEnd();
63
+ } if (rf & 2) {
64
+ const ctx_r1 = i0.ɵɵnextContext(2);
65
+ i0.ɵɵadvance(6);
66
+ i0.ɵɵtextInterpolate(ctx_r1.myViews.length);
67
+ i0.ɵɵadvance();
68
+ i0.ɵɵrepeater(ctx_r1.myViews);
69
+ } }
70
+ function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelement(0, "i", 36);
72
+ } }
73
+ function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelement(0, "i", 16);
75
+ } }
76
+ function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Template(rf, ctx) { if (rf & 1) {
77
+ const _r6 = i0.ɵɵgetCurrentView();
78
+ i0.ɵɵelementStart(0, "div", 31);
79
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Template_div_click_0_listener() { const view_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectView(view_r7)); });
80
+ i0.ɵɵelement(1, "i", 32);
81
+ i0.ɵɵelementStart(2, "span", 15);
82
+ i0.ɵɵtext(3);
83
+ i0.ɵɵelementEnd();
84
+ i0.ɵɵtemplate(4, ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_4_Template, 1, 0, "i", 36)(5, ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_5_Template, 1, 0, "i", 16);
85
+ i0.ɵɵelementEnd();
86
+ } if (rf & 2) {
87
+ const view_r7 = ctx.$implicit;
88
+ const ctx_r1 = i0.ɵɵnextContext(3);
89
+ i0.ɵɵclassProp("selected", ctx_r1.selectedViewId === view_r7.id);
90
+ i0.ɵɵadvance(3);
91
+ i0.ɵɵtextInterpolate(view_r7.name);
92
+ i0.ɵɵadvance();
93
+ i0.ɵɵconditional(!view_r7.userCanEdit ? 4 : -1);
94
+ i0.ɵɵadvance();
95
+ i0.ɵɵconditional(ctx_r1.selectedViewId === view_r7.id ? 5 : -1);
96
+ } }
97
+ function ViewSelectorComponent_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
98
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 26);
99
+ i0.ɵɵelement(2, "i", 35);
100
+ i0.ɵɵelementStart(3, "span", 28);
101
+ i0.ɵɵtext(4, "Shared Views");
102
+ i0.ɵɵelementEnd();
103
+ i0.ɵɵelementStart(5, "span", 29);
104
+ i0.ɵɵtext(6);
105
+ i0.ɵɵelementEnd()();
106
+ i0.ɵɵrepeaterCreate(7, ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Template, 6, 5, "div", 30, _forTrack0);
107
+ i0.ɵɵelementEnd();
108
+ } if (rf & 2) {
109
+ const ctx_r1 = i0.ɵɵnextContext(2);
110
+ i0.ɵɵadvance(6);
111
+ i0.ɵɵtextInterpolate(ctx_r1.sharedViews.length);
112
+ i0.ɵɵadvance();
113
+ i0.ɵɵrepeater(ctx_r1.sharedViews);
114
+ } }
115
+ function ViewSelectorComponent_Conditional_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "div", 19);
117
+ i0.ɵɵelement(1, "i", 37);
118
+ i0.ɵɵelementStart(2, "span");
119
+ i0.ɵɵtext(3, "No saved views yet");
120
+ i0.ɵɵelementEnd()();
121
+ } }
122
+ function ViewSelectorComponent_Conditional_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
123
+ i0.ɵɵelementStart(0, "div", 20);
124
+ i0.ɵɵelement(1, "i", 38);
125
+ i0.ɵɵelementStart(2, "span");
126
+ i0.ɵɵtext(3, "Loading views...");
127
+ i0.ɵɵelementEnd()();
128
+ } }
129
+ function ViewSelectorComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
130
+ const _r3 = i0.ɵɵgetCurrentView();
131
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 13);
132
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectDefault()); });
133
+ i0.ɵɵelement(2, "i", 14);
134
+ i0.ɵɵelementStart(3, "span", 15);
135
+ i0.ɵɵtext(4, "(Default)");
136
+ i0.ɵɵelementEnd();
137
+ i0.ɵɵtemplate(5, ViewSelectorComponent_Conditional_9_Conditional_5_Template, 1, 0, "i", 16);
138
+ i0.ɵɵelementEnd();
139
+ i0.ɵɵelement(6, "div", 17);
140
+ i0.ɵɵtemplate(7, ViewSelectorComponent_Conditional_9_Conditional_7_Template, 9, 1, "div", 18)(8, ViewSelectorComponent_Conditional_9_Conditional_8_Template, 9, 1, "div", 18)(9, ViewSelectorComponent_Conditional_9_Conditional_9_Template, 4, 0, "div", 19)(10, ViewSelectorComponent_Conditional_9_Conditional_10_Template, 4, 0, "div", 20);
141
+ i0.ɵɵelement(11, "div", 17);
142
+ i0.ɵɵelementStart(12, "div", 21)(13, "button", 22);
143
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveView()); });
144
+ i0.ɵɵelement(14, "i", 23);
145
+ i0.ɵɵelementStart(15, "span");
146
+ i0.ɵɵtext(16, "Save View");
147
+ i0.ɵɵelementEnd()();
148
+ i0.ɵɵelementStart(17, "button", 24);
149
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveAsNewView()); });
150
+ i0.ɵɵelement(18, "i", 25);
151
+ i0.ɵɵelementStart(19, "span");
152
+ i0.ɵɵtext(20, "Save As New");
153
+ i0.ɵɵelementEnd()()()();
154
+ } if (rf & 2) {
155
+ const ctx_r1 = i0.ɵɵnextContext();
156
+ i0.ɵɵadvance();
157
+ i0.ɵɵclassProp("selected", !ctx_r1.selectedViewId);
158
+ i0.ɵɵadvance(4);
159
+ i0.ɵɵconditional(!ctx_r1.selectedViewId ? 5 : -1);
160
+ i0.ɵɵadvance(2);
161
+ i0.ɵɵconditional(ctx_r1.myViews.length > 0 ? 7 : -1);
162
+ i0.ɵɵadvance();
163
+ i0.ɵɵconditional(ctx_r1.sharedViews.length > 0 ? 8 : -1);
164
+ i0.ɵɵadvance();
165
+ i0.ɵɵconditional(!ctx_r1.hasViews && !ctx_r1.isLoading ? 9 : -1);
166
+ i0.ɵɵadvance();
167
+ i0.ɵɵconditional(ctx_r1.isLoading ? 10 : -1);
168
+ i0.ɵɵadvance(3);
169
+ i0.ɵɵproperty("disabled", !ctx_r1.viewModified && !ctx_r1.selectedViewId);
170
+ } }
171
+ function ViewSelectorComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
172
+ const _r8 = i0.ɵɵgetCurrentView();
173
+ i0.ɵɵelementStart(0, "button", 39);
174
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenInTab()); });
175
+ i0.ɵɵelement(1, "i", 40);
176
+ i0.ɵɵelementEnd();
177
+ } }
178
+ /**
179
+ * ViewSelectorComponent - Dropdown for selecting saved views
180
+ *
181
+ * Features:
182
+ * - Shows "(Default)" option when no view is selected
183
+ * - Groups views into "My Views" and "Shared Views"
184
+ * - "Save Current View" and "Manage Views" actions
185
+ * - "Open in Tab" button for saved views
186
+ */
187
+ export class ViewSelectorComponent {
188
+ cdr;
189
+ /**
190
+ * The entity to load views for
191
+ */
192
+ entity = null;
193
+ /**
194
+ * Currently selected view ID (null = default view)
195
+ */
196
+ selectedViewId = null;
197
+ /**
198
+ * Whether the current view has unsaved modifications
199
+ */
200
+ viewModified = false;
201
+ /**
202
+ * Emitted when a view is selected
203
+ */
204
+ viewSelected = new EventEmitter();
205
+ /**
206
+ * Emitted when user requests to save the current view
207
+ */
208
+ saveViewRequested = new EventEmitter();
209
+ /**
210
+ * Emitted when user wants to open the view management panel
211
+ */
212
+ manageViewsRequested = new EventEmitter();
213
+ /**
214
+ * Emitted when user wants to open the current view in its own tab
215
+ */
216
+ openInTabRequested = new EventEmitter();
217
+ /**
218
+ * Emitted when user wants to configure the current view
219
+ */
220
+ configureViewRequested = new EventEmitter();
221
+ // Internal state
222
+ isLoading = false;
223
+ isDropdownOpen = false;
224
+ myViews = [];
225
+ sharedViews = [];
226
+ selectedView = null;
227
+ destroy$ = new Subject();
228
+ metadata = new Metadata();
229
+ constructor(cdr) {
230
+ this.cdr = cdr;
231
+ }
232
+ ngOnChanges(changes) {
233
+ if (changes['entity']) {
234
+ if (this.entity) {
235
+ this.loadViews();
236
+ }
237
+ else {
238
+ this.myViews = [];
239
+ this.sharedViews = [];
240
+ this.selectedView = null;
241
+ }
242
+ }
243
+ if (changes['selectedViewId'] && this.selectedViewId) {
244
+ // If we have a selected view ID and it's in our lists, update selectedView
245
+ this.updateSelectedViewFromId();
246
+ }
247
+ }
248
+ ngOnDestroy() {
249
+ this.destroy$.next();
250
+ this.destroy$.complete();
251
+ }
252
+ /**
253
+ * Load views for the current entity
254
+ */
255
+ async loadViews() {
256
+ if (!this.entity) {
257
+ return;
258
+ }
259
+ this.isLoading = true;
260
+ this.cdr.detectChanges();
261
+ try {
262
+ const userId = this.metadata.CurrentUser?.ID;
263
+ const rv = new RunView();
264
+ // Load all views for this entity that the user owns OR that are shared
265
+ const result = await rv.RunView({
266
+ EntityName: 'User Views',
267
+ ExtraFilter: `EntityID = '${this.entity.ID}' AND (UserID = '${userId}' OR IsShared = 1)`,
268
+ OrderBy: 'Name',
269
+ ResultType: 'entity_object'
270
+ });
271
+ if (result.Success && result.Results) {
272
+ // Filter views the user can actually view
273
+ const accessibleViews = result.Results.filter(v => v.UserCanView);
274
+ // Separate into owned and shared
275
+ this.myViews = accessibleViews
276
+ .filter(v => v.UserID === userId)
277
+ .map(v => this.mapViewToListItem(v, true));
278
+ this.sharedViews = accessibleViews
279
+ .filter(v => v.UserID !== userId)
280
+ .map(v => this.mapViewToListItem(v, false));
281
+ // Update selected view reference
282
+ this.updateSelectedViewFromId();
283
+ }
284
+ }
285
+ catch (error) {
286
+ console.error('Failed to load views:', error);
287
+ }
288
+ finally {
289
+ this.isLoading = false;
290
+ this.cdr.detectChanges();
291
+ }
292
+ }
293
+ /**
294
+ * Map a view entity to a list item
295
+ */
296
+ mapViewToListItem(view, isOwned) {
297
+ return {
298
+ id: view.ID,
299
+ name: view.Name,
300
+ isOwned,
301
+ isShared: view.IsShared,
302
+ isDefault: view.IsDefault,
303
+ userCanEdit: view.UserCanEdit,
304
+ entity: view
305
+ };
306
+ }
307
+ /**
308
+ * Update the selectedView reference based on selectedViewId
309
+ */
310
+ updateSelectedViewFromId() {
311
+ if (!this.selectedViewId) {
312
+ this.selectedView = null;
313
+ return;
314
+ }
315
+ // Search in both lists
316
+ const myView = this.myViews.find(v => v.id === this.selectedViewId);
317
+ if (myView) {
318
+ this.selectedView = myView.entity;
319
+ return;
320
+ }
321
+ const sharedView = this.sharedViews.find(v => v.id === this.selectedViewId);
322
+ if (sharedView) {
323
+ this.selectedView = sharedView.entity;
324
+ return;
325
+ }
326
+ // View not in lists yet - it might need to be loaded
327
+ this.selectedView = null;
328
+ }
329
+ /**
330
+ * Get the display name for the current selection
331
+ */
332
+ get displayName() {
333
+ if (this.selectedView) {
334
+ return this.selectedView.Name;
335
+ }
336
+ return '(Default)';
337
+ }
338
+ /**
339
+ * Toggle dropdown open/closed
340
+ */
341
+ toggleDropdown() {
342
+ this.isDropdownOpen = !this.isDropdownOpen;
343
+ this.cdr.detectChanges();
344
+ }
345
+ /**
346
+ * Close the dropdown
347
+ */
348
+ closeDropdown() {
349
+ this.isDropdownOpen = false;
350
+ this.cdr.detectChanges();
351
+ }
352
+ /**
353
+ * Select the default view (no saved view)
354
+ */
355
+ selectDefault() {
356
+ this.selectedView = null;
357
+ this.viewSelected.emit({ viewId: null, view: null });
358
+ this.closeDropdown();
359
+ }
360
+ /**
361
+ * Select a view from the list
362
+ */
363
+ selectView(item) {
364
+ this.selectedView = item.entity;
365
+ this.viewSelected.emit({ viewId: item.id, view: item.entity });
366
+ this.closeDropdown();
367
+ }
368
+ /**
369
+ * Request to save the current view
370
+ */
371
+ onSaveView() {
372
+ this.saveViewRequested.emit({ saveAsNew: false });
373
+ this.closeDropdown();
374
+ }
375
+ /**
376
+ * Request to save as a new view
377
+ */
378
+ onSaveAsNewView() {
379
+ this.saveViewRequested.emit({ saveAsNew: true });
380
+ this.closeDropdown();
381
+ }
382
+ /**
383
+ * Request to manage views
384
+ */
385
+ onManageViews() {
386
+ this.manageViewsRequested.emit();
387
+ this.closeDropdown();
388
+ }
389
+ /**
390
+ * Request to open the current view in a tab
391
+ */
392
+ onOpenInTab() {
393
+ if (this.selectedViewId) {
394
+ this.openInTabRequested.emit(this.selectedViewId);
395
+ }
396
+ }
397
+ /**
398
+ * Request to configure the current view
399
+ */
400
+ onConfigureView() {
401
+ this.configureViewRequested.emit();
402
+ }
403
+ /**
404
+ * Check if there are any views to show
405
+ */
406
+ get hasViews() {
407
+ return this.myViews.length > 0 || this.sharedViews.length > 0;
408
+ }
409
+ /**
410
+ * Check if the current user can edit the selected view
411
+ */
412
+ get canEditSelectedView() {
413
+ return this.selectedView?.UserCanEdit ?? false;
414
+ }
415
+ /**
416
+ * Handle click outside to close dropdown
417
+ */
418
+ onClickOutside(event) {
419
+ this.closeDropdown();
420
+ }
421
+ static ɵfac = function ViewSelectorComponent_Factory(t) { return new (t || ViewSelectorComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
422
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ViewSelectorComponent, selectors: [["mj-view-selector"]], inputs: { entity: "entity", selectedViewId: "selectedViewId", viewModified: "viewModified" }, outputs: { viewSelected: "viewSelected", saveViewRequested: "saveViewRequested", manageViewsRequested: "manageViewsRequested", openInTabRequested: "openInTabRequested", configureViewRequested: "configureViewRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 12, consts: [[1, "view-selector-container"], [1, "dropdown-backdrop"], [1, "view-selector-wrapper"], ["title", "Select a saved view", 1, "view-selector-button", 3, "click", "disabled"], [1, "fa-solid", "fa-layer-group", "view-icon"], [1, "view-name"], ["title", "View has unsaved changes", 1, "modified-indicator"], [1, "fa-solid", "fa-chevron-down", "dropdown-arrow"], [1, "dropdown-panel"], ["title", "Open this view in a new tab", 1, "open-in-tab-button"], ["title", "Configure view settings (columns, filters, sorting)", 1, "configure-view-button", 3, "click"], [1, "fa-solid", "fa-sliders-h"], [1, "dropdown-backdrop", 3, "click"], [1, "dropdown-item", "default-option", 3, "click"], [1, "fa-solid", "fa-table", "item-icon"], [1, "item-name"], [1, "fa-solid", "fa-check", "selected-check"], [1, "dropdown-divider"], [1, "dropdown-section"], [1, "empty-views-message"], [1, "loading-views"], [1, "dropdown-actions"], ["title", "Save current configuration", 1, "action-button", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], ["title", "Save as a new view", 1, "action-button", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "section-header"], [1, "fa-solid", "fa-user", "section-icon"], [1, "section-title"], [1, "section-count"], [1, "dropdown-item", "view-item", 3, "selected"], [1, "dropdown-item", "view-item", 3, "click"], [1, "fa-solid", "fa-layer-group", "item-icon"], ["title", "Shared with others", 1, "fa-solid", "fa-share-alt", "shared-indicator"], ["title", "Default view for this entity", 1, "fa-solid", "fa-star", "default-indicator"], [1, "fa-solid", "fa-users", "section-icon"], ["title", "View-only access", 1, "fa-solid", "fa-lock", "readonly-indicator"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["title", "Open this view in a new tab", 1, "open-in-tab-button", 3, "click"], [1, "fa-solid", "fa-external-link-alt"]], template: function ViewSelectorComponent_Template(rf, ctx) { if (rf & 1) {
423
+ i0.ɵɵelementStart(0, "div", 0);
424
+ i0.ɵɵtemplate(1, ViewSelectorComponent_Conditional_1_Template, 1, 0, "div", 1);
425
+ i0.ɵɵelementStart(2, "div", 2)(3, "button", 3);
426
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Template_button_click_3_listener() { return ctx.toggleDropdown(); });
427
+ i0.ɵɵelement(4, "i", 4);
428
+ i0.ɵɵelementStart(5, "span", 5);
429
+ i0.ɵɵtext(6);
430
+ i0.ɵɵelementEnd();
431
+ i0.ɵɵtemplate(7, ViewSelectorComponent_Conditional_7_Template, 2, 0, "span", 6);
432
+ i0.ɵɵelement(8, "i", 7);
433
+ i0.ɵɵelementEnd();
434
+ i0.ɵɵtemplate(9, ViewSelectorComponent_Conditional_9_Template, 21, 8, "div", 8);
435
+ i0.ɵɵelementEnd();
436
+ i0.ɵɵtemplate(10, ViewSelectorComponent_Conditional_10_Template, 2, 0, "button", 9);
437
+ i0.ɵɵelementStart(11, "button", 10);
438
+ i0.ɵɵlistener("click", function ViewSelectorComponent_Template_button_click_11_listener() { return ctx.onConfigureView(); });
439
+ i0.ɵɵelement(12, "i", 11);
440
+ i0.ɵɵelementEnd()();
441
+ } if (rf & 2) {
442
+ i0.ɵɵadvance();
443
+ i0.ɵɵconditional(ctx.isDropdownOpen ? 1 : -1);
444
+ i0.ɵɵadvance(2);
445
+ i0.ɵɵclassProp("modified", ctx.viewModified)("open", ctx.isDropdownOpen);
446
+ i0.ɵɵproperty("disabled", ctx.isLoading);
447
+ i0.ɵɵadvance(3);
448
+ i0.ɵɵtextInterpolate(ctx.displayName);
449
+ i0.ɵɵadvance();
450
+ i0.ɵɵconditional(ctx.viewModified ? 7 : -1);
451
+ i0.ɵɵadvance();
452
+ i0.ɵɵclassProp("rotated", ctx.isDropdownOpen);
453
+ i0.ɵɵadvance();
454
+ i0.ɵɵconditional(ctx.isDropdownOpen ? 9 : -1);
455
+ i0.ɵɵadvance();
456
+ i0.ɵɵconditional(ctx.selectedViewId ? 10 : -1);
457
+ } }, styles: ["\n\n.view-selector-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n position: relative;\n}\n\n\n\n.dropdown-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n background: transparent;\n}\n\n.view-selector-wrapper[_ngcontent-%COMP%] {\n position: relative;\n}\n\n\n\n.view-selector-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n min-width: 140px;\n max-width: 280px;\n}\n\n.view-selector-button[_ngcontent-%COMP%]:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.view-selector-button[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.view-selector-button.open[_ngcontent-%COMP%] {\n background: var(--background-active, #e0e0e0);\n border-color: var(--primary-color, #007bff);\n}\n\n.view-selector-button.modified[_ngcontent-%COMP%] {\n border-color: var(--warning-color, #f59e0b);\n}\n\n.view-icon[_ngcontent-%COMP%] {\n color: var(--text-secondary, #666);\n font-size: 12px;\n}\n\n.view-name[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.modified-indicator[_ngcontent-%COMP%] {\n color: var(--warning-color, #f59e0b);\n font-weight: bold;\n font-size: 18px;\n line-height: 1;\n}\n\n.dropdown-arrow[_ngcontent-%COMP%] {\n color: var(--text-secondary, #666);\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.dropdown-arrow.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n\n\n.dropdown-panel[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 280px;\n max-width: 360px;\n max-height: 400px;\n overflow-y: auto;\n background: var(--background-panel, #fff);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n}\n\n\n\n.dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--background-hover, #f5f5f5);\n}\n\n.dropdown-item.selected[_ngcontent-%COMP%] {\n background: var(--primary-light, #e6f0ff);\n}\n\n.dropdown-item.selected[_ngcontent-%COMP%]:hover {\n background: var(--primary-light-hover, #d6e4f9);\n}\n\n.default-option[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: var(--text-secondary, #666);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.item-name[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n\n.shared-indicator[_ngcontent-%COMP%], \n.default-indicator[_ngcontent-%COMP%], \n.readonly-indicator[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #999);\n font-size: 11px;\n}\n\n.default-indicator[_ngcontent-%COMP%] {\n color: var(--warning-color, #f59e0b);\n}\n\n.selected-check[_ngcontent-%COMP%] {\n color: var(--primary-color, #007bff);\n font-size: 12px;\n}\n\n\n\n.dropdown-section[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px 6px;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-tertiary, #999);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.section-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.section-count[_ngcontent-%COMP%] {\n background: var(--background-alt, #f0f0f0);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n}\n\n\n\n.dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--border-color-light, #eee);\n margin: 4px 0;\n}\n\n\n\n.empty-views-message[_ngcontent-%COMP%], \n.loading-views[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 20px;\n color: var(--text-tertiary, #999);\n font-size: 13px;\n}\n\n\n\n.dropdown-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 10px 14px;\n}\n\n.action-button[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 8px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n}\n\n.action-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.action-button[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.open-in-tab-button[_ngcontent-%COMP%], \n.configure-view-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n color: var(--text-secondary, #666);\n transition: all 0.15s ease;\n}\n\n.open-in-tab-button[_ngcontent-%COMP%]:hover, \n.configure-view-button[_ngcontent-%COMP%]:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n color: var(--primary-color, #007bff);\n}\n\n.open-in-tab-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.configure-view-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n@media (max-width: 768px) {\n .view-selector-button[_ngcontent-%COMP%] {\n min-width: 100px;\n max-width: 180px;\n padding: 6px 10px;\n }\n\n .dropdown-panel[_ngcontent-%COMP%] {\n min-width: 240px;\n max-width: calc(100vw - 32px);\n }\n\n .dropdown-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"] });
458
+ }
459
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewSelectorComponent, [{
460
+ type: Component,
461
+ args: [{ selector: 'mj-view-selector', template: "<div class=\"view-selector-container\">\n <!-- Backdrop for closing dropdown -->\n @if (isDropdownOpen) {\n <div class=\"dropdown-backdrop\" (click)=\"closeDropdown()\"></div>\n }\n\n <!-- Main View Selector Button -->\n <div class=\"view-selector-wrapper\">\n <button\n class=\"view-selector-button\"\n [class.modified]=\"viewModified\"\n [class.open]=\"isDropdownOpen\"\n (click)=\"toggleDropdown()\"\n [disabled]=\"isLoading\"\n title=\"Select a saved view\">\n <i class=\"fa-solid fa-layer-group view-icon\"></i>\n <span class=\"view-name\">{{ displayName }}</span>\n @if (viewModified) {\n <span class=\"modified-indicator\" title=\"View has unsaved changes\">\u2022</span>\n }\n <i class=\"fa-solid fa-chevron-down dropdown-arrow\" [class.rotated]=\"isDropdownOpen\"></i>\n </button>\n\n <!-- Dropdown Panel -->\n @if (isDropdownOpen) {\n <div class=\"dropdown-panel\">\n <!-- Default Option -->\n <div\n class=\"dropdown-item default-option\"\n [class.selected]=\"!selectedViewId\"\n (click)=\"selectDefault()\">\n <i class=\"fa-solid fa-table item-icon\"></i>\n <span class=\"item-name\">(Default)</span>\n @if (!selectedViewId) {\n <i class=\"fa-solid fa-check selected-check\"></i>\n }\n </div>\n\n <div class=\"dropdown-divider\"></div>\n\n <!-- My Views Section -->\n @if (myViews.length > 0) {\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-user section-icon\"></i>\n <span class=\"section-title\">My Views</span>\n <span class=\"section-count\">{{ myViews.length }}</span>\n </div>\n @for (view of myViews; track view.id) {\n <div\n class=\"dropdown-item view-item\"\n [class.selected]=\"selectedViewId === view.id\"\n (click)=\"selectView(view)\">\n <i class=\"fa-solid fa-layer-group item-icon\"></i>\n <span class=\"item-name\">{{ view.name }}</span>\n @if (view.isShared) {\n <i class=\"fa-solid fa-share-alt shared-indicator\" title=\"Shared with others\"></i>\n }\n @if (view.isDefault) {\n <i class=\"fa-solid fa-star default-indicator\" title=\"Default view for this entity\"></i>\n }\n @if (selectedViewId === view.id) {\n <i class=\"fa-solid fa-check selected-check\"></i>\n }\n </div>\n }\n </div>\n }\n\n <!-- Shared Views Section -->\n @if (sharedViews.length > 0) {\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-users section-icon\"></i>\n <span class=\"section-title\">Shared Views</span>\n <span class=\"section-count\">{{ sharedViews.length }}</span>\n </div>\n @for (view of sharedViews; track view.id) {\n <div\n class=\"dropdown-item view-item\"\n [class.selected]=\"selectedViewId === view.id\"\n (click)=\"selectView(view)\">\n <i class=\"fa-solid fa-layer-group item-icon\"></i>\n <span class=\"item-name\">{{ view.name }}</span>\n @if (!view.userCanEdit) {\n <i class=\"fa-solid fa-lock readonly-indicator\" title=\"View-only access\"></i>\n }\n @if (selectedViewId === view.id) {\n <i class=\"fa-solid fa-check selected-check\"></i>\n }\n </div>\n }\n </div>\n }\n\n <!-- No Views Message -->\n @if (!hasViews && !isLoading) {\n <div class=\"empty-views-message\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No saved views yet</span>\n </div>\n }\n\n <!-- Loading Indicator -->\n @if (isLoading) {\n <div class=\"loading-views\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading views...</span>\n </div>\n }\n\n <div class=\"dropdown-divider\"></div>\n\n <!-- Actions Section -->\n <div class=\"dropdown-actions\">\n <button\n class=\"action-button\"\n (click)=\"onSaveView()\"\n [disabled]=\"!viewModified && !selectedViewId\"\n title=\"Save current configuration\">\n <i class=\"fa-solid fa-save\"></i>\n <span>Save View</span>\n </button>\n <button\n class=\"action-button\"\n (click)=\"onSaveAsNewView()\"\n title=\"Save as a new view\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Save As New</span>\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Open in Tab Button (only visible when a view is selected) -->\n @if (selectedViewId) {\n <button\n class=\"open-in-tab-button\"\n (click)=\"onOpenInTab()\"\n title=\"Open this view in a new tab\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n }\n\n <!-- Configure View Button -->\n <button\n class=\"configure-view-button\"\n (click)=\"onConfigureView()\"\n title=\"Configure view settings (columns, filters, sorting)\">\n <i class=\"fa-solid fa-sliders-h\"></i>\n </button>\n</div>\n", styles: ["/* View Selector Container */\n.view-selector-container {\n display: flex;\n align-items: center;\n gap: 4px;\n position: relative;\n}\n\n/* Backdrop for closing dropdown */\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n background: transparent;\n}\n\n.view-selector-wrapper {\n position: relative;\n}\n\n/* Main Button */\n.view-selector-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n min-width: 140px;\n max-width: 280px;\n}\n\n.view-selector-button:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.view-selector-button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.view-selector-button.open {\n background: var(--background-active, #e0e0e0);\n border-color: var(--primary-color, #007bff);\n}\n\n.view-selector-button.modified {\n border-color: var(--warning-color, #f59e0b);\n}\n\n.view-icon {\n color: var(--text-secondary, #666);\n font-size: 12px;\n}\n\n.view-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.modified-indicator {\n color: var(--warning-color, #f59e0b);\n font-weight: bold;\n font-size: 18px;\n line-height: 1;\n}\n\n.dropdown-arrow {\n color: var(--text-secondary, #666);\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.dropdown-arrow.rotated {\n transform: rotate(180deg);\n}\n\n/* Dropdown Panel */\n.dropdown-panel {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 280px;\n max-width: 360px;\n max-height: 400px;\n overflow-y: auto;\n background: var(--background-panel, #fff);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n}\n\n/* Dropdown Items */\n.dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.dropdown-item:hover {\n background: var(--background-hover, #f5f5f5);\n}\n\n.dropdown-item.selected {\n background: var(--primary-light, #e6f0ff);\n}\n\n.dropdown-item.selected:hover {\n background: var(--primary-light-hover, #d6e4f9);\n}\n\n.default-option {\n font-weight: 500;\n}\n\n.item-icon {\n color: var(--text-secondary, #666);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.item-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n\n.shared-indicator,\n.default-indicator,\n.readonly-indicator {\n color: var(--text-tertiary, #999);\n font-size: 11px;\n}\n\n.default-indicator {\n color: var(--warning-color, #f59e0b);\n}\n\n.selected-check {\n color: var(--primary-color, #007bff);\n font-size: 12px;\n}\n\n/* Dropdown Sections */\n.dropdown-section {\n padding: 4px 0;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px 6px;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-tertiary, #999);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.section-icon {\n font-size: 10px;\n}\n\n.section-title {\n flex: 1;\n}\n\n.section-count {\n background: var(--background-alt, #f0f0f0);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n}\n\n/* Dropdown Divider */\n.dropdown-divider {\n height: 1px;\n background: var(--border-color-light, #eee);\n margin: 4px 0;\n}\n\n/* Empty State */\n.empty-views-message,\n.loading-views {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 20px;\n color: var(--text-tertiary, #999);\n font-size: 13px;\n}\n\n/* Actions Section */\n.dropdown-actions {\n display: flex;\n gap: 8px;\n padding: 10px 14px;\n}\n\n.action-button {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 8px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n}\n\n.action-button:hover:not(:disabled) {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.action-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-button i {\n font-size: 11px;\n}\n\n/* Open in Tab Button */\n.open-in-tab-button,\n.configure-view-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n color: var(--text-secondary, #666);\n transition: all 0.15s ease;\n}\n\n.open-in-tab-button:hover,\n.configure-view-button:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n color: var(--primary-color, #007bff);\n}\n\n.open-in-tab-button i,\n.configure-view-button i {\n font-size: 12px;\n}\n\n/* Responsive Adjustments */\n@media (max-width: 768px) {\n .view-selector-button {\n min-width: 100px;\n max-width: 180px;\n padding: 6px 10px;\n }\n\n .dropdown-panel {\n min-width: 240px;\n max-width: calc(100vw - 32px);\n }\n\n .dropdown-actions {\n flex-direction: column;\n }\n}\n"] }]
462
+ }], () => [{ type: i0.ChangeDetectorRef }], { entity: [{
463
+ type: Input
464
+ }], selectedViewId: [{
465
+ type: Input
466
+ }], viewModified: [{
467
+ type: Input
468
+ }], viewSelected: [{
469
+ type: Output
470
+ }], saveViewRequested: [{
471
+ type: Output
472
+ }], manageViewsRequested: [{
473
+ type: Output
474
+ }], openInTabRequested: [{
475
+ type: Output
476
+ }], configureViewRequested: [{
477
+ type: Output
478
+ }] }); })();
479
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ViewSelectorComponent, { className: "ViewSelectorComponent", filePath: "src/DataExplorer/components/view-selector/view-selector.component.ts", lineNumber: 50 }); })();
480
+ //# sourceMappingURL=view-selector.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-selector.component.js","sourceRoot":"","sources":["../../../../src/DataExplorer/components/view-selector/view-selector.component.ts","../../../../src/DataExplorer/components/view-selector/view-selector.component.html"],"names":[],"mappings":"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"}