@memberjunction/ng-core-entity-forms 3.3.0 → 3.4.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 (137) hide show
  1. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +16 -17
  2. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  3. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  4. package/dist/lib/custom/Actions/action-form.component.js +16 -30
  5. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  6. package/dist/lib/custom/EntityActions/entityaction.form.component.js +9 -10
  7. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  8. package/dist/lib/custom/Queries/query-form.component.js +7 -7
  9. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  10. package/dist/lib/custom/Templates/templates-form.component.js +195 -112
  11. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  12. package/dist/lib/custom/Tests/test-form.component.d.ts +4 -1
  13. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  14. package/dist/lib/custom/Tests/test-form.component.js +401 -380
  15. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  16. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +4 -1
  17. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  18. package/dist/lib/custom/Tests/test-suite-form.component.js +539 -518
  19. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  20. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +4 -1
  21. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  22. package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -518
  23. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  24. package/dist/lib/custom/custom-forms.module.d.ts +48 -52
  25. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  26. package/dist/lib/custom/custom-forms.module.js +11 -25
  27. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  28. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
  29. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +18 -24
  30. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
  31. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
  32. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +11 -17
  33. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  34. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +24 -22
  35. package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
  36. package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
  37. package/dist/lib/generated/Entities/Action/action.form.component.js +44 -26
  38. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
  40. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +23 -5
  41. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  42. package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
  43. package/dist/lib/generated/Entities/Company/company.form.component.js +28 -10
  44. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  45. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +3 -3
  46. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +3 -3
  47. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +3 -3
  49. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
  50. package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
  51. package/dist/lib/generated/Entities/Credential/credential.form.component.js +23 -5
  52. package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
  53. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
  54. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +23 -5
  55. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
  56. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
  57. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +14 -20
  58. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  59. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
  60. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +9 -15
  61. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  62. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +3 -3
  63. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  64. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
  65. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +6 -12
  66. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  67. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
  68. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +5 -11
  69. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  70. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
  71. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +8 -14
  72. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  73. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
  74. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +6 -12
  75. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
  77. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +6 -12
  78. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  79. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
  80. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +11 -17
  81. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  82. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts +11 -0
  83. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -0
  84. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +142 -0
  85. package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -0
  86. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts +11 -0
  87. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -0
  88. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +158 -0
  89. package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -0
  90. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts +11 -0
  91. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -0
  92. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +77 -0
  93. package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -0
  94. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts +11 -0
  95. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -0
  96. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +73 -0
  97. package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -0
  98. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts +11 -0
  99. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -0
  100. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +132 -0
  101. package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -0
  102. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts +11 -0
  103. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -0
  104. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +101 -0
  105. package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -0
  106. package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
  107. package/dist/lib/generated/Entities/Role/role.form.component.js +30 -12
  108. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  109. package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
  110. package/dist/lib/generated/Entities/Task/task.form.component.js +26 -32
  111. package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
  112. package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
  113. package/dist/lib/generated/Entities/User/user.form.component.js +182 -146
  114. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  115. package/dist/lib/generated/generated-forms.module.d.ts +97 -86
  116. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  117. package/dist/lib/generated/generated-forms.module.js +140 -59
  118. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  119. package/dist/public-api.js +1 -0
  120. package/dist/public-api.js.map +1 -1
  121. package/package.json +30 -30
  122. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +0 -32
  123. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +0 -1
  124. package/dist/lib/custom/Actions/action-param-dialog.component.js +0 -321
  125. package/dist/lib/custom/Actions/action-param-dialog.component.js.map +0 -1
  126. package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts +0 -20
  127. package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts.map +0 -1
  128. package/dist/lib/custom/Actions/action-result-code-dialog.component.js +0 -127
  129. package/dist/lib/custom/Actions/action-result-code-dialog.component.js.map +0 -1
  130. package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts +0 -15
  131. package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts.map +0 -1
  132. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +0 -96
  133. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +0 -1
  134. package/dist/lib/custom/Actions/action-test-harness.component.d.ts +0 -50
  135. package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +0 -1
  136. package/dist/lib/custom/Actions/action-test-harness.component.js +0 -710
  137. package/dist/lib/custom/Actions/action-test-harness.component.js.map +0 -1
@@ -15,152 +15,235 @@ import { MJNotificationService } from '@memberjunction/ng-notifications';
15
15
  import { languages } from '@codemirror/language-data';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "@angular/forms";
18
- import * as i2 from "@progress/kendo-angular-inputs";
19
- import * as i3 from "@progress/kendo-angular-dropdowns";
20
- import * as i4 from "@memberjunction/ng-user-view-grid";
21
- import * as i5 from "@memberjunction/ng-base-forms";
22
- import * as i6 from "@memberjunction/ng-form-toolbar";
23
- import * as i7 from "@memberjunction/ng-tabstrip";
18
+ import * as i2 from "@progress/kendo-angular-layout";
19
+ import * as i3 from "@progress/kendo-angular-inputs";
20
+ import * as i4 from "@progress/kendo-angular-dropdowns";
21
+ import * as i5 from "@progress/kendo-angular-buttons";
22
+ import * as i6 from "@memberjunction/ng-base-forms";
23
+ import * as i7 from "@memberjunction/ng-form-toolbar";
24
24
  import * as i8 from "./template-param-dialog.component";
25
25
  import * as i9 from "./template-params-grid.component";
26
26
  import * as i10 from "../../shared/components/template-editor.component";
27
27
  const _c0 = ["codeEditor"];
28
28
  function TemplatesFormExtendedComponent_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
29
29
  const _r2 = i0.ɵɵgetCurrentView();
30
- i0.ɵɵelementStart(0, "kendo-textbox", 46);
30
+ i0.ɵɵelementStart(0, "kendo-textbox", 38);
31
31
  i0.ɵɵtwoWayListener("ngModelChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_9_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Name, $event) || (ctx_r2.record.Name = $event); return i0.ɵɵresetView($event); });
32
32
  i0.ɵɵelementEnd();
33
33
  } if (rf & 2) {
34
34
  const ctx_r2 = i0.ɵɵnextContext(2);
35
35
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
36
36
  } }
37
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "span", 40);
39
+ i0.ɵɵelement(1, "i", 42);
40
+ i0.ɵɵtext(2, " Active ");
41
+ i0.ɵɵelementEnd();
42
+ } }
43
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelementStart(0, "span", 41);
45
+ i0.ɵɵelement(1, "i", 43);
46
+ i0.ɵɵtext(2, " Inactive ");
47
+ i0.ɵɵelementEnd();
48
+ } }
37
49
  function TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "div", 10);
50
+ i0.ɵɵelementStart(0, "h4", 39);
39
51
  i0.ɵɵtext(1);
40
52
  i0.ɵɵelementEnd();
53
+ i0.ɵɵtemplate(2, TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Conditional_2_Template, 3, 0, "span", 40)(3, TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Conditional_3_Template, 3, 0, "span", 41);
41
54
  } if (rf & 2) {
42
55
  const ctx_r2 = i0.ɵɵnextContext(2);
43
56
  i0.ɵɵadvance();
44
- i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Name || "Unnamed Template", " ");
57
+ i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Unnamed Template");
58
+ i0.ɵɵadvance();
59
+ i0.ɵɵconditional(ctx_r2.record.IsActive ? 2 : 3);
45
60
  } }
46
- function TemplatesFormExtendedComponent_Conditional_1_Conditional_15_Template(rf, ctx) { if (rf & 1) {
61
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
47
62
  const _r4 = i0.ɵɵgetCurrentView();
63
+ i0.ɵɵelementStart(0, "div", 11)(1, "div")(2, "label", 44);
64
+ i0.ɵɵtext(3, "Category");
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵelementStart(4, "kendo-combobox", 45);
67
+ i0.ɵɵtwoWayListener("ngModelChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_11_Template_kendo_combobox_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CategoryID, $event) || (ctx_r2.record.CategoryID = $event); return i0.ɵɵresetView($event); });
68
+ i0.ɵɵlistener("valueChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_11_Template_kendo_combobox_valueChange_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCategoryChange($event)); });
69
+ i0.ɵɵelementEnd()();
70
+ i0.ɵɵelementStart(5, "div")(6, "label", 44);
71
+ i0.ɵɵtext(7, "Active");
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵelementStart(8, "kendo-switch", 46);
74
+ i0.ɵɵtwoWayListener("ngModelChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_11_Template_kendo_switch_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.IsActive, $event) || (ctx_r2.record.IsActive = $event); return i0.ɵɵresetView($event); });
75
+ i0.ɵɵelementEnd()()();
76
+ } if (rf & 2) {
77
+ const ctx_r2 = i0.ɵɵnextContext(2);
78
+ i0.ɵɵadvance(4);
79
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CategoryID);
80
+ i0.ɵɵproperty("data", ctx_r2.categoryOptions)("valuePrimitive", true)("allowCustom", true);
81
+ i0.ɵɵadvance(4);
82
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.IsActive);
83
+ } }
84
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
85
+ const _r5 = i0.ɵɵgetCurrentView();
48
86
  i0.ɵɵelementStart(0, "kendo-textarea", 47);
49
- i0.ɵɵtwoWayListener("ngModelChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_15_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Description, $event) || (ctx_r2.record.Description = $event); return i0.ɵɵresetView($event); });
87
+ i0.ɵɵtwoWayListener("ngModelChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_12_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Description, $event) || (ctx_r2.record.Description = $event); return i0.ɵɵresetView($event); });
50
88
  i0.ɵɵelementEnd();
51
89
  } if (rf & 2) {
52
90
  const ctx_r2 = i0.ɵɵnextContext(2);
53
91
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Description);
54
92
  i0.ɵɵproperty("rows", 2);
55
93
  } }
56
- function TemplatesFormExtendedComponent_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵelementStart(0, "div", 13);
94
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_13_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementStart(0, "p", 13);
58
96
  i0.ɵɵtext(1);
59
97
  i0.ɵɵelementEnd();
60
98
  } if (rf & 2) {
61
99
  const ctx_r2 = i0.ɵɵnextContext(2);
62
100
  i0.ɵɵadvance();
63
- i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Description || "No description provided", " ");
101
+ i0.ɵɵtextInterpolate(ctx_r2.record.Description);
64
102
  } }
65
- function TemplatesFormExtendedComponent_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
66
- const _r5 = i0.ɵɵgetCurrentView();
67
- i0.ɵɵelementStart(0, "kendo-combobox", 48);
68
- i0.ɵɵtwoWayListener("ngModelChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_21_Template_kendo_combobox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CategoryID, $event) || (ctx_r2.record.CategoryID = $event); return i0.ɵɵresetView($event); });
69
- i0.ɵɵlistener("valueChange", function TemplatesFormExtendedComponent_Conditional_1_Conditional_21_Template_kendo_combobox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCategoryChange($event)); });
103
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_15_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementStart(0, "div", 15);
105
+ i0.ɵɵelement(1, "i", 48);
106
+ i0.ɵɵelementStart(2, "span", 17);
107
+ i0.ɵɵtext(3, "Category:");
70
108
  i0.ɵɵelementEnd();
109
+ i0.ɵɵelementStart(4, "span", 18);
110
+ i0.ɵɵtext(5);
111
+ i0.ɵɵelementEnd()();
71
112
  } if (rf & 2) {
72
113
  const ctx_r2 = i0.ɵɵnextContext(2);
73
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CategoryID);
74
- i0.ɵɵproperty("data", ctx_r2.categoryOptions)("valuePrimitive", true)("allowCustom", true);
114
+ i0.ɵɵadvance(5);
115
+ i0.ɵɵtextInterpolate(ctx_r2.record.Category);
75
116
  } }
76
- function TemplatesFormExtendedComponent_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
77
- i0.ɵɵelementStart(0, "div", 16);
117
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
118
+ const _r6 = i0.ɵɵgetCurrentView();
119
+ i0.ɵɵelementStart(0, "button", 49);
120
+ i0.ɵɵlistener("click", function TemplatesFormExtendedComponent_Conditional_1_Conditional_23_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.runTemplate()); });
121
+ i0.ɵɵelement(1, "i", 50);
122
+ i0.ɵɵtext(2, " Run ");
123
+ i0.ɵɵelementEnd();
124
+ } if (rf & 2) {
125
+ i0.ɵɵproperty("themeColor", "primary")("size", "large");
126
+ } }
127
+ function TemplatesFormExtendedComponent_Conditional_1_ng_template_26_Conditional_3_Template(rf, ctx) { if (rf & 1) {
128
+ i0.ɵɵelementStart(0, "span", 53);
78
129
  i0.ɵɵtext(1);
79
130
  i0.ɵɵelementEnd();
80
131
  } if (rf & 2) {
81
- const ctx_r2 = i0.ɵɵnextContext(2);
132
+ const ctx_r2 = i0.ɵɵnextContext(3);
82
133
  i0.ɵɵadvance();
83
- i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Category || "Uncategorized", " ");
134
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.templateContents.length, " ");
84
135
  } }
85
- function TemplatesFormExtendedComponent_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelementStart(0, "span", 18);
87
- i0.ɵɵelement(1, "i", 49);
88
- i0.ɵɵtext(2, " Active ");
136
+ function TemplatesFormExtendedComponent_Conditional_1_ng_template_26_Template(rf, ctx) { if (rf & 1) {
137
+ i0.ɵɵelementStart(0, "span", 51);
138
+ i0.ɵɵelement(1, "i", 52);
139
+ i0.ɵɵtext(2, " Template Editor ");
140
+ i0.ɵɵtemplate(3, TemplatesFormExtendedComponent_Conditional_1_ng_template_26_Conditional_3_Template, 2, 1, "span", 53);
141
+ i0.ɵɵelementEnd();
142
+ } if (rf & 2) {
143
+ const ctx_r2 = i0.ɵɵnextContext(2);
144
+ i0.ɵɵadvance(3);
145
+ i0.ɵɵconditional(ctx_r2.templateContents.length > 0 ? 3 : -1);
146
+ } }
147
+ function TemplatesFormExtendedComponent_Conditional_1_ng_template_30_Template(rf, ctx) { if (rf & 1) {
148
+ i0.ɵɵelementStart(0, "span", 51);
149
+ i0.ɵɵelement(1, "i", 54);
150
+ i0.ɵɵtext(2, " Details ");
89
151
  i0.ɵɵelementEnd();
90
152
  } }
91
- function TemplatesFormExtendedComponent_Conditional_1_Conditional_25_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵelementStart(0, "span", 19);
93
- i0.ɵɵelement(1, "i", 50);
94
- i0.ɵɵtext(2, " Inactive ");
153
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_44_ng_template_1_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementStart(0, "span", 51);
155
+ i0.ɵɵelement(1, "i", 57);
156
+ i0.ɵɵtext(2, " Parameters ");
95
157
  i0.ɵɵelementEnd();
96
158
  } }
159
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_44_Template(rf, ctx) { if (rf & 1) {
160
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 22);
161
+ i0.ɵɵtemplate(1, TemplatesFormExtendedComponent_Conditional_1_Conditional_44_ng_template_1_Template, 3, 0, "ng-template", 23);
162
+ i0.ɵɵelementStart(2, "div", 55);
163
+ i0.ɵɵelement(3, "mj-template-params-grid", 56);
164
+ i0.ɵɵelementEnd()();
165
+ } if (rf & 2) {
166
+ const ctx_r2 = i0.ɵɵnextContext(2);
167
+ i0.ɵɵproperty("expanded", false);
168
+ i0.ɵɵadvance(3);
169
+ i0.ɵɵproperty("template", ctx_r2.record)("editMode", ctx_r2.EditMode);
170
+ } }
171
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_45_ng_template_1_Template(rf, ctx) { if (rf & 1) {
172
+ i0.ɵɵelementStart(0, "span", 51);
173
+ i0.ɵɵelement(1, "i", 59);
174
+ i0.ɵɵtext(2, " AI Prompts ");
175
+ i0.ɵɵelementEnd();
176
+ } }
177
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_45_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 22);
179
+ i0.ɵɵtemplate(1, TemplatesFormExtendedComponent_Conditional_1_Conditional_45_ng_template_1_Template, 3, 0, "ng-template", 23);
180
+ i0.ɵɵelementStart(2, "div", 55);
181
+ i0.ɵɵelement(3, "mj-explorer-entity-data-grid", 58);
182
+ i0.ɵɵelementEnd()();
183
+ } if (rf & 2) {
184
+ const ctx_r2 = i0.ɵɵnextContext(2);
185
+ i0.ɵɵproperty("expanded", false);
186
+ i0.ɵɵadvance(3);
187
+ i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("AI Prompts", "TemplateID"))("NewRecordValues", ctx_r2.NewRecordValues("AI Prompts"))("AllowLoad", true)("ShowToolbar", false);
188
+ } }
189
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_46_ng_template_1_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵelementStart(0, "span", 51);
191
+ i0.ɵɵelement(1, "i", 60);
192
+ i0.ɵɵtext(2, " Entity Documents ");
193
+ i0.ɵɵelementEnd();
194
+ } }
195
+ function TemplatesFormExtendedComponent_Conditional_1_Conditional_46_Template(rf, ctx) { if (rf & 1) {
196
+ i0.ɵɵelementStart(0, "kendo-expansionpanel", 22);
197
+ i0.ɵɵtemplate(1, TemplatesFormExtendedComponent_Conditional_1_Conditional_46_ng_template_1_Template, 3, 0, "ng-template", 23);
198
+ i0.ɵɵelementStart(2, "div", 55);
199
+ i0.ɵɵelement(3, "mj-explorer-entity-data-grid", 58);
200
+ i0.ɵɵelementEnd()();
201
+ } if (rf & 2) {
202
+ const ctx_r2 = i0.ɵɵnextContext(2);
203
+ i0.ɵɵproperty("expanded", false);
204
+ i0.ɵɵadvance(3);
205
+ i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("Entity Documents", "TemplateID"))("NewRecordValues", ctx_r2.NewRecordValues("Entity Documents"))("AllowLoad", true)("ShowToolbar", false);
206
+ } }
97
207
  function TemplatesFormExtendedComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
98
208
  const _r1 = i0.ɵɵgetCurrentView();
99
209
  i0.ɵɵelementStart(0, "form", 2, 0);
100
210
  i0.ɵɵelement(2, "mj-form-toolbar", 3);
101
- i0.ɵɵelementStart(3, "div", 4)(4, "div", 5)(5, "div", 6)(6, "label", 7);
102
- i0.ɵɵelement(7, "i", 8);
103
- i0.ɵɵtext(8, " Template Name ");
104
- i0.ɵɵelementEnd();
105
- i0.ɵɵtemplate(9, TemplatesFormExtendedComponent_Conditional_1_Conditional_9_Template, 1, 1, "kendo-textbox", 9)(10, TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Template, 2, 1, "div", 10);
106
- i0.ɵɵelementEnd();
107
- i0.ɵɵelementStart(11, "div", 6)(12, "label", 7);
108
- i0.ɵɵelement(13, "i", 11);
109
- i0.ɵɵtext(14, " Description ");
211
+ i0.ɵɵelementStart(3, "div", 4)(4, "div", 5)(5, "div", 6)(6, "div", 7)(7, "div", 8);
212
+ i0.ɵɵelement(8, "i", 9);
213
+ i0.ɵɵtemplate(9, TemplatesFormExtendedComponent_Conditional_1_Conditional_9_Template, 1, 1, "kendo-textbox", 10)(10, TemplatesFormExtendedComponent_Conditional_1_Conditional_10_Template, 4, 2);
110
214
  i0.ɵɵelementEnd();
111
- i0.ɵɵtemplate(15, TemplatesFormExtendedComponent_Conditional_1_Conditional_15_Template, 1, 2, "kendo-textarea", 12)(16, TemplatesFormExtendedComponent_Conditional_1_Conditional_16_Template, 2, 1, "div", 13);
215
+ i0.ɵɵtemplate(11, TemplatesFormExtendedComponent_Conditional_1_Conditional_11_Template, 9, 5, "div", 11)(12, TemplatesFormExtendedComponent_Conditional_1_Conditional_12_Template, 1, 2, "kendo-textarea", 12)(13, TemplatesFormExtendedComponent_Conditional_1_Conditional_13_Template, 2, 1, "p", 13);
216
+ i0.ɵɵelementStart(14, "div", 14);
217
+ i0.ɵɵtemplate(15, TemplatesFormExtendedComponent_Conditional_1_Conditional_15_Template, 6, 1, "div", 15);
218
+ i0.ɵɵelementStart(16, "div", 15);
219
+ i0.ɵɵelement(17, "i", 16);
220
+ i0.ɵɵelementStart(18, "span", 17);
221
+ i0.ɵɵtext(19, "Contents:");
112
222
  i0.ɵɵelementEnd();
113
- i0.ɵɵelementStart(17, "div", 6)(18, "label", 7);
114
- i0.ɵɵelement(19, "i", 14);
115
- i0.ɵɵtext(20, " Category ");
116
- i0.ɵɵelementEnd();
117
- i0.ɵɵtemplate(21, TemplatesFormExtendedComponent_Conditional_1_Conditional_21_Template, 1, 4, "kendo-combobox", 15)(22, TemplatesFormExtendedComponent_Conditional_1_Conditional_22_Template, 2, 1, "div", 16);
118
- i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(23, "div", 17);
120
- i0.ɵɵtemplate(24, TemplatesFormExtendedComponent_Conditional_1_Conditional_24_Template, 3, 0, "span", 18)(25, TemplatesFormExtendedComponent_Conditional_1_Conditional_25_Template, 3, 0, "span", 19);
223
+ i0.ɵɵelementStart(20, "span", 18);
224
+ i0.ɵɵtext(21);
225
+ i0.ɵɵelementEnd()()()();
226
+ i0.ɵɵelementStart(22, "div", 19);
227
+ i0.ɵɵtemplate(23, TemplatesFormExtendedComponent_Conditional_1_Conditional_23_Template, 3, 2, "button", 20);
121
228
  i0.ɵɵelementEnd()()();
122
- i0.ɵɵelementStart(26, "mj-tabstrip", 20);
123
- i0.ɵɵlistener("TabSelected", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_tabstrip_TabSelected_26_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onTabSelect($event)); })("ResizeContainer", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_tabstrip_ResizeContainer_26_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.InvokeManualResize()); });
124
- i0.ɵɵelementStart(27, "mj-tab", 21);
125
- i0.ɵɵelement(28, "i", 22);
126
- i0.ɵɵtext(29, " Contents ");
127
- i0.ɵɵelementStart(30, "span", 23);
128
- i0.ɵɵtext(31);
129
- i0.ɵɵelementEnd()();
130
- i0.ɵɵelementStart(32, "mj-tab-body")(33, "div", 24)(34, "mj-template-editor", 25);
131
- i0.ɵɵlistener("contentChange", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_editor_contentChange_34_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSharedTemplateContentChange($event)); })("runTemplate", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_editor_runTemplate_34_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSharedTemplateRun($event)); });
229
+ i0.ɵɵelementStart(24, "div", 21)(25, "kendo-expansionpanel", 22);
230
+ i0.ɵɵtemplate(26, TemplatesFormExtendedComponent_Conditional_1_ng_template_26_Template, 4, 1, "ng-template", 23);
231
+ i0.ɵɵelementStart(27, "div", 24)(28, "mj-template-editor", 25);
232
+ i0.ɵɵlistener("contentChange", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_editor_contentChange_28_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSharedTemplateContentChange($event)); })("runTemplate", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_editor_runTemplate_28_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSharedTemplateRun($event)); });
132
233
  i0.ɵɵelementEnd()()();
133
- i0.ɵɵelementStart(35, "mj-tab", 26);
134
- i0.ɵɵelement(36, "i", 27);
135
- i0.ɵɵtext(37, " Details ");
234
+ i0.ɵɵelementStart(29, "kendo-expansionpanel", 22);
235
+ i0.ɵɵtemplate(30, TemplatesFormExtendedComponent_Conditional_1_ng_template_30_Template, 3, 0, "ng-template", 23);
236
+ i0.ɵɵelementStart(31, "div", 26)(32, "div", 27)(33, "div");
237
+ i0.ɵɵelement(34, "mj-form-field", 28)(35, "mj-form-field", 29)(36, "mj-form-field", 30)(37, "mj-form-field", 31);
136
238
  i0.ɵɵelementEnd();
137
- i0.ɵɵelementStart(38, "mj-tab-body")(39, "div", 28)(40, "div", 2);
138
- i0.ɵɵelement(41, "mj-form-field", 29)(42, "mj-form-field", 30)(43, "mj-form-field", 31)(44, "mj-form-field", 32)(45, "mj-form-field", 33)(46, "mj-form-field", 34)(47, "mj-form-field", 35)(48, "mj-form-field", 36)(49, "mj-form-field", 37);
239
+ i0.ɵɵelementStart(38, "div");
240
+ i0.ɵɵelement(39, "mj-form-field", 32)(40, "mj-form-field", 33)(41, "mj-form-field", 34)(42, "mj-form-field", 35)(43, "mj-form-field", 36);
241
+ i0.ɵɵelementEnd()()()();
242
+ i0.ɵɵtemplate(44, TemplatesFormExtendedComponent_Conditional_1_Conditional_44_Template, 4, 3, "kendo-expansionpanel", 22)(45, TemplatesFormExtendedComponent_Conditional_1_Conditional_45_Template, 4, 5, "kendo-expansionpanel", 22)(46, TemplatesFormExtendedComponent_Conditional_1_Conditional_46_Template, 4, 5, "kendo-expansionpanel", 22);
139
243
  i0.ɵɵelementEnd()()();
140
- i0.ɵɵelementStart(50, "mj-tab", 38);
141
- i0.ɵɵelement(51, "i", 39);
142
- i0.ɵɵtext(52, " Parameters ");
143
- i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(53, "mj-tab-body");
145
- i0.ɵɵelement(54, "mj-template-params-grid", 40);
146
- i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(55, "mj-tab", 41);
148
- i0.ɵɵelement(56, "i", 42);
149
- i0.ɵɵtext(57, " AI Prompts ");
150
- i0.ɵɵelementEnd();
151
- i0.ɵɵelementStart(58, "mj-tab-body");
152
- i0.ɵɵelement(59, "mj-user-view-grid", 43);
153
- i0.ɵɵelementEnd();
154
- i0.ɵɵelementStart(60, "mj-tab", 44);
155
- i0.ɵɵelement(61, "i", 8);
156
- i0.ɵɵtext(62, " Documents ");
157
- i0.ɵɵelementEnd();
158
- i0.ɵɵelementStart(63, "mj-tab-body");
159
- i0.ɵɵelement(64, "mj-user-view-grid", 43);
160
- i0.ɵɵelementEnd()()();
161
- i0.ɵɵelementStart(65, "mj-template-param-dialog", 45);
162
- i0.ɵɵtwoWayListener("isVisibleChange", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_param_dialog_isVisibleChange_65_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showParamDialog, $event) || (ctx_r2.showParamDialog = $event); return i0.ɵɵresetView($event); });
163
- i0.ɵɵlistener("onClose", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_param_dialog_onClose_65_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onParamDialogClose()); });
244
+ i0.ɵɵelementStart(47, "mj-template-param-dialog", 37);
245
+ i0.ɵɵtwoWayListener("isVisibleChange", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_param_dialog_isVisibleChange_47_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showParamDialog, $event) || (ctx_r2.showParamDialog = $event); return i0.ɵɵresetView($event); });
246
+ i0.ɵɵlistener("onClose", function TemplatesFormExtendedComponent_Conditional_1_Template_mj_template_param_dialog_onClose_47_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onParamDialogClose()); });
164
247
  i0.ɵɵelementEnd();
165
248
  } if (rf & 2) {
166
249
  const ctx_r2 = i0.ɵɵnextContext();
@@ -168,19 +251,23 @@ function TemplatesFormExtendedComponent_Conditional_1_Template(rf, ctx) { if (rf
168
251
  i0.ɵɵproperty("form", ctx_r2);
169
252
  i0.ɵɵadvance(7);
170
253
  i0.ɵɵconditional(ctx_r2.EditMode ? 9 : 10);
171
- i0.ɵɵadvance(6);
172
- i0.ɵɵconditional(ctx_r2.EditMode ? 15 : 16);
173
- i0.ɵɵadvance(6);
174
- i0.ɵɵconditional(ctx_r2.EditMode ? 21 : 22);
254
+ i0.ɵɵadvance(2);
255
+ i0.ɵɵconditional(ctx_r2.EditMode ? 11 : -1);
256
+ i0.ɵɵadvance();
257
+ i0.ɵɵconditional(ctx_r2.EditMode ? 12 : ctx_r2.record.Description ? 13 : -1);
175
258
  i0.ɵɵadvance(3);
176
- i0.ɵɵconditional(ctx_r2.record.IsActive ? 24 : 25);
177
- i0.ɵɵadvance(7);
178
- i0.ɵɵtextInterpolate1(" ", ctx_r2.templateContents.length, " ");
259
+ i0.ɵɵconditional(ctx_r2.record.Category ? 15 : -1);
260
+ i0.ɵɵadvance(6);
261
+ i0.ɵɵtextInterpolate(ctx_r2.templateContents.length);
262
+ i0.ɵɵadvance(2);
263
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 23 : -1);
264
+ i0.ɵɵadvance(2);
265
+ i0.ɵɵproperty("expanded", true);
179
266
  i0.ɵɵadvance(3);
180
267
  i0.ɵɵproperty("template", ctx_r2.record)("config", ctx_r2.templateEditorConfig);
181
- i0.ɵɵadvance(7);
182
- i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
183
268
  i0.ɵɵadvance();
269
+ i0.ɵɵproperty("expanded", false);
270
+ i0.ɵɵadvance(5);
184
271
  i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
185
272
  i0.ɵɵadvance();
186
273
  i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
@@ -188,6 +275,8 @@ function TemplatesFormExtendedComponent_Conditional_1_Template(rf, ctx) { if (rf
188
275
  i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
189
276
  i0.ɵɵadvance();
190
277
  i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
278
+ i0.ɵɵadvance(2);
279
+ i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
191
280
  i0.ɵɵadvance();
192
281
  i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
193
282
  i0.ɵɵadvance();
@@ -197,17 +286,11 @@ function TemplatesFormExtendedComponent_Conditional_1_Template(rf, ctx) { if (rf
197
286
  i0.ɵɵadvance();
198
287
  i0.ɵɵproperty("record", ctx_r2.record)("ShowLabel", true)("EditMode", ctx_r2.EditMode);
199
288
  i0.ɵɵadvance();
200
- i0.ɵɵproperty("Visible", ctx_r2.record.IsSaved);
201
- i0.ɵɵadvance(4);
202
- i0.ɵɵproperty("template", ctx_r2.record)("editMode", ctx_r2.EditMode);
289
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 44 : -1);
203
290
  i0.ɵɵadvance();
204
- i0.ɵɵproperty("Visible", ctx_r2.record.IsSaved);
205
- i0.ɵɵadvance(4);
206
- i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("AI Prompts", "TemplateID"))("NewRecordValues", ctx_r2.NewRecordValues("AI Prompts"))("AllowLoad", ctx_r2.IsCurrentTab("AI Prompts"))("EditMode", ctx_r2.GridEditMode());
291
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 45 : -1);
207
292
  i0.ɵɵadvance();
208
- i0.ɵɵproperty("Visible", ctx_r2.record.IsSaved);
209
- i0.ɵɵadvance(4);
210
- i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("Entity Documents", "TemplateID"))("NewRecordValues", ctx_r2.NewRecordValues("Entity Documents"))("AllowLoad", ctx_r2.IsCurrentTab("Entity Documents"))("EditMode", ctx_r2.GridEditMode());
293
+ i0.ɵɵconditional(ctx_r2.record.IsSaved ? 46 : -1);
211
294
  i0.ɵɵadvance();
212
295
  i0.ɵɵproperty("template", ctx_r2.record);
213
296
  i0.ɵɵtwoWayProperty("isVisible", ctx_r2.showParamDialog);
@@ -711,14 +794,14 @@ let TemplatesFormExtendedComponent = class TemplatesFormExtendedComponent extend
711
794
  } if (rf & 2) {
712
795
  let _t;
713
796
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.codeEditor = _t.first);
714
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], [1, "record-form-container"], [1, "record-form"], [3, "form"], [1, "template-header", 2, "background", "#f8f9fa", "border-bottom", "1px solid #dee2e6", "padding", "8px 20px"], [2, "display", "grid", "grid-template-columns", "1fr 2fr 1fr auto", "gap", "12px", "align-items", "start"], [1, "form-group", 2, "margin", "0"], [1, "form-label", 2, "font-weight", "500", "margin-bottom", "3px", "color", "#495057", "font-size", "0.85em"], [1, "fa-solid", "fa-file-text"], ["name", "templateName", "placeholder", "Enter template name...", 3, "ngModel"], [1, "form-control-plaintext", 2, "font-size", "1em", "font-weight", "500", "padding", "6px 0"], [1, "fa-solid", "fa-align-left"], ["name", "description", "placeholder", "Enter template description...", 3, "ngModel", "rows"], [1, "form-control-plaintext", 2, "padding", "8px 0", "color", "#6c757d"], [1, "fa-solid", "fa-folder"], ["name", "categoryId", "textField", "text", "valueField", "value", "placeholder", "Select or enter new category...", 3, "ngModel", "data", "valuePrimitive", "allowCustom"], [1, "form-control-plaintext", 2, "padding", "8px 0"], [2, "display", "flex", "flex-direction", "column", "align-items", "flex-end", "justify-content", "center"], [1, "badge", "badge-success", 2, "background", "#28a745", "color", "white", "padding", "6px 12px", "border-radius", "4px", "font-size", "0.85em"], [1, "badge", "badge-secondary", 2, "background", "#6c757d", "color", "white", "padding", "6px 12px", "border-radius", "4px", "font-size", "0.85em"], [3, "TabSelected", "ResizeContainer"], ["Name", "Contents"], [1, "fa-solid", "fa-file-lines"], [1, "badge", "badge-info", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "3px", "font-size", "0.7em", "margin-left", "6px"], [1, "template-contents-main", "content-margin"], [2, "height", "100%", "display", "block", 3, "contentChange", "runTemplate", "template", "config"], ["Name", "Details"], [1, "fa-solid", "fa-cogs"], [2, "padding", "20px"], ["FieldName", "UserPrompt", "Type", "textarea", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "UserID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ActiveAt", "Type", "datepicker", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "DisabledAt", "Type", "datepicker", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "IsActive", "Type", "checkbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "Category", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "User", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["Name", "Template Params", 3, "Visible"], [1, "fa-solid", "fa-sliders"], [3, "template", "editMode"], ["Name", "AI Prompts", 3, "Visible"], [1, "fa-solid", "fa-robot"], [3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], ["Name", "Entity Documents", 3, "Visible"], [3, "isVisibleChange", "onClose", "template", "isVisible"], ["name", "templateName", "placeholder", "Enter template name...", 3, "ngModelChange", "ngModel"], ["name", "description", "placeholder", "Enter template description...", 3, "ngModelChange", "ngModel", "rows"], ["name", "categoryId", "textField", "text", "valueField", "value", "placeholder", "Select or enter new category...", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive", "allowCustom"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-pause-circle"]], template: function TemplatesFormExtendedComponent_Template(rf, ctx) { if (rf & 1) {
797
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "form"], [1, "template-main-area", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [1, "template-header", 2, "flex-shrink", "0", "padding", "20px", "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "gap", "20px"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-file-code", 2, "color", "#17a2b8", "font-size", "1.4em"], ["name", "templateName", "placeholder", "Enter template name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModel"], [2, "display", "flex", "gap", "16px", "margin-bottom", "12px", "flex-wrap", "wrap", "align-items", "center"], ["name", "description", "placeholder", "Enter template description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [2, "margin", "0 0 12px 0", "color", "#6c757d", "font-size", "0.9em", "line-height", "1.4"], [2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-file-lines", 2, "color", "#6c757d"], [2, "color", "#6c757d"], [2, "color", "#495057", "font-weight", "500"], [2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], ["kendoButton", "", "title", "Run Template", 3, "themeColor", "size"], [1, "configuration-sections", 2, "flex", "1", "background", "white", "border-top", "2px solid #e9ecef", "padding", "16px", "min-height", "0"], [2, "margin-bottom", "12px", 3, "expanded"], ["kendoExpansionPanelTitleDirective", ""], [2, "padding", "8px", "min-height", "400px"], [2, "height", "100%", "display", "block", 3, "contentChange", "runTemplate", "template", "config"], [2, "padding", "16px"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "20px"], ["FieldName", "UserPrompt", "Type", "textarea", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "UserID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "ActiveAt", "Type", "datepicker", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "DisabledAt", "Type", "datepicker", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "IsActive", "Type", "checkbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "Category", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], ["FieldName", "User", "Type", "textbox", 3, "record", "ShowLabel", "EditMode"], [3, "isVisibleChange", "onClose", "template", "isVisible"], ["name", "templateName", "placeholder", "Enter template name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "#495057", "font-weight", "600", "flex", "1"], [2, "background", "#28a745", "color", "white", "padding", "4px 10px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], [2, "background", "#6c757d", "color", "white", "padding", "4px 10px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-pause-circle"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "#495057", "font-size", "0.9em"], ["name", "categoryId", "textField", "text", "valueField", "value", "placeholder", "Select or enter new category...", 2, "width", "250px", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive", "allowCustom"], ["name", "isActive", 3, "ngModelChange", "ngModel"], ["name", "description", "placeholder", "Enter template description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-folder", 2, "color", "#6c757d"], ["kendoButton", "", "title", "Run Template", 3, "click", "themeColor", "size"], [1, "fa-solid", "fa-play"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [1, "fa-solid", "fa-cogs", 2, "color", "#6c757d"], [2, "padding", "16px 0"], [3, "template", "editMode"], [1, "fa-solid", "fa-sliders", 2, "color", "#6c757d"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "fa-solid", "fa-robot", 2, "color", "#6c757d"], [1, "fa-solid", "fa-file-text", 2, "color", "#6c757d"]], template: function TemplatesFormExtendedComponent_Template(rf, ctx) { if (rf & 1) {
715
798
  i0.ɵɵelementStart(0, "div", 1);
716
- i0.ɵɵtemplate(1, TemplatesFormExtendedComponent_Conditional_1_Template, 66, 50);
799
+ i0.ɵɵtemplate(1, TemplatesFormExtendedComponent_Conditional_1_Template, 48, 43);
717
800
  i0.ɵɵelementEnd();
718
801
  } if (rf & 2) {
719
802
  i0.ɵɵadvance();
720
803
  i0.ɵɵconditional(ctx.record ? 1 : -1);
721
- } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.TextAreaComponent, i2.TextBoxComponent, i3.ComboBoxComponent, i4.UserViewGridComponent, i5.MJFormField, i6.FormToolbarComponent, i7.MJTabStripComponent, i7.MJTabBodyComponent, i7.MJTabComponent, i8.TemplateParamDialogComponent, i9.TemplateParamsGridComponent, i10.TemplateEditorComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n} \n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: #9ca3af;\n}"] }); }
804
+ } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.ExpansionPanelComponent, i2.ExpansionPanelTitleDirective, i3.TextAreaComponent, i3.TextBoxComponent, i3.SwitchComponent, i4.ComboBoxComponent, i5.ButtonComponent, i6.MJFormField, i6.ExplorerEntityDataGridComponent, i7.FormToolbarComponent, i8.TemplateParamDialogComponent, i9.TemplateParamsGridComponent, i10.TemplateEditorComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n} \n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: #9ca3af;\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n.template-header[_ngcontent-%COMP%] {\n border-bottom: 2px solid #e9ecef;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n .configuration-sections kendo-expansionpanel {\n border: none !important;\n border-radius: 12px !important;\n margin-bottom: 12px !important;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important;\n background: white !important;\n overflow: hidden !important;\n}\n\n .configuration-sections .k-expander-header {\n background: white !important;\n border: none !important;\n padding: 16px 20px !important;\n border-radius: 12px !important;\n color: #2c3e50 !important;\n font-weight: 600 !important;\n font-size: 16px !important;\n transition: all 0.2s ease !important;\n}\n\n .configuration-sections .k-expander-header:hover {\n background: #f8f9fa !important;\n}\n\n\n\n .configuration-sections kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header {\n background: #17a2b8 !important;\n color: white !important;\n border-radius: 12px 12px 0 0 !important;\n}\n\n\n\n .configuration-sections .k-expander-content {\n padding: 0 !important;\n border: none !important;\n background: white !important;\n border-radius: 0 0 12px 12px !important;\n}\n\n\n\n .configuration-sections .k-expander-header .fa-solid {\n transition: transform 0.2s ease !important;\n}\n\n\n\n.template-header[_ngcontent-%COMP%], \n.badge[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}"] }); }
722
805
  };
723
806
  TemplatesFormExtendedComponent = __decorate([
724
807
  RegisterClass(BaseFormComponent, 'Templates')
@@ -726,7 +809,7 @@ TemplatesFormExtendedComponent = __decorate([
726
809
  export { TemplatesFormExtendedComponent };
727
810
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplatesFormExtendedComponent, [{
728
811
  type: Component,
729
- args: [{ selector: 'mj-templates-form', template: "<div class=\"record-form-container\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" >\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Top Section - Key Fields -->\n <div class=\"template-header\" style=\"background: #f8f9fa; border-bottom: 1px solid #dee2e6; padding: 8px 20px;\">\n <div style=\"display: grid; grid-template-columns: 1fr 2fr 1fr auto; gap: 12px; align-items: start;\">\n \n <!-- Name -->\n <div class=\"form-group\" style=\"margin: 0;\">\n <label class=\"form-label\" style=\"font-weight: 500; margin-bottom: 3px; color: #495057; font-size: 0.85em;\">\n <i class=\"fa-solid fa-file-text\"></i> Template Name\n </label>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\" name=\"templateName\" placeholder=\"Enter template name...\"></kendo-textbox>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 1em; font-weight: 500; padding: 6px 0;\">\n {{ record.Name || 'Unnamed Template' }}\n </div>\n }\n </div>\n\n <!-- Description -->\n <div class=\"form-group\" style=\"margin: 0;\">\n <label class=\"form-label\" style=\"font-weight: 500; margin-bottom: 3px; color: #495057; font-size: 0.85em;\">\n <i class=\"fa-solid fa-align-left\"></i> Description\n </label>\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\" \n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter template description...\"></kendo-textarea>\n } @else {\n <div class=\"form-control-plaintext\" style=\"padding: 8px 0; color: #6c757d;\">\n {{ record.Description || 'No description provided' }}\n </div>\n }\n </div>\n\n <!-- Category -->\n <div class=\"form-group\" style=\"margin: 0;\">\n <label class=\"form-label\" style=\"font-weight: 500; margin-bottom: 3px; color: #495057; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder\"></i> Category\n </label>\n @if (EditMode) {\n <kendo-combobox [(ngModel)]=\"record.CategoryID\" \n name=\"categoryId\"\n [data]=\"categoryOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [allowCustom]=\"true\"\n (valueChange)=\"onCategoryChange($event)\"\n placeholder=\"Select or enter new category...\">\n </kendo-combobox>\n } @else {\n <div class=\"form-control-plaintext\" style=\"padding: 8px 0;\">\n {{ record.Category || 'Uncategorized' }}\n </div>\n }\n </div>\n\n <!-- Template Status -->\n <div style=\"display: flex; flex-direction: column; align-items: flex-end; justify-content: center;\">\n @if (record.IsActive) {\n <span class=\"badge badge-success\" style=\"background: #28a745; color: white; padding: 6px 12px; border-radius: 4px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"badge badge-secondary\" style=\"background: #6c757d; color: white; padding: 6px 12px; border-radius: 4px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n </div>\n </div>\n </div>\n\n <mj-tabstrip (TabSelected)=\"onTabSelect($event)\" (ResizeContainer)=\"InvokeManualResize()\">\n \n <!-- Contents Tab - Main Focus -->\n <mj-tab Name=\"Contents\">\n <i class=\"fa-solid fa-file-lines\"></i> Contents \n <span class=\"badge badge-info\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 3px; font-size: 0.7em; margin-left: 6px;\">\n {{ templateContents.length }}\n </span>\n </mj-tab>\n <mj-tab-body>\n <div class=\"template-contents-main content-margin\">\n <!-- Shared Template Editor -->\n <mj-template-editor \n [template]=\"record\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onSharedTemplateContentChange($event)\"\n (runTemplate)=\"onSharedTemplateRun($event)\"\n style=\"height: 100%; display: block;\">\n </mj-template-editor>\n </div>\n </mj-tab-body>\n\n <!-- Details Tab - Extra Fields -->\n <mj-tab Name=\"Details\">\n <i class=\"fa-solid fa-cogs\"></i> Details\n </mj-tab>\n <mj-tab-body>\n <div style=\"padding: 20px;\">\n <div class=\"record-form\">\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserPrompt\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ActiveAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"DisabledAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsActive\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Category\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"User\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n </div>\n </mj-tab-body>\n\n <!-- Template Params Tab -->\n <mj-tab Name=\"Template Params\" [Visible]=\"record.IsSaved\"> \n <i class=\"fa-solid fa-sliders\"></i> Parameters\n </mj-tab>\n <mj-tab-body>\n <mj-template-params-grid \n [template]=\"record\"\n [editMode]=\"EditMode\">\n </mj-template-params-grid> \n </mj-tab-body>\n\n <!-- AI Prompts Tab -->\n <mj-tab Name=\"AI Prompts\" [Visible]=\"record.IsSaved\"> \n <i class=\"fa-solid fa-robot\"></i> AI Prompts\n </mj-tab>\n <mj-tab-body>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Prompts','TemplateID')\" \n [NewRecordValues]=\"NewRecordValues('AI Prompts')\"\n [AllowLoad]=\"IsCurrentTab('AI Prompts')\" \n [EditMode]=\"GridEditMode()\" \n >\n </mj-user-view-grid> \n </mj-tab-body>\n\n <!-- Entity Documents Tab -->\n <mj-tab Name=\"Entity Documents\" [Visible]=\"record.IsSaved\"> \n <i class=\"fa-solid fa-file-text\"></i> Documents\n </mj-tab>\n <mj-tab-body>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('Entity Documents','TemplateID')\" \n [NewRecordValues]=\"NewRecordValues('Entity Documents')\"\n [AllowLoad]=\"IsCurrentTab('Entity Documents')\" \n [EditMode]=\"GridEditMode()\" \n >\n </mj-user-view-grid> \n </mj-tab-body>\n </mj-tabstrip>\n </form>\n\n <!-- Template Parameter Dialog -->\n <mj-template-param-dialog \n [template]=\"record\"\n [(isVisible)]=\"showParamDialog\"\n (onClose)=\"onParamDialogClose()\">\n </mj-template-param-dialog>\n }\n</div>", styles: [".k-pane {\n background-color: #F5F6FA;\n}\n\n.content-margin {\n margin: 10px;\n} \n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \n} */\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: #9ca3af;\n}\n"] }]
812
+ args: [{ selector: 'mj-templates-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Main Content Area -->\n <div class=\"template-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n\n <!-- Header Section -->\n <div class=\"template-header\" style=\"flex-shrink: 0; padding: 20px; background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n\n <!-- Left: Template Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-file-code\" style=\"color: #17a2b8; font-size: 1.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\"\n name=\"templateName\"\n placeholder=\"Enter template name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: #495057; font-weight: 600; flex: 1;\">{{ record.Name || 'Unnamed Template' }}</h4>\n @if (record.IsActive) {\n <span style=\"background: #28a745; color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span style=\"background: #6c757d; color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n }\n </div>\n\n <!-- Category and Active toggle when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap; align-items: center;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">Category</label>\n <kendo-combobox [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [data]=\"categoryOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [allowCustom]=\"true\"\n (valueChange)=\"onCategoryChange($event)\"\n placeholder=\"Select or enter new category...\"\n style=\"width: 250px;\">\n </kendo-combobox>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: #495057; font-size: 0.9em;\">Active</label>\n <kendo-switch [(ngModel)]=\"record.IsActive\" name=\"isActive\"></kendo-switch>\n </div>\n </div>\n }\n\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\"\n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter template description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </kendo-textarea>\n } @else if (record.Description) {\n <p style=\"margin: 0 0 12px 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n\n <!-- Quick Info Row -->\n <div style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.Category) {\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Category:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ record.Category }}</span>\n </div>\n }\n\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-file-lines\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Contents:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ templateContents.length }}</span>\n </div>\n </div>\n </div>\n\n <!-- Right: Action Buttons -->\n <div style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n @if (record.IsSaved) {\n <button kendoButton [themeColor]=\"'primary'\" [size]=\"'large'\"\n (click)=\"runTemplate()\"\n title=\"Run Template\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: white; border-top: 2px solid #e9ecef; padding: 16px; min-height: 0;\">\n\n <!-- Template Editor Section -->\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: #6c757d;\"></i>\n Template Editor\n @if (templateContents.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ templateContents.length }}\n </span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 8px; min-height: 400px;\">\n <mj-template-editor\n [template]=\"record\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onSharedTemplateContentChange($event)\"\n (runTemplate)=\"onSharedTemplateRun($event)\"\n style=\"height: 100%; display: block;\">\n </mj-template-editor>\n </div>\n </kendo-expansionpanel>\n\n <!-- Details Section -->\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: #6c757d;\"></i>\n Details\n </span>\n </ng-template>\n\n <div style=\"padding: 16px;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserPrompt\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ActiveAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"DisabledAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n\n <!-- Right Column -->\n <div>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsActive\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Category\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"User\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Template Parameters Section -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: #6c757d;\"></i>\n Parameters\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-template-params-grid\n [template]=\"record\"\n [editMode]=\"EditMode\">\n </mj-template-params-grid>\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- AI Prompts Section -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-robot\" style=\"color: #6c757d;\"></i>\n AI Prompts\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Prompts','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('AI Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Entity Documents Section -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-file-text\" style=\"color: #6c757d;\"></i>\n Entity Documents\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('Entity Documents','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('Entity Documents')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\n\n <!-- Template Parameter Dialog -->\n <mj-template-param-dialog\n [template]=\"record\"\n [(isVisible)]=\"showParamDialog\"\n (onClose)=\"onParamDialogClose()\">\n </mj-template-param-dialog>\n }\n</div>\n", styles: [".k-pane {\n background-color: #F5F6FA;\n}\n\n.content-margin {\n margin: 10px;\n} \n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \n} */\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: #9ca3af;\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n.template-header {\n border-bottom: 2px solid #e9ecef;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Expansion Panel Styling */\n::ng-deep .configuration-sections kendo-expansionpanel {\n border: none !important;\n border-radius: 12px !important;\n margin-bottom: 12px !important;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important;\n background: white !important;\n overflow: hidden !important;\n}\n\n::ng-deep .configuration-sections .k-expander-header {\n background: white !important;\n border: none !important;\n padding: 16px 20px !important;\n border-radius: 12px !important;\n color: #2c3e50 !important;\n font-weight: 600 !important;\n font-size: 16px !important;\n transition: all 0.2s ease !important;\n}\n\n::ng-deep .configuration-sections .k-expander-header:hover {\n background: #f8f9fa !important;\n}\n\n/* Expanded state header */\n::ng-deep .configuration-sections kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header {\n background: #17a2b8 !important;\n color: white !important;\n border-radius: 12px 12px 0 0 !important;\n}\n\n/* Content area */\n::ng-deep .configuration-sections .k-expander-content {\n padding: 0 !important;\n border: none !important;\n background: white !important;\n border-radius: 0 0 12px 12px !important;\n}\n\n/* Icon in header */\n::ng-deep .configuration-sections .k-expander-header .fa-solid {\n transition: transform 0.2s ease !important;\n}\n\n/* Smooth transitions */\n.template-header,\n.badge {\n transition: all 0.2s ease;\n}\n"] }]
730
813
  }], null, { codeEditor: [{
731
814
  type: ViewChild,
732
815
  args: ['codeEditor']