@memberjunction/ng-core-entity-forms 5.21.0 → 5.23.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 (157) hide show
  1. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +4 -5
  2. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +55 -59
  4. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  5. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +0 -1
  6. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +4 -5
  8. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  9. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +54 -71
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1053 -1096
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +2 -3
  15. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +39 -82
  17. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +4 -5
  19. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +28 -31
  21. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +4 -5
  23. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +15 -14
  25. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +4 -7
  27. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +77 -124
  29. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +2 -2
  31. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
  32. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +10 -11
  33. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  34. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +4 -5
  35. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  36. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +18 -18
  37. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  38. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +4 -5
  39. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  40. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +59 -80
  41. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  42. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +4 -5
  43. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  44. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +23 -24
  45. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  47. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +862 -906
  48. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  49. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +4 -5
  50. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  51. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +448 -499
  52. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  53. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +2 -2
  54. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
  55. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +6 -11
  56. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  57. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +4 -5
  58. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  59. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +16 -15
  60. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  61. package/dist/lib/custom/Actions/action-execution-log-form.component.js +160 -166
  62. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  63. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  64. package/dist/lib/custom/Actions/action-form.component.js +93 -94
  65. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  66. package/dist/lib/custom/Entities/entity-form.component.js +2 -2
  67. package/dist/lib/custom/Lists/list-form.component.js +61 -63
  68. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  69. package/dist/lib/custom/Queries/query-category-dialog.component.js +33 -59
  70. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  71. package/dist/lib/custom/Queries/query-form.component.js +354 -360
  72. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  73. package/dist/lib/custom/Queries/query-run-dialog.component.js +62 -71
  74. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  75. package/dist/lib/custom/Templates/template-param-dialog.component.js +128 -124
  76. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  77. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +45 -22
  78. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  79. package/dist/lib/custom/Templates/template-params-grid.component.js +380 -384
  80. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  81. package/dist/lib/custom/Templates/templates-form.component.js +34 -36
  82. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  83. package/dist/lib/custom/Tests/test-form.component.js +9 -10
  84. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  85. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +4 -4
  86. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  87. package/dist/lib/custom/Tests/test-run-form.component.js +8 -8
  88. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/test-suite-form.component.js +7 -8
  90. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  91. package/dist/lib/custom/Tests/test-suite-run-form.component.js +7 -8
  92. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  93. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +381 -409
  94. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  95. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  96. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +1 -1
  97. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  98. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  99. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +74 -63
  100. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  101. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +10 -10
  102. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  103. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  104. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +352 -332
  105. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  106. package/dist/lib/custom/custom-forms.module.d.ts +22 -27
  107. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  108. package/dist/lib/custom/custom-forms.module.js +51 -81
  109. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  110. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +4 -5
  111. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  112. package/dist/lib/custom/shared/entity-selector-dialog.component.js +59 -66
  113. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  115. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +176 -156
  116. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  117. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts +10 -0
  118. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts.map +1 -0
  119. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js +65 -0
  120. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js.map +1 -0
  121. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts +10 -0
  122. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts.map +1 -0
  123. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js +89 -0
  124. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js.map +1 -0
  125. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
  126. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +80 -44
  127. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  128. package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js +11 -8
  129. package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.d.ts.map +1 -1
  131. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +39 -24
  132. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +35 -17
  135. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +15 -13
  137. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
  139. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +7 -9
  140. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +28 -24
  142. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
  143. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
  144. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +21 -9
  145. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  146. package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js +19 -17
  147. package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.d.ts.map +1 -1
  149. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +82 -14
  150. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
  151. package/dist/lib/generated/generated-forms.module.d.ts +280 -279
  152. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  153. package/dist/lib/generated/generated-forms.module.js +102 -142
  154. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  155. package/dist/lib/shared/components/template-editor.component.js +14 -15
  156. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  157. package/package.json +34 -41
@@ -1,12 +1,10 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { RunView } from '@memberjunction/core';
3
3
  import { UUIDsEqual } from '@memberjunction/global';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@memberjunction/ng-shared";
6
- import * as i2 from "@progress/kendo-angular-dialog";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "@progress/kendo-angular-inputs";
9
- import * as i5 from "@progress/kendo-angular-buttons";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@memberjunction/ng-ui-components";
10
8
  const _forTrack0 = ($index, $item) => $item.ID;
11
9
  function EntitySelectorDialogComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
12
10
  i0.ɵɵelement(0, "i");
@@ -14,11 +12,8 @@ function EntitySelectorDialogComponent_Conditional_3_Template(rf, ctx) { if (rf
14
12
  const ctx_r0 = i0.ɵɵnextContext();
15
13
  i0.ɵɵclassMap(ctx_r0.config.icon);
16
14
  } }
17
- function EntitySelectorDialogComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelement(0, "i", 14);
19
- } }
20
- function EntitySelectorDialogComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "div", 7);
15
+ function EntitySelectorDialogComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelementStart(0, "div", 8);
22
17
  i0.ɵɵelement(1, "i", 15);
23
18
  i0.ɵɵelementStart(2, "p");
24
19
  i0.ɵɵtext(3);
@@ -28,7 +23,7 @@ function EntitySelectorDialogComponent_Conditional_9_Template(rf, ctx) { if (rf
28
23
  i0.ɵɵadvance(3);
29
24
  i0.ɵɵtextInterpolate1("Loading ", ctx_r0.config.entityName, "...");
30
25
  } }
31
- function EntitySelectorDialogComponent_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
26
+ function EntitySelectorDialogComponent_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
32
27
  i0.ɵɵelementStart(0, "div", 16);
33
28
  i0.ɵɵelement(1, "i", 18);
34
29
  i0.ɵɵelementStart(2, "p");
@@ -39,7 +34,7 @@ function EntitySelectorDialogComponent_Conditional_10_Conditional_1_Template(rf,
39
34
  i0.ɵɵadvance(3);
40
35
  i0.ɵɵtextInterpolate1("No ", ctx_r0.config.entityName, " found");
41
36
  } }
42
- function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
37
+ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
43
38
  i0.ɵɵelementStart(0, "div", 24);
44
39
  i0.ɵɵtext(1);
45
40
  i0.ɵɵelementEnd();
@@ -49,7 +44,7 @@ function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Condit
49
44
  i0.ɵɵadvance();
50
45
  i0.ɵɵtextInterpolate(entity_r3[ctx_r0.config.descriptionField]);
51
46
  } }
52
- function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
47
+ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
53
48
  i0.ɵɵelementStart(0, "div", 25)(1, "span", 26);
54
49
  i0.ɵɵtext(2);
55
50
  i0.ɵɵelementEnd()();
@@ -61,18 +56,18 @@ function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Condit
61
56
  i0.ɵɵadvance();
62
57
  i0.ɵɵtextInterpolate1(" ", entity_r3[ctx_r0.config.statusField], " ");
63
58
  } }
64
- function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
59
+ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
65
60
  const _r2 = i0.ɵɵgetCurrentView();
66
61
  i0.ɵɵelementStart(0, "div", 20);
67
- i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Template_div_click_0_listener() { const entity_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectEntity(entity_r3)); });
62
+ i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Template_div_click_0_listener() { const entity_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.selectEntity(entity_r3)); });
68
63
  i0.ɵɵelementStart(1, "div", 21);
69
64
  i0.ɵɵelement(2, "i");
70
65
  i0.ɵɵelementEnd();
71
66
  i0.ɵɵelementStart(3, "div", 22)(4, "div", 23);
72
67
  i0.ɵɵtext(5);
73
68
  i0.ɵɵelementEnd();
74
- i0.ɵɵconditionalCreate(6, EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Conditional_6_Template, 2, 1, "div", 24);
75
- i0.ɵɵconditionalCreate(7, EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Conditional_7_Template, 3, 3, "div", 25);
69
+ i0.ɵɵconditionalCreate(6, EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Conditional_6_Template, 2, 1, "div", 24);
70
+ i0.ɵɵconditionalCreate(7, EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Conditional_7_Template, 3, 3, "div", 25);
76
71
  i0.ɵɵelementEnd()();
77
72
  } if (rf & 2) {
78
73
  const entity_r3 = ctx.$implicit;
@@ -87,18 +82,18 @@ function EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Templa
87
82
  i0.ɵɵadvance();
88
83
  i0.ɵɵconditional(ctx_r0.config.statusField && entity_r3[ctx_r0.config.statusField] ? 7 : -1);
89
84
  } }
90
- function EntitySelectorDialogComponent_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
85
+ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
91
86
  i0.ɵɵelementStart(0, "div", 17);
92
- i0.ɵɵrepeaterCreate(1, EntitySelectorDialogComponent_Conditional_10_Conditional_2_For_2_Template, 8, 7, "div", 19, _forTrack0);
87
+ i0.ɵɵrepeaterCreate(1, EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Template, 8, 7, "div", 19, _forTrack0);
93
88
  i0.ɵɵelementEnd();
94
89
  } if (rf & 2) {
95
90
  const ctx_r0 = i0.ɵɵnextContext(2);
96
91
  i0.ɵɵadvance();
97
92
  i0.ɵɵrepeater(ctx_r0.filteredEntities);
98
93
  } }
99
- function EntitySelectorDialogComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "div", 8);
101
- i0.ɵɵconditionalCreate(1, EntitySelectorDialogComponent_Conditional_10_Conditional_1_Template, 4, 1, "div", 16)(2, EntitySelectorDialogComponent_Conditional_10_Conditional_2_Template, 3, 0, "div", 17);
94
+ function EntitySelectorDialogComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementStart(0, "div", 9);
96
+ i0.ɵɵconditionalCreate(1, EntitySelectorDialogComponent_Conditional_11_Conditional_1_Template, 4, 1, "div", 16)(2, EntitySelectorDialogComponent_Conditional_11_Conditional_2_Template, 3, 0, "div", 17);
102
97
  i0.ɵɵelementEnd();
103
98
  } if (rf & 2) {
104
99
  const ctx_r0 = i0.ɵɵnextContext();
@@ -106,14 +101,14 @@ function EntitySelectorDialogComponent_Conditional_10_Template(rf, ctx) { if (rf
106
101
  i0.ɵɵconditional(ctx_r0.filteredEntities.length === 0 ? 1 : 2);
107
102
  } }
108
103
  export class EntitySelectorDialogComponent {
109
- constructor(sharedService, dialogRef) {
104
+ constructor(sharedService) {
110
105
  this.sharedService = sharedService;
111
- this.dialogRef = dialogRef;
112
106
  this.entities = [];
113
107
  this.filteredEntities = [];
114
108
  this.selectedEntity = null;
115
109
  this.searchText = '';
116
110
  this.isLoading = true;
111
+ this.DialogClosed = new EventEmitter();
117
112
  }
118
113
  async ngOnInit() {
119
114
  await this.loadEntities();
@@ -158,59 +153,60 @@ export class EntitySelectorDialogComponent {
158
153
  }
159
154
  onSelect() {
160
155
  if (this.selectedEntity) {
161
- this.dialogRef.close({ entity: this.selectedEntity });
156
+ this.DialogClosed.emit({ entity: this.selectedEntity });
162
157
  }
163
158
  }
164
159
  createNew() {
165
- this.dialogRef.close({ createNew: true });
160
+ this.DialogClosed.emit({ createNew: true });
166
161
  }
167
162
  IsEntitySelected(entity) {
168
163
  return UUIDsEqual(this.selectedEntity?.ID, entity.ID);
169
164
  }
170
165
  onCancel() {
171
- this.dialogRef.close(null);
166
+ this.DialogClosed.emit(null);
172
167
  }
173
- static { this.ɵfac = function EntitySelectorDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntitySelectorDialogComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.DialogRef)); }; }
174
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntitySelectorDialogComponent, selectors: [["mj-entity-selector-dialog"]], inputs: { config: "config" }, standalone: false, decls: 19, vars: 6, consts: [[1, "dialog-wrapper"], [1, "dialog-header"], [3, "class"], [1, "dialog-content"], [1, "search-bar"], ["placeholder", "Search...", 1, "search-input", 3, "ngModelChange", "valueChange", "ngModel"], ["kendoTextBoxPrefixTemplate", ""], [1, "loading-state"], [1, "entity-list-container"], [1, "dialog-actions"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", 3, "click"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-search"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "empty-state"], [1, "entity-list"], [1, "fa-solid", "fa-inbox"], [1, "entity-item", 3, "selected"], [1, "entity-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-description"], [1, "item-status"], [1, "status-badge"]], template: function EntitySelectorDialogComponent_Template(rf, ctx) { if (rf & 1) {
168
+ static { this.ɵfac = function EntitySelectorDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntitySelectorDialogComponent)(i0.ɵɵdirectiveInject(i1.SharedService)); }; }
169
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntitySelectorDialogComponent, selectors: [["mj-entity-selector-dialog"]], inputs: { config: "config" }, outputs: { DialogClosed: "DialogClosed" }, standalone: false, decls: 20, vars: 6, consts: [[1, "dialog-wrapper"], [1, "dialog-header"], [3, "class"], [1, "dialog-content"], [1, "search-bar"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["placeholder", "Search...", 1, "mj-input", "search-input", 3, "ngModelChange", "ngModel"], [1, "loading-state"], [1, "entity-list-container"], [1, "dialog-actions"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "fa-solid", "fa-plus"], ["mjButton", "", 3, "click"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "empty-state"], [1, "entity-list"], [1, "fa-solid", "fa-inbox"], [1, "entity-item", 3, "selected"], [1, "entity-item", 3, "click"], [1, "item-icon"], [1, "item-content"], [1, "item-title"], [1, "item-description"], [1, "item-status"], [1, "status-badge"]], template: function EntitySelectorDialogComponent_Template(rf, ctx) { if (rf & 1) {
175
170
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h3");
176
171
  i0.ɵɵconditionalCreate(3, EntitySelectorDialogComponent_Conditional_3_Template, 1, 2, "i", 2);
177
172
  i0.ɵɵtext(4);
178
173
  i0.ɵɵelementEnd()();
179
- i0.ɵɵelementStart(5, "div", 3)(6, "div", 4)(7, "kendo-textbox", 5);
180
- i0.ɵɵtwoWayListener("ngModelChange", function EntitySelectorDialogComponent_Template_kendo_textbox_ngModelChange_7_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchText, $event) || (ctx.searchText = $event); return $event; });
181
- i0.ɵɵlistener("valueChange", function EntitySelectorDialogComponent_Template_kendo_textbox_valueChange_7_listener() { return ctx.onSearchChange(); });
182
- i0.ɵɵtemplate(8, EntitySelectorDialogComponent_ng_template_8_Template, 1, 0, "ng-template", 6);
183
- i0.ɵɵelementEnd()();
184
- i0.ɵɵconditionalCreate(9, EntitySelectorDialogComponent_Conditional_9_Template, 4, 1, "div", 7);
185
- i0.ɵɵconditionalCreate(10, EntitySelectorDialogComponent_Conditional_10_Template, 3, 1, "div", 8);
174
+ i0.ɵɵelementStart(5, "div", 3)(6, "div", 4)(7, "div", 5);
175
+ i0.ɵɵelement(8, "i", 6);
176
+ i0.ɵɵelementStart(9, "input", 7);
177
+ i0.ɵɵtwoWayListener("ngModelChange", function EntitySelectorDialogComponent_Template_input_ngModelChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchText, $event) || (ctx.searchText = $event); return $event; });
178
+ i0.ɵɵlistener("ngModelChange", function EntitySelectorDialogComponent_Template_input_ngModelChange_9_listener() { return ctx.onSearchChange(); });
179
+ i0.ɵɵelementEnd()()();
180
+ i0.ɵɵconditionalCreate(10, EntitySelectorDialogComponent_Conditional_10_Template, 4, 1, "div", 8);
181
+ i0.ɵɵconditionalCreate(11, EntitySelectorDialogComponent_Conditional_11_Template, 3, 1, "div", 9);
186
182
  i0.ɵɵelementEnd();
187
- i0.ɵɵelementStart(11, "div", 9)(12, "button", 10);
188
- i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Template_button_click_12_listener() { return ctx.createNew(); });
189
- i0.ɵɵelement(13, "i", 11);
190
- i0.ɵɵtext(14, " Create New ");
183
+ i0.ɵɵelementStart(12, "div", 10)(13, "button", 11);
184
+ i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Template_button_click_13_listener() { return ctx.createNew(); });
185
+ i0.ɵɵelement(14, "i", 12);
186
+ i0.ɵɵtext(15, " Create New ");
191
187
  i0.ɵɵelementEnd();
192
- i0.ɵɵelementStart(15, "button", 12);
193
- i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Template_button_click_15_listener() { return ctx.onCancel(); });
194
- i0.ɵɵtext(16, "Cancel");
188
+ i0.ɵɵelementStart(16, "button", 13);
189
+ i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Template_button_click_16_listener() { return ctx.onCancel(); });
190
+ i0.ɵɵtext(17, "Cancel");
195
191
  i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(17, "button", 13);
197
- i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Template_button_click_17_listener() { return ctx.onSelect(); });
198
- i0.ɵɵtext(18, "Select");
192
+ i0.ɵɵelementStart(18, "button", 14);
193
+ i0.ɵɵlistener("click", function EntitySelectorDialogComponent_Template_button_click_18_listener() { return ctx.onSelect(); });
194
+ i0.ɵɵtext(19, "Select");
199
195
  i0.ɵɵelementEnd()()();
200
196
  } if (rf & 2) {
201
197
  i0.ɵɵadvance(3);
202
198
  i0.ɵɵconditional(ctx.config.icon ? 3 : -1);
203
199
  i0.ɵɵadvance();
204
200
  i0.ɵɵtextInterpolate1(" ", ctx.config.title);
205
- i0.ɵɵadvance(3);
201
+ i0.ɵɵadvance(5);
206
202
  i0.ɵɵtwoWayProperty("ngModel", ctx.searchText);
207
- i0.ɵɵadvance(2);
208
- i0.ɵɵconditional(ctx.isLoading ? 9 : -1);
209
203
  i0.ɵɵadvance();
210
- i0.ɵɵconditional(!ctx.isLoading ? 10 : -1);
204
+ i0.ɵɵconditional(ctx.isLoading ? 10 : -1);
205
+ i0.ɵɵadvance();
206
+ i0.ɵɵconditional(!ctx.isLoading ? 11 : -1);
211
207
  i0.ɵɵadvance(7);
212
208
  i0.ɵɵproperty("disabled", !ctx.selectedEntity);
213
- } }, dependencies: [i3.NgControlStatus, i3.NgModel, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.ButtonComponent], styles: [".dialog-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions[_ngcontent-%COMP%] {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n }\n\n .search-input[_ngcontent-%COMP%] {\n flex: 1;\n }\n\n .loading-state[_ngcontent-%COMP%], \n .empty-state[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .entity-list-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list[_ngcontent-%COMP%] {\n padding: 8px;\n }\n\n .entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .entity-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .item-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status[_ngcontent-%COMP%] {\n margin-top: 4px;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n }"] }); }
209
+ } }, dependencies: [i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJButtonDirective], styles: [".dialog-wrapper[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header[_ngcontent-%COMP%] {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions[_ngcontent-%COMP%] {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n }\n\n .search-input-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n pointer-events: none;\n }\n\n .search-input[_ngcontent-%COMP%] {\n flex: 1;\n padding-left: 32px;\n }\n\n .loading-state[_ngcontent-%COMP%], \n .empty-state[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .entity-list-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list[_ngcontent-%COMP%] {\n padding: 8px;\n }\n\n .entity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .entity-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .item-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status[_ngcontent-%COMP%] {\n margin-top: 4px;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #28a745;\n }"] }); }
214
210
  }
215
211
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntitySelectorDialogComponent, [{
216
212
  type: Component,
@@ -224,15 +220,10 @@ export class EntitySelectorDialogComponent {
224
220
  <div class="dialog-content">
225
221
  <!-- Search Bar -->
226
222
  <div class="search-bar">
227
- <kendo-textbox
228
- [(ngModel)]="searchText"
229
- placeholder="Search..."
230
- (valueChange)="onSearchChange()"
231
- class="search-input">
232
- <ng-template kendoTextBoxPrefixTemplate>
233
- <i class="fa-solid fa-search"></i>
234
- </ng-template>
235
- </kendo-textbox>
223
+ <div class="search-input-wrapper">
224
+ <i class="fa-solid fa-search search-icon"></i>
225
+ <input class="mj-input search-input" [(ngModel)]="searchText" placeholder="Search..." (ngModelChange)="onSearchChange()" />
226
+ </div>
236
227
  </div>
237
228
 
238
229
  <!-- Loading State -->
@@ -281,16 +272,18 @@ export class EntitySelectorDialogComponent {
281
272
  }
282
273
  </div>
283
274
  <div class="dialog-actions">
284
- <button kendoButton themeColor="primary" (click)="createNew()">
275
+ <button mjButton variant="primary" (click)="createNew()">
285
276
  <i class="fa-solid fa-plus"></i> Create New
286
277
  </button>
287
- <button kendoButton (click)="onCancel()">Cancel</button>
288
- <button kendoButton themeColor="primary" [disabled]="!selectedEntity" (click)="onSelect()">Select</button>
278
+ <button mjButton (click)="onCancel()">Cancel</button>
279
+ <button mjButton variant="primary" [disabled]="!selectedEntity" (click)="onSelect()">Select</button>
289
280
  </div>
290
281
  </div>
291
- `, styles: ["\n .dialog-wrapper {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header h3 {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar {\n display: flex;\n gap: 12px;\n }\n\n .search-input {\n flex: 1;\n }\n\n .loading-state,\n .empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state i,\n .empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .entity-list-container {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list {\n padding: 8px;\n }\n\n .entity-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .entity-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content {\n flex: 1;\n min-width: 0;\n }\n\n .item-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status {\n margin-top: 4px;\n }\n\n .status-badge {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active {\n background: #d4edda;\n color: #28a745;\n }\n "] }]
292
- }], () => [{ type: i1.SharedService }, { type: i2.DialogRef }], { config: [{
282
+ `, styles: ["\n .dialog-wrapper {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header h3 {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar {\n display: flex;\n gap: 12px;\n }\n\n .search-input-wrapper {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n pointer-events: none;\n }\n\n .search-input {\n flex: 1;\n padding-left: 32px;\n }\n\n .loading-state,\n .empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state i,\n .empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .entity-list-container {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list {\n padding: 8px;\n }\n\n .entity-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .entity-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content {\n flex: 1;\n min-width: 0;\n }\n\n .item-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status {\n margin-top: 4px;\n }\n\n .status-badge {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active {\n background: #d4edda;\n color: #28a745;\n }\n "] }]
283
+ }], () => [{ type: i1.SharedService }], { config: [{
293
284
  type: Input
285
+ }], DialogClosed: [{
286
+ type: Output
294
287
  }] }); })();
295
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntitySelectorDialogComponent, { className: "EntitySelectorDialogComponent", filePath: "src/lib/custom/shared/entity-selector-dialog.component.ts", lineNumber: 250 }); })();
288
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntitySelectorDialogComponent, { className: "EntitySelectorDialogComponent", filePath: "src/lib/custom/shared/entity-selector-dialog.component.ts", lineNumber: 259 }); })();
296
289
  //# sourceMappingURL=entity-selector-dialog.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/shared/entity-selector-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { DialogRef } from '@progress/kendo-angular-dialog';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nexport interface EntitySelectorConfig {\n entityName: string;\n title: string;\n displayField: string;\n descriptionField?: string;\n statusField?: string;\n filters?: string;\n orderBy?: string;\n icon?: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-entity-selector-dialog',\n template: `\n <div class=\"dialog-wrapper\">\n <div class=\"dialog-header\">\n <h3>@if (config.icon) {\n <i [class]=\"config.icon\"></i>\n } {{ config.title }}</h3>\n </div>\n <div class=\"dialog-content\">\n <!-- Search Bar -->\n <div class=\"search-bar\">\n <kendo-textbox\n [(ngModel)]=\"searchText\"\n placeholder=\"Search...\"\n (valueChange)=\"onSearchChange()\"\n class=\"search-input\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading {{ config.entityName }}...</p>\n </div>\n }\n \n <!-- Entity List -->\n @if (!isLoading) {\n <div class=\"entity-list-container\">\n @if (filteredEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No {{ config.entityName }} found</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (entity of filteredEntities; track entity.ID) {\n <div class=\"entity-item\"\n [class.selected]=\"IsEntitySelected(entity)\"\n (click)=\"selectEntity(entity)\">\n <div class=\"item-icon\">\n <i [class]=\"config.icon || 'fa-solid fa-file'\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ entity[config.displayField] || 'Untitled' }}</div>\n @if (config.descriptionField && entity[config.descriptionField]) {\n <div class=\"item-description\">{{ entity[config.descriptionField] }}</div>\n }\n @if (config.statusField && entity[config.statusField]) {\n <div class=\"item-status\">\n <span class=\"status-badge\" [class.active]=\"entity[config.statusField] === 'Active'\">\n {{ entity[config.statusField] }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <div class=\"dialog-actions\">\n <button kendoButton themeColor=\"primary\" (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i> Create New\n </button>\n <button kendoButton (click)=\"onCancel()\">Cancel</button>\n <button kendoButton themeColor=\"primary\" [disabled]=\"!selectedEntity\" (click)=\"onSelect()\">Select</button>\n </div>\n </div>\n `,\n styles: [`\n .dialog-wrapper {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header h3 {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar {\n display: flex;\n gap: 12px;\n }\n\n .search-input {\n flex: 1;\n }\n\n .loading-state,\n .empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state i,\n .empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .entity-list-container {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list {\n padding: 8px;\n }\n\n .entity-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .entity-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content {\n flex: 1;\n min-width: 0;\n }\n\n .item-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status {\n margin-top: 4px;\n }\n\n .status-badge {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active {\n background: #d4edda;\n color: #28a745;\n }\n `]\n})\nexport class EntitySelectorDialogComponent implements OnInit {\n @Input() config!: EntitySelectorConfig;\n\n public entities: any[] = [];\n public filteredEntities: any[] = [];\n public selectedEntity: any = null;\n public searchText: string = '';\n public isLoading: boolean = true;\n\n constructor(\n private sharedService: SharedService,\n public dialogRef: DialogRef\n ) {}\n\n async ngOnInit() {\n await this.loadEntities();\n }\n\n async loadEntities() {\n this.isLoading = true;\n try {\n const rv = new RunView();\n const result = await rv.RunView({\n EntityName: this.config.entityName,\n ExtraFilter: this.config.filters,\n OrderBy: this.config.orderBy \n });\n\n this.entities = result.Results;\n this.filteredEntities = [...this.entities];\n } catch (error) {\n console.error('Error loading entities:', error);\n this.entities = [];\n this.filteredEntities = [];\n } finally {\n this.isLoading = false;\n }\n }\n\n onSearchChange() {\n if (!this.searchText) {\n this.filteredEntities = [...this.entities];\n } else {\n const searchLower = this.searchText.toLowerCase();\n this.filteredEntities = this.entities.filter(entity => {\n const displayValue = entity[this.config.displayField] || '';\n const descriptionValue = this.config.descriptionField ? (entity[this.config.descriptionField] || '') : '';\n return displayValue.toLowerCase().includes(searchLower) || \n descriptionValue.toLowerCase().includes(searchLower);\n });\n }\n }\n\n selectEntity(entity: any) {\n this.selectedEntity = entity;\n }\n\n onSelect() {\n if (this.selectedEntity) {\n this.dialogRef.close({ entity: this.selectedEntity });\n }\n }\n\n createNew() {\n this.dialogRef.close({ createNew: true });\n }\n\n IsEntitySelected(entity: Record<string, unknown>): boolean {\n return UUIDsEqual(this.selectedEntity?.ID, entity.ID as string);\n }\n\n onCancel() {\n this.dialogRef.close(null);\n }\n}"]}
1
+ {"version":3,"file":"entity-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/shared/entity-selector-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nexport interface EntitySelectorConfig {\n entityName: string;\n title: string;\n displayField: string;\n descriptionField?: string;\n statusField?: string;\n filters?: string;\n orderBy?: string;\n icon?: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-entity-selector-dialog',\n template: `\n <div class=\"dialog-wrapper\">\n <div class=\"dialog-header\">\n <h3>@if (config.icon) {\n <i [class]=\"config.icon\"></i>\n } {{ config.title }}</h3>\n </div>\n <div class=\"dialog-content\">\n <!-- Search Bar -->\n <div class=\"search-bar\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input class=\"mj-input search-input\" [(ngModel)]=\"searchText\" placeholder=\"Search...\" (ngModelChange)=\"onSearchChange()\" />\n </div>\n </div>\n \n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading {{ config.entityName }}...</p>\n </div>\n }\n \n <!-- Entity List -->\n @if (!isLoading) {\n <div class=\"entity-list-container\">\n @if (filteredEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No {{ config.entityName }} found</p>\n </div>\n } @else {\n <div class=\"entity-list\">\n @for (entity of filteredEntities; track entity.ID) {\n <div class=\"entity-item\"\n [class.selected]=\"IsEntitySelected(entity)\"\n (click)=\"selectEntity(entity)\">\n <div class=\"item-icon\">\n <i [class]=\"config.icon || 'fa-solid fa-file'\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ entity[config.displayField] || 'Untitled' }}</div>\n @if (config.descriptionField && entity[config.descriptionField]) {\n <div class=\"item-description\">{{ entity[config.descriptionField] }}</div>\n }\n @if (config.statusField && entity[config.statusField]) {\n <div class=\"item-status\">\n <span class=\"status-badge\" [class.active]=\"entity[config.statusField] === 'Active'\">\n {{ entity[config.statusField] }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <div class=\"dialog-actions\">\n <button mjButton variant=\"primary\" (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i> Create New\n </button>\n <button mjButton (click)=\"onCancel()\">Cancel</button>\n <button mjButton variant=\"primary\" [disabled]=\"!selectedEntity\" (click)=\"onSelect()\">Select</button>\n </div>\n </div>\n `,\n styles: [`\n .dialog-wrapper {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header h3 {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar {\n display: flex;\n gap: 12px;\n }\n\n .search-input-wrapper {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n pointer-events: none;\n }\n\n .search-input {\n flex: 1;\n padding-left: 32px;\n }\n\n .loading-state,\n .empty-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state i,\n .empty-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n .entity-list-container {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list {\n padding: 8px;\n }\n\n .entity-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .entity-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content {\n flex: 1;\n min-width: 0;\n }\n\n .item-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status {\n margin-top: 4px;\n }\n\n .status-badge {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active {\n background: #d4edda;\n color: #28a745;\n }\n `]\n})\nexport class EntitySelectorDialogComponent implements OnInit {\n @Input() config!: EntitySelectorConfig;\n\n public entities: any[] = [];\n public filteredEntities: any[] = [];\n public selectedEntity: any = null;\n public searchText: string = '';\n public isLoading: boolean = true;\n\n @Output() DialogClosed = new EventEmitter<Record<string, unknown> | null>();\n\n constructor(\n private sharedService: SharedService\n ) {}\n\n async ngOnInit() {\n await this.loadEntities();\n }\n\n async loadEntities() {\n this.isLoading = true;\n try {\n const rv = new RunView();\n const result = await rv.RunView({\n EntityName: this.config.entityName,\n ExtraFilter: this.config.filters,\n OrderBy: this.config.orderBy \n });\n\n this.entities = result.Results;\n this.filteredEntities = [...this.entities];\n } catch (error) {\n console.error('Error loading entities:', error);\n this.entities = [];\n this.filteredEntities = [];\n } finally {\n this.isLoading = false;\n }\n }\n\n onSearchChange() {\n if (!this.searchText) {\n this.filteredEntities = [...this.entities];\n } else {\n const searchLower = this.searchText.toLowerCase();\n this.filteredEntities = this.entities.filter(entity => {\n const displayValue = entity[this.config.displayField] || '';\n const descriptionValue = this.config.descriptionField ? (entity[this.config.descriptionField] || '') : '';\n return displayValue.toLowerCase().includes(searchLower) || \n descriptionValue.toLowerCase().includes(searchLower);\n });\n }\n }\n\n selectEntity(entity: any) {\n this.selectedEntity = entity;\n }\n\n onSelect() {\n if (this.selectedEntity) {\n this.DialogClosed.emit({ entity: this.selectedEntity });\n }\n }\n\n createNew() {\n this.DialogClosed.emit({ createNew: true });\n }\n\n IsEntitySelected(entity: Record<string, unknown>): boolean {\n return UUIDsEqual(this.selectedEntity?.ID, entity.ID as string);\n }\n\n onCancel() {\n this.DialogClosed.emit(null);\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mjaiagent.form.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAGlE,qBAMa,sBAAuB,SAAQ,iBAAiB;IAClD,MAAM,EAAG,eAAe,CAAC;IAEjB,QAAQ;yCAHd,sBAAsB;2CAAtB,sBAAsB;CAwClC"}
1
+ {"version":3,"file":"mjaiagent.form.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAGlE,qBAMa,sBAAuB,SAAQ,iBAAiB;IAClD,MAAM,EAAG,eAAe,CAAC;IAEjB,QAAQ;yCAHd,sBAAsB;2CAAtB,sBAAsB;CAyClC"}