@memberjunction/ng-core-entity-forms 6.2.1 → 6.3.0-edge.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 (204) hide show
  1. package/README.md +5 -6
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
  6. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
  8. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -0
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +862 -812
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  15. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
  16. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
  17. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
  18. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
  19. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
  20. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
  21. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -0
  22. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  23. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +821 -763
  24. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  25. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
  26. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
  27. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
  29. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  30. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
  31. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  32. package/dist/lib/custom/Actions/action-execution-log-form.component.js +223 -175
  33. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  34. package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
  35. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  36. package/dist/lib/custom/Actions/action-form.component.js +502 -453
  37. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  38. package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
  39. package/dist/lib/custom/Companies/company-header.panel.js +3 -3
  40. package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
  41. package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
  42. package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
  43. package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
  44. package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
  45. package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
  46. package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
  47. package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
  48. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  49. package/dist/lib/custom/Entities/entity-form.component.js +836 -801
  50. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  51. package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
  52. package/dist/lib/custom/Files/file-form.component.js +2 -2
  53. package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
  54. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  55. package/dist/lib/custom/Lists/list-form.component.js +355 -338
  56. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  57. package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
  58. package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
  59. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
  60. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
  61. package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
  62. package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
  63. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
  64. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
  65. package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
  66. package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
  67. package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
  68. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  69. package/dist/lib/custom/Queries/query-form.component.js +493 -444
  70. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  71. package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
  72. package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
  73. package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
  74. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  75. package/dist/lib/custom/Templates/templates-form.component.js +118 -74
  76. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  77. package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
  78. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  79. package/dist/lib/custom/Tests/test-form.component.js +471 -451
  80. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  81. package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
  82. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  83. package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
  84. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  85. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
  86. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  87. package/dist/lib/custom/Tests/test-suite-form.component.js +697 -677
  88. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +5 -0
  90. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  91. package/dist/lib/custom/Tests/test-suite-run-form.component.js +453 -433
  92. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  93. package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
  94. package/dist/lib/custom/Users/user-header.panel.js +3 -3
  95. package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
  96. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
  97. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
  98. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
  99. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
  100. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
  101. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  102. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +276 -216
  103. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  104. package/dist/lib/custom/custom-forms.module.d.ts +1 -1
  105. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  106. package/dist/lib/custom/custom-forms.module.js +7 -1
  107. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  108. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  109. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +32 -14
  110. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  111. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  112. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
  113. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
  115. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
  116. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
  117. package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
  118. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
  119. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
  120. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
  121. package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
  122. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
  123. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
  125. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
  126. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
  127. package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
  128. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
  129. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
  130. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
  131. package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
  132. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  133. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
  134. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  135. package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
  136. package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
  137. package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
  139. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
  140. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
  142. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
  143. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
  144. package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
  145. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
  146. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
  147. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
  149. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
  150. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
  151. package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js.map +1 -0
  152. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +69 -15
  154. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
  156. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +31 -13
  157. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
  159. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
  160. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
  161. package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
  162. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
  163. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
  164. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
  165. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
  166. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
  167. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
  168. package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
  169. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
  170. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
  171. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
  173. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
  174. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
  175. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
  176. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
  177. package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
  178. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
  179. package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  181. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +44 -36
  182. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  183. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
  184. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
  185. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
  186. package/dist/lib/generated/generated-forms.module.d.ts +452 -443
  187. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  188. package/dist/lib/generated/generated-forms.module.js +27 -0
  189. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  190. package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
  191. package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
  192. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -1
  193. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
  194. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
  195. package/dist/lib/shared/components/template-editor.component.js +2 -2
  196. package/dist/lib/shared/phone-hero.d.ts +17 -0
  197. package/dist/lib/shared/phone-hero.d.ts.map +1 -0
  198. package/dist/lib/shared/phone-hero.js +30 -0
  199. package/dist/lib/shared/phone-hero.js.map +1 -0
  200. package/dist/lib/shared/phone-sections-state.d.ts +28 -0
  201. package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
  202. package/dist/lib/shared/phone-sections-state.js +38 -0
  203. package/dist/lib/shared/phone-sections-state.js.map +1 -0
  204. package/package.json +50 -50
@@ -12,6 +12,8 @@ import { RunView, CompositeKey } from '@memberjunction/core';
12
12
  import { MJActionFormComponent } from '../../generated/Entities/MJAction/mjaction.form.component';
13
13
  import { MJDialogService } from '@memberjunction/ng-ui-components';
14
14
  import { ActionParamDialogComponent, ActionResultCodeDialogComponent } from '@memberjunction/ng-actions';
15
+ import { JoinHeroSummary, CountLabel } from '../../shared/phone-hero';
16
+ import { PhoneSectionsState } from '../../shared/phone-sections-state';
15
17
  import * as i0 from "@angular/core";
16
18
  import * as i1 from "@angular/forms";
17
19
  import * as i2 from "@memberjunction/ng-ui-components";
@@ -34,7 +36,7 @@ const _forTrack1 = ($index, $item) => $item.id;
34
36
  const _forTrack2 = ($index, $item) => $item.name;
35
37
  function MJActionFormComponentExtended_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
36
38
  const _r3 = i0.ɵɵgetCurrentView();
37
- i0.ɵɵelementStart(0, "input", 34);
39
+ i0.ɵɵelementStart(0, "input", 41);
38
40
  i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
39
41
  i0.ɵɵelementEnd();
40
42
  } if (rf & 2) {
@@ -42,8 +44,8 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_9_Template(rf,
42
44
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
43
45
  } }
44
46
  function MJActionFormComponentExtended_Conditional_0_Conditional_10_Conditional_4_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "span", 37);
46
- i0.ɵɵelement(1, "i", 38);
47
+ i0.ɵɵelementStart(0, "span", 44);
48
+ i0.ɵɵelement(1, "i", 45);
47
49
  i0.ɵɵtext(2);
48
50
  i0.ɵɵelementEnd();
49
51
  } if (rf & 2) {
@@ -56,13 +58,13 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_10_Conditional_
56
58
  i0.ɵɵtextInterpolate1(" ", ctx_r1.record.CodeApprovalStatus, " ");
57
59
  } }
58
60
  function MJActionFormComponentExtended_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "h4", 35);
61
+ i0.ɵɵelementStart(0, "h4", 42);
60
62
  i0.ɵɵtext(1);
61
63
  i0.ɵɵelementEnd();
62
- i0.ɵɵelementStart(2, "span", 36);
64
+ i0.ɵɵelementStart(2, "span", 43);
63
65
  i0.ɵɵtext(3);
64
66
  i0.ɵɵelementEnd();
65
- i0.ɵɵconditionalCreate(4, MJActionFormComponentExtended_Conditional_0_Conditional_10_Conditional_4_Template, 3, 5, "span", 37);
67
+ i0.ɵɵconditionalCreate(4, MJActionFormComponentExtended_Conditional_0_Conditional_10_Conditional_4_Template, 3, 5, "span", 44);
66
68
  } if (rf & 2) {
67
69
  const ctx_r1 = i0.ɵɵnextContext(2);
68
70
  i0.ɵɵadvance();
@@ -76,11 +78,11 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_10_Template(rf,
76
78
  } }
77
79
  function MJActionFormComponentExtended_Conditional_0_Conditional_11_Conditional_17_Template(rf, ctx) { if (rf & 1) {
78
80
  const _r5 = i0.ɵɵgetCurrentView();
79
- i0.ɵɵelementStart(0, "div")(1, "label", 39);
80
- i0.ɵɵelement(2, "i", 38);
81
+ i0.ɵɵelementStart(0, "div")(1, "label", 46);
82
+ i0.ɵɵelement(2, "i", 45);
81
83
  i0.ɵɵtext(3, " Code Approval ");
82
84
  i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(4, "mj-dropdown", 44);
85
+ i0.ɵɵelementStart(4, "mj-dropdown", 51);
84
86
  i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_11_Conditional_17_Template_mj_dropdown_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CodeApprovalStatus, $event) || (ctx_r1.record.CodeApprovalStatus = $event); return i0.ɵɵresetView($event); });
85
87
  i0.ɵɵelementEnd()();
86
88
  } if (rf & 2) {
@@ -94,26 +96,26 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_11_Conditional_
94
96
  } }
95
97
  function MJActionFormComponentExtended_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
96
98
  const _r4 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "div", 12)(1, "div")(2, "label", 39);
99
+ i0.ɵɵelementStart(0, "div", 12)(1, "div")(2, "label", 46);
98
100
  i0.ɵɵtext(3, "Status");
99
101
  i0.ɵɵelementEnd();
100
- i0.ɵɵelementStart(4, "mj-dropdown", 40);
102
+ i0.ɵɵelementStart(4, "mj-dropdown", 47);
101
103
  i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_11_Template_mj_dropdown_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
102
104
  i0.ɵɵelementEnd()();
103
- i0.ɵɵelementStart(5, "div")(6, "label", 39);
105
+ i0.ɵɵelementStart(5, "div")(6, "label", 46);
104
106
  i0.ɵɵtext(7, " Type ");
105
- i0.ɵɵelementStart(8, "span", 41);
107
+ i0.ɵɵelementStart(8, "span", 48);
106
108
  i0.ɵɵtext(9, "*");
107
109
  i0.ɵɵelementEnd()();
108
- i0.ɵɵelementStart(10, "mj-dropdown", 42);
110
+ i0.ɵɵelementStart(10, "mj-dropdown", 49);
109
111
  i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_11_Template_mj_dropdown_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Type, $event) || (ctx_r1.record.Type = $event); return i0.ɵɵresetView($event); });
110
112
  i0.ɵɵelementEnd()();
111
- i0.ɵɵelementStart(11, "div")(12, "label", 39);
113
+ i0.ɵɵelementStart(11, "div")(12, "label", 46);
112
114
  i0.ɵɵtext(13, " Category ");
113
- i0.ɵɵelementStart(14, "span", 41);
115
+ i0.ɵɵelementStart(14, "span", 48);
114
116
  i0.ɵɵtext(15, "*");
115
117
  i0.ɵɵelementEnd()();
116
- i0.ɵɵelementStart(16, "mj-dropdown", 43);
118
+ i0.ɵɵelementStart(16, "mj-dropdown", 50);
117
119
  i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_11_Template_mj_dropdown_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CategoryID, $event) || (ctx_r1.record.CategoryID = $event); return i0.ɵɵresetView($event); });
118
120
  i0.ɵɵelementEnd()();
119
121
  i0.ɵɵconditionalCreate(17, MJActionFormComponentExtended_Conditional_0_Conditional_11_Conditional_17_Template, 5, 14, "div");
@@ -134,7 +136,7 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_11_Template(rf,
134
136
  } }
135
137
  function MJActionFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
136
138
  const _r6 = i0.ɵɵgetCurrentView();
137
- i0.ɵɵelementStart(0, "textarea", 45);
139
+ i0.ɵɵelementStart(0, "textarea", 52);
138
140
  i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_12_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Description, $event) || (ctx_r1.record.Description = $event); return i0.ɵɵresetView($event); });
139
141
  i0.ɵɵtext(1, " ");
140
142
  i0.ɵɵelementEnd();
@@ -155,14 +157,14 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_13_Template(rf,
155
157
  function MJActionFormComponentExtended_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
156
158
  const _r7 = i0.ɵɵgetCurrentView();
157
159
  i0.ɵɵelementStart(0, "div", 16);
158
- i0.ɵɵelement(1, "i", 46);
160
+ i0.ɵɵelement(1, "i", 53);
159
161
  i0.ɵɵelementStart(2, "span", 18);
160
162
  i0.ɵɵtext(3, "Category:");
161
163
  i0.ɵɵelementEnd();
162
- i0.ɵɵelementStart(4, "span", 47);
164
+ i0.ɵɵelementStart(4, "span", 54);
163
165
  i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_15_Template_span_click_4_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.navigateToCategory()); });
164
166
  i0.ɵɵtext(5);
165
- i0.ɵɵelement(6, "i", 48);
167
+ i0.ɵɵelement(6, "i", 55);
166
168
  i0.ɵɵelementEnd()();
167
169
  } if (rf & 2) {
168
170
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -175,7 +177,7 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_22_Template(rf,
175
177
  i0.ɵɵelementStart(2, "span", 18);
176
178
  i0.ɵɵtext(3, "Code:");
177
179
  i0.ɵɵelementEnd();
178
- i0.ɵɵelementStart(4, "span", 49);
180
+ i0.ɵɵelementStart(4, "span", 56);
179
181
  i0.ɵɵtext(5);
180
182
  i0.ɵɵelementEnd()();
181
183
  } if (rf & 2) {
@@ -190,7 +192,7 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_22_Template(rf,
190
192
  } }
191
193
  function MJActionFormComponentExtended_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
192
194
  i0.ɵɵelementStart(0, "div", 16);
193
- i0.ɵɵelement(1, "i", 50);
195
+ i0.ɵɵelement(1, "i", 57);
194
196
  i0.ɵɵelementStart(2, "span", 19);
195
197
  i0.ɵɵtext(3);
196
198
  i0.ɵɵelementEnd()();
@@ -201,9 +203,9 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_23_Template(rf,
201
203
  } }
202
204
  function MJActionFormComponentExtended_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
203
205
  const _r8 = i0.ɵɵgetCurrentView();
204
- i0.ɵɵelementStart(0, "button", 51);
206
+ i0.ɵɵelementStart(0, "button", 58);
205
207
  i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
206
- i0.ɵɵelement(1, "i", 52);
208
+ i0.ɵɵelement(1, "i", 59);
207
209
  i0.ɵɵtext(2, " Run ");
208
210
  i0.ɵɵelementEnd();
209
211
  } if (rf & 2) {
@@ -212,9 +214,9 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_26_Template(rf,
212
214
  } }
213
215
  function MJActionFormComponentExtended_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
214
216
  const _r9 = i0.ɵɵgetCurrentView();
215
- i0.ɵɵelementStart(0, "button", 53);
217
+ i0.ɵɵelementStart(0, "button", 60);
216
218
  i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_27_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.regenerateCode()); });
217
- i0.ɵɵelement(1, "i", 54);
219
+ i0.ɵɵelement(1, "i", 61);
218
220
  i0.ɵɵtext(2, " Regenerate ");
219
221
  i0.ɵɵelementEnd();
220
222
  } }
@@ -223,8 +225,23 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_28_Template(rf,
223
225
  i0.ɵɵtext(1, " Action must be Active to execute ");
224
226
  i0.ɵɵelementEnd();
225
227
  } }
226
- function MJActionFormComponentExtended_Conditional_0_ng_template_31_Conditional_3_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "span", 56);
228
+ function MJActionFormComponentExtended_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
229
+ const _r10 = i0.ɵɵgetCurrentView();
230
+ i0.ɵɵelementStart(0, "button", 62);
231
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_29_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleHeroDetails()); });
232
+ i0.ɵɵelementStart(1, "span", 63);
233
+ i0.ɵɵtext(2);
234
+ i0.ɵɵelementEnd();
235
+ i0.ɵɵelement(3, "i", 64);
236
+ i0.ɵɵelementEnd();
237
+ } if (rf & 2) {
238
+ const ctx_r1 = i0.ɵɵnextContext(2);
239
+ i0.ɵɵattribute("aria-expanded", ctx_r1.HeroDetailsOpen);
240
+ i0.ɵɵadvance(2);
241
+ i0.ɵɵtextInterpolate(ctx_r1.HeroSummary);
242
+ } }
243
+ function MJActionFormComponentExtended_Conditional_0_ng_template_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
244
+ i0.ɵɵelementStart(0, "span", 66);
228
245
  i0.ɵɵtext(1);
229
246
  i0.ɵɵelementEnd();
230
247
  } if (rf & 2) {
@@ -232,235 +249,235 @@ function MJActionFormComponentExtended_Conditional_0_ng_template_31_Conditional_
232
249
  i0.ɵɵadvance();
233
250
  i0.ɵɵtextInterpolate1(" ", ctx_r1.actionParams.length, " ");
234
251
  } }
235
- function MJActionFormComponentExtended_Conditional_0_ng_template_31_Template(rf, ctx) { if (rf & 1) {
236
- i0.ɵɵelementStart(0, "span", 55);
237
- i0.ɵɵelement(1, "i", 50);
252
+ function MJActionFormComponentExtended_Conditional_0_ng_template_33_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "span", 65);
254
+ i0.ɵɵelement(1, "i", 57);
238
255
  i0.ɵɵtext(2, " Parameters ");
239
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_ng_template_31_Conditional_3_Template, 2, 1, "span", 56);
256
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_ng_template_33_Conditional_3_Template, 2, 1, "span", 66);
240
257
  i0.ɵɵelementEnd();
241
258
  } if (rf & 2) {
242
259
  const ctx_r1 = i0.ɵɵnextContext(2);
243
260
  i0.ɵɵadvance(3);
244
261
  i0.ɵɵconditional(ctx_r1.actionParams.length > 0 ? 3 : -1);
245
262
  } }
246
- function MJActionFormComponentExtended_Conditional_0_Conditional_33_Template(rf, ctx) { if (rf & 1) {
247
- i0.ɵɵelementStart(0, "div", 29);
248
- i0.ɵɵelement(1, "i", 57);
263
+ function MJActionFormComponentExtended_Conditional_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
264
+ i0.ɵɵelementStart(0, "div", 31);
265
+ i0.ɵɵelement(1, "i", 67);
249
266
  i0.ɵɵtext(2, " Loading parameters... ");
250
267
  i0.ɵɵelementEnd();
251
268
  } }
252
- function MJActionFormComponentExtended_Conditional_0_Conditional_34_Template(rf, ctx) { if (rf & 1) {
253
- i0.ɵɵelement(0, "mj-empty-state", 30);
269
+ function MJActionFormComponentExtended_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
270
+ i0.ɵɵelement(0, "mj-empty-state", 32);
254
271
  } if (rf & 2) {
255
272
  const ctx_r1 = i0.ɵɵnextContext(2);
256
273
  i0.ɵɵproperty("Message", ctx_r1.EditMode && ctx_r1.record.IsSaved ? "Add parameters to define inputs and outputs for this action" : "");
257
274
  } }
258
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_5_Template(rf, ctx) { if (rf & 1) {
259
- const _r10 = i0.ɵɵgetCurrentView();
260
- i0.ɵɵelementStart(0, "button", 67);
261
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter("Input")); });
262
- i0.ɵɵelement(1, "i", 68);
275
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_5_Template(rf, ctx) { if (rf & 1) {
276
+ const _r11 = i0.ɵɵgetCurrentView();
277
+ i0.ɵɵelementStart(0, "button", 77);
278
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter("Input")); });
279
+ i0.ɵɵelement(1, "i", 78);
263
280
  i0.ɵɵtext(2, " Add Input ");
264
281
  i0.ɵɵelementEnd();
265
282
  } }
266
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_6_Template(rf, ctx) { if (rf & 1) {
267
- i0.ɵɵelement(0, "mj-empty-state", 62);
283
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_6_Template(rf, ctx) { if (rf & 1) {
284
+ i0.ɵɵelement(0, "mj-empty-state", 72);
268
285
  } }
269
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "span", 74);
286
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
287
+ i0.ɵɵelementStart(0, "span", 84);
271
288
  i0.ɵɵtext(1, "Required");
272
289
  i0.ɵɵelementEnd();
273
290
  } }
274
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
275
- i0.ɵɵelementStart(0, "span", 75);
291
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "span", 85);
276
293
  i0.ɵɵtext(1, "Array");
277
294
  i0.ɵɵelementEnd();
278
295
  } }
279
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
280
- const _r13 = i0.ɵɵgetCurrentView();
281
- i0.ɵɵelementStart(0, "button", 80);
282
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const param_r12 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.editParameter(param_r12)); });
283
- i0.ɵɵelement(1, "i", 81);
296
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
297
+ const _r14 = i0.ɵɵgetCurrentView();
298
+ i0.ɵɵelementStart(0, "button", 90);
299
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const param_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.editParameter(param_r13)); });
300
+ i0.ɵɵelement(1, "i", 91);
284
301
  i0.ɵɵelementEnd();
285
- i0.ɵɵelementStart(2, "button", 82);
286
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_7_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r13); const param_r12 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.deleteParameter(param_r12)); });
287
- i0.ɵɵelement(3, "i", 83);
302
+ i0.ɵɵelementStart(2, "button", 92);
303
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_7_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r14); const param_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.deleteParameter(param_r13)); });
304
+ i0.ɵɵelement(3, "i", 93);
288
305
  i0.ɵɵelementEnd();
289
306
  } }
290
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
291
- i0.ɵɵelementStart(0, "div", 78);
307
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
308
+ i0.ɵɵelementStart(0, "div", 88);
292
309
  i0.ɵɵtext(1);
293
310
  i0.ɵɵelementEnd();
294
311
  } if (rf & 2) {
295
- const param_r12 = i0.ɵɵnextContext().$implicit;
312
+ const param_r13 = i0.ɵɵnextContext().$implicit;
296
313
  i0.ɵɵadvance();
297
- i0.ɵɵtextInterpolate(param_r12.Description);
314
+ i0.ɵɵtextInterpolate(param_r13.Description);
298
315
  } }
299
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
300
- i0.ɵɵelementStart(0, "div", 79)(1, "span", 84);
316
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
317
+ i0.ɵɵelementStart(0, "div", 89)(1, "span", 94);
301
318
  i0.ɵɵtext(2, "Default:");
302
319
  i0.ɵɵelementEnd();
303
320
  i0.ɵɵelementStart(3, "code");
304
321
  i0.ɵɵtext(4);
305
322
  i0.ɵɵelementEnd()();
306
323
  } if (rf & 2) {
307
- const param_r12 = i0.ɵɵnextContext().$implicit;
324
+ const param_r13 = i0.ɵɵnextContext().$implicit;
308
325
  i0.ɵɵadvance(4);
309
- i0.ɵɵtextInterpolate(param_r12.DefaultValue);
326
+ i0.ɵɵtextInterpolate(param_r13.DefaultValue);
310
327
  } }
311
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
312
- const _r11 = i0.ɵɵgetCurrentView();
313
- i0.ɵɵelementStart(0, "div", 70);
314
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Template_div_click_0_listener($event) { const param_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParamClick(param_r12, $event)); });
315
- i0.ɵɵelementStart(1, "div", 71)(2, "span", 72);
328
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
329
+ const _r12 = i0.ɵɵgetCurrentView();
330
+ i0.ɵɵelementStart(0, "div", 80);
331
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Template_div_click_0_listener($event) { const param_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParamClick(param_r13, $event)); });
332
+ i0.ɵɵelementStart(1, "div", 81)(2, "span", 82);
316
333
  i0.ɵɵtext(3);
317
334
  i0.ɵɵelementEnd();
318
- i0.ɵɵelementStart(4, "div", 73);
319
- i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_5_Template, 2, 0, "span", 74);
320
- i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_6_Template, 2, 0, "span", 75);
321
- i0.ɵɵconditionalCreate(7, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_7_Template, 4, 0);
335
+ i0.ɵɵelementStart(4, "div", 83);
336
+ i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_5_Template, 2, 0, "span", 84);
337
+ i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_6_Template, 2, 0, "span", 85);
338
+ i0.ɵɵconditionalCreate(7, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_7_Template, 4, 0);
322
339
  i0.ɵɵelementEnd()();
323
- i0.ɵɵelementStart(8, "div", 76)(9, "div", 77);
340
+ i0.ɵɵelementStart(8, "div", 86)(9, "div", 87);
324
341
  i0.ɵɵtext(10);
325
342
  i0.ɵɵelementEnd();
326
- i0.ɵɵconditionalCreate(11, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_11_Template, 2, 1, "div", 78);
327
- i0.ɵɵconditionalCreate(12, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Conditional_12_Template, 5, 1, "div", 79);
343
+ i0.ɵɵconditionalCreate(11, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_11_Template, 2, 1, "div", 88);
344
+ i0.ɵɵconditionalCreate(12, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Conditional_12_Template, 5, 1, "div", 89);
328
345
  i0.ɵɵelementEnd()();
329
346
  } if (rf & 2) {
330
- const param_r12 = ctx.$implicit;
347
+ const param_r13 = ctx.$implicit;
331
348
  const ctx_r1 = i0.ɵɵnextContext(4);
332
- i0.ɵɵclassProp("required", param_r12.IsRequired)("clickable", true);
349
+ i0.ɵɵclassProp("required", param_r13.IsRequired)("clickable", true);
333
350
  i0.ɵɵadvance(3);
334
- i0.ɵɵtextInterpolate(param_r12.Name);
351
+ i0.ɵɵtextInterpolate(param_r13.Name);
335
352
  i0.ɵɵadvance(2);
336
- i0.ɵɵconditional(param_r12.IsRequired ? 5 : -1);
353
+ i0.ɵɵconditional(param_r13.IsRequired ? 5 : -1);
337
354
  i0.ɵɵadvance();
338
- i0.ɵɵconditional(param_r12.IsArray ? 6 : -1);
355
+ i0.ɵɵconditional(param_r13.IsArray ? 6 : -1);
339
356
  i0.ɵɵadvance();
340
357
  i0.ɵɵconditional(ctx_r1.EditMode ? 7 : -1);
341
358
  i0.ɵɵadvance(3);
342
- i0.ɵɵtextInterpolate(param_r12.ValueType);
359
+ i0.ɵɵtextInterpolate(param_r13.ValueType);
343
360
  i0.ɵɵadvance();
344
- i0.ɵɵconditional(param_r12.Description ? 11 : -1);
361
+ i0.ɵɵconditional(param_r13.Description ? 11 : -1);
345
362
  i0.ɵɵadvance();
346
- i0.ɵɵconditional(param_r12.DefaultValue ? 12 : -1);
363
+ i0.ɵɵconditional(param_r13.DefaultValue ? 12 : -1);
347
364
  } }
348
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_Template(rf, ctx) { if (rf & 1) {
349
- i0.ɵɵelementStart(0, "div", 63);
350
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_For_2_Template, 13, 11, "div", 69, _forTrack0);
365
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_Template(rf, ctx) { if (rf & 1) {
366
+ i0.ɵɵelementStart(0, "div", 73);
367
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_For_2_Template, 13, 11, "div", 79, _forTrack0);
351
368
  i0.ɵɵelementEnd();
352
369
  } if (rf & 2) {
353
370
  const ctx_r1 = i0.ɵɵnextContext(3);
354
371
  i0.ɵɵadvance();
355
372
  i0.ɵɵrepeater(ctx_r1.getInputParams());
356
373
  } }
357
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_13_Template(rf, ctx) { if (rf & 1) {
358
- const _r14 = i0.ɵɵgetCurrentView();
359
- i0.ɵɵelementStart(0, "button", 67);
360
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter("Output")); });
361
- i0.ɵɵelement(1, "i", 68);
374
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_13_Template(rf, ctx) { if (rf & 1) {
375
+ const _r15 = i0.ɵɵgetCurrentView();
376
+ i0.ɵɵelementStart(0, "button", 77);
377
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter("Output")); });
378
+ i0.ɵɵelement(1, "i", 78);
362
379
  i0.ɵɵtext(2, " Add Output ");
363
380
  i0.ɵɵelementEnd();
364
381
  } }
365
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_14_Template(rf, ctx) { if (rf & 1) {
366
- i0.ɵɵelement(0, "mj-empty-state", 66);
382
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_14_Template(rf, ctx) { if (rf & 1) {
383
+ i0.ɵɵelement(0, "mj-empty-state", 76);
367
384
  } }
368
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
369
- i0.ɵɵelementStart(0, "span", 75);
385
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
386
+ i0.ɵɵelementStart(0, "span", 85);
370
387
  i0.ɵɵtext(1, "Array");
371
388
  i0.ɵɵelementEnd();
372
389
  } }
373
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
374
- const _r17 = i0.ɵɵgetCurrentView();
375
- i0.ɵɵelementStart(0, "button", 80);
376
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const param_r16 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.editParameter(param_r16)); });
377
- i0.ɵɵelement(1, "i", 81);
390
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
391
+ const _r18 = i0.ɵɵgetCurrentView();
392
+ i0.ɵɵelementStart(0, "button", 90);
393
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const param_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.editParameter(param_r17)); });
394
+ i0.ɵɵelement(1, "i", 91);
378
395
  i0.ɵɵelementEnd();
379
- i0.ɵɵelementStart(2, "button", 82);
380
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_6_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r17); const param_r16 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.deleteParameter(param_r16)); });
381
- i0.ɵɵelement(3, "i", 83);
396
+ i0.ɵɵelementStart(2, "button", 92);
397
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_6_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r18); const param_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.deleteParameter(param_r17)); });
398
+ i0.ɵɵelement(3, "i", 93);
382
399
  i0.ɵɵelementEnd();
383
400
  } }
384
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelementStart(0, "div", 78);
401
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
402
+ i0.ɵɵelementStart(0, "div", 88);
386
403
  i0.ɵɵtext(1);
387
404
  i0.ɵɵelementEnd();
388
405
  } if (rf & 2) {
389
- const param_r16 = i0.ɵɵnextContext().$implicit;
406
+ const param_r17 = i0.ɵɵnextContext().$implicit;
390
407
  i0.ɵɵadvance();
391
- i0.ɵɵtextInterpolate(param_r16.Description);
408
+ i0.ɵɵtextInterpolate(param_r17.Description);
392
409
  } }
393
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
394
- i0.ɵɵelementStart(0, "div", 79)(1, "span", 84);
410
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
411
+ i0.ɵɵelementStart(0, "div", 89)(1, "span", 94);
395
412
  i0.ɵɵtext(2, "Default:");
396
413
  i0.ɵɵelementEnd();
397
414
  i0.ɵɵelementStart(3, "code");
398
415
  i0.ɵɵtext(4);
399
416
  i0.ɵɵelementEnd()();
400
417
  } if (rf & 2) {
401
- const param_r16 = i0.ɵɵnextContext().$implicit;
418
+ const param_r17 = i0.ɵɵnextContext().$implicit;
402
419
  i0.ɵɵadvance(4);
403
- i0.ɵɵtextInterpolate(param_r16.DefaultValue);
420
+ i0.ɵɵtextInterpolate(param_r17.DefaultValue);
404
421
  } }
405
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Template(rf, ctx) { if (rf & 1) {
406
- const _r15 = i0.ɵɵgetCurrentView();
407
- i0.ɵɵelementStart(0, "div", 70);
408
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Template_div_click_0_listener($event) { const param_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParamClick(param_r16, $event)); });
409
- i0.ɵɵelementStart(1, "div", 71)(2, "span", 72);
422
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Template(rf, ctx) { if (rf & 1) {
423
+ const _r16 = i0.ɵɵgetCurrentView();
424
+ i0.ɵɵelementStart(0, "div", 80);
425
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Template_div_click_0_listener($event) { const param_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParamClick(param_r17, $event)); });
426
+ i0.ɵɵelementStart(1, "div", 81)(2, "span", 82);
410
427
  i0.ɵɵtext(3);
411
428
  i0.ɵɵelementEnd();
412
- i0.ɵɵelementStart(4, "div", 73);
413
- i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_5_Template, 2, 0, "span", 75);
414
- i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_6_Template, 4, 0);
429
+ i0.ɵɵelementStart(4, "div", 83);
430
+ i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_5_Template, 2, 0, "span", 85);
431
+ i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_6_Template, 4, 0);
415
432
  i0.ɵɵelementEnd()();
416
- i0.ɵɵelementStart(7, "div", 76)(8, "div", 77);
433
+ i0.ɵɵelementStart(7, "div", 86)(8, "div", 87);
417
434
  i0.ɵɵtext(9);
418
435
  i0.ɵɵelementEnd();
419
- i0.ɵɵconditionalCreate(10, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_10_Template, 2, 1, "div", 78);
420
- i0.ɵɵconditionalCreate(11, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Conditional_11_Template, 5, 1, "div", 79);
436
+ i0.ɵɵconditionalCreate(10, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_10_Template, 2, 1, "div", 88);
437
+ i0.ɵɵconditionalCreate(11, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Conditional_11_Template, 5, 1, "div", 89);
421
438
  i0.ɵɵelementEnd()();
422
439
  } if (rf & 2) {
423
- const param_r16 = ctx.$implicit;
440
+ const param_r17 = ctx.$implicit;
424
441
  const ctx_r1 = i0.ɵɵnextContext(4);
425
442
  i0.ɵɵclassProp("clickable", true);
426
443
  i0.ɵɵadvance(3);
427
- i0.ɵɵtextInterpolate(param_r16.Name);
444
+ i0.ɵɵtextInterpolate(param_r17.Name);
428
445
  i0.ɵɵadvance(2);
429
- i0.ɵɵconditional(param_r16.IsArray ? 5 : -1);
446
+ i0.ɵɵconditional(param_r17.IsArray ? 5 : -1);
430
447
  i0.ɵɵadvance();
431
448
  i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
432
449
  i0.ɵɵadvance(3);
433
- i0.ɵɵtextInterpolate(param_r16.ValueType);
450
+ i0.ɵɵtextInterpolate(param_r17.ValueType);
434
451
  i0.ɵɵadvance();
435
- i0.ɵɵconditional(param_r16.Description ? 10 : -1);
452
+ i0.ɵɵconditional(param_r17.Description ? 10 : -1);
436
453
  i0.ɵɵadvance();
437
- i0.ɵɵconditional(param_r16.DefaultValue ? 11 : -1);
454
+ i0.ɵɵconditional(param_r17.DefaultValue ? 11 : -1);
438
455
  } }
439
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelementStart(0, "div", 63);
441
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_For_2_Template, 12, 8, "div", 85, _forTrack0);
456
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_Template(rf, ctx) { if (rf & 1) {
457
+ i0.ɵɵelementStart(0, "div", 73);
458
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_For_2_Template, 12, 8, "div", 95, _forTrack0);
442
459
  i0.ɵɵelementEnd();
443
460
  } if (rf & 2) {
444
461
  const ctx_r1 = i0.ɵɵnextContext(3);
445
462
  i0.ɵɵadvance();
446
463
  i0.ɵɵrepeater(ctx_r1.getOutputParams());
447
464
  } }
448
- function MJActionFormComponentExtended_Conditional_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
449
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 59)(2, "h3");
450
- i0.ɵɵelement(3, "i", 60);
465
+ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Template(rf, ctx) { if (rf & 1) {
466
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 69)(2, "h3");
467
+ i0.ɵɵelement(3, "i", 70);
451
468
  i0.ɵɵtext(4, " Input Parameters");
452
469
  i0.ɵɵelementEnd();
453
- i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_5_Template, 3, 0, "button", 61);
470
+ i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_5_Template, 3, 0, "button", 71);
454
471
  i0.ɵɵelementEnd();
455
- i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_6_Template, 1, 0, "mj-empty-state", 62)(7, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_7_Template, 3, 0, "div", 63);
472
+ i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_6_Template, 1, 0, "mj-empty-state", 72)(7, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_7_Template, 3, 0, "div", 73);
456
473
  i0.ɵɵelementEnd();
457
- i0.ɵɵelementStart(8, "div", 64)(9, "div", 59)(10, "h3");
458
- i0.ɵɵelement(11, "i", 65);
474
+ i0.ɵɵelementStart(8, "div", 74)(9, "div", 69)(10, "h3");
475
+ i0.ɵɵelement(11, "i", 75);
459
476
  i0.ɵɵtext(12, " Output Parameters");
460
477
  i0.ɵɵelementEnd();
461
- i0.ɵɵconditionalCreate(13, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_13_Template, 3, 0, "button", 61);
478
+ i0.ɵɵconditionalCreate(13, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_13_Template, 3, 0, "button", 71);
462
479
  i0.ɵɵelementEnd();
463
- i0.ɵɵconditionalCreate(14, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_14_Template, 1, 0, "mj-empty-state", 66)(15, MJActionFormComponentExtended_Conditional_0_Conditional_35_Conditional_15_Template, 3, 0, "div", 63);
480
+ i0.ɵɵconditionalCreate(14, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_14_Template, 1, 0, "mj-empty-state", 76)(15, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_15_Template, 3, 0, "div", 73);
464
481
  i0.ɵɵelementEnd();
465
482
  } if (rf & 2) {
466
483
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -475,47 +492,47 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_35_Template(rf,
475
492
  i0.ɵɵadvance();
476
493
  i0.ɵɵconditional(ctx_r1.getOutputParams().length === 0 ? 14 : 15);
477
494
  } }
478
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
479
- i0.ɵɵelementStart(0, "span", 96);
480
- i0.ɵɵelement(1, "i", 97);
495
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
496
+ i0.ɵɵelementStart(0, "span", 106);
497
+ i0.ɵɵelement(1, "i", 107);
481
498
  i0.ɵɵtext(2, " Locked ");
482
499
  i0.ɵɵelementEnd();
483
500
  } }
484
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_ng_template_1_Template(rf, ctx) { if (rf & 1) {
485
- i0.ɵɵelementStart(0, "span", 55);
486
- i0.ɵɵelement(1, "i", 95);
501
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_ng_template_1_Template(rf, ctx) { if (rf & 1) {
502
+ i0.ɵɵelementStart(0, "span", 65);
503
+ i0.ɵɵelement(1, "i", 105);
487
504
  i0.ɵɵtext(2, " Code & Generation ");
488
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_36_ng_template_1_Conditional_3_Template, 3, 0, "span", 96);
505
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_38_ng_template_1_Conditional_3_Template, 3, 0, "span", 106);
489
506
  i0.ɵɵelementEnd();
490
507
  } if (rf & 2) {
491
508
  const ctx_r1 = i0.ɵɵnextContext(3);
492
509
  i0.ɵɵadvance(3);
493
510
  i0.ɵɵconditional(ctx_r1.record.CodeLocked ? 3 : -1);
494
511
  } }
495
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_3_Template(rf, ctx) { if (rf & 1) {
496
- const _r19 = i0.ɵɵgetCurrentView();
497
- i0.ɵɵelementStart(0, "div", 86)(1, "h3");
498
- i0.ɵɵelement(2, "i", 54);
512
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
513
+ const _r20 = i0.ɵɵgetCurrentView();
514
+ i0.ɵɵelementStart(0, "div", 96)(1, "h3");
515
+ i0.ɵɵelement(2, "i", 61);
499
516
  i0.ɵɵtext(3, " AI Generation");
500
517
  i0.ɵɵelementEnd();
501
- i0.ɵɵelementStart(4, "div", 98)(5, "label");
518
+ i0.ɵɵelementStart(4, "div", 108)(5, "label");
502
519
  i0.ɵɵtext(6, "User Prompt");
503
520
  i0.ɵɵelementEnd();
504
- i0.ɵɵelementStart(7, "textarea", 99);
505
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_3_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.UserPrompt, $event) || (ctx_r1.record.UserPrompt = $event); return i0.ɵɵresetView($event); });
521
+ i0.ɵɵelementStart(7, "textarea", 109);
522
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_3_Template_textarea_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.UserPrompt, $event) || (ctx_r1.record.UserPrompt = $event); return i0.ɵɵresetView($event); });
506
523
  i0.ɵɵtext(8, " ");
507
524
  i0.ɵɵelementEnd()();
508
- i0.ɵɵelementStart(9, "div", 100)(10, "label");
525
+ i0.ɵɵelementStart(9, "div", 110)(10, "label");
509
526
  i0.ɵɵtext(11, "Internal Comments (not sent to AI)");
510
527
  i0.ɵɵelementEnd();
511
- i0.ɵɵelementStart(12, "textarea", 101);
512
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_3_Template_textarea_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.UserComments, $event) || (ctx_r1.record.UserComments = $event); return i0.ɵɵresetView($event); });
528
+ i0.ɵɵelementStart(12, "textarea", 111);
529
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_3_Template_textarea_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.UserComments, $event) || (ctx_r1.record.UserComments = $event); return i0.ɵɵresetView($event); });
513
530
  i0.ɵɵtext(13, " ");
514
531
  i0.ɵɵelementEnd()();
515
- i0.ɵɵelementStart(14, "div", 102)(15, "mj-switch", 103);
516
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_3_Template_mj_switch_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CodeLocked, $event) || (ctx_r1.record.CodeLocked = $event); return i0.ɵɵresetView($event); });
532
+ i0.ɵɵelementStart(14, "div", 112)(15, "mj-switch", 113);
533
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_3_Template_mj_switch_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CodeLocked, $event) || (ctx_r1.record.CodeLocked = $event); return i0.ɵɵresetView($event); });
517
534
  i0.ɵɵelementEnd();
518
- i0.ɵɵelementStart(16, "label", 104);
535
+ i0.ɵɵelementStart(16, "label", 114);
519
536
  i0.ɵɵtext(17, "Lock Code (prevent regeneration)");
520
537
  i0.ɵɵelementEnd()()();
521
538
  } if (rf & 2) {
@@ -529,11 +546,11 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_
529
546
  i0.ɵɵadvance(3);
530
547
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CodeLocked);
531
548
  } }
532
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template(rf, ctx) { if (rf & 1) {
533
- const _r20 = i0.ɵɵgetCurrentView();
534
- i0.ɵɵelementStart(0, "button", 67);
535
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCodeComments()); });
536
- i0.ɵɵelement(1, "i", 105);
549
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_10_Template(rf, ctx) { if (rf & 1) {
550
+ const _r21 = i0.ɵɵgetCurrentView();
551
+ i0.ɵɵelementStart(0, "button", 77);
552
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCodeComments()); });
553
+ i0.ɵɵelement(1, "i", 115);
537
554
  i0.ɵɵtext(2);
538
555
  i0.ɵɵelementEnd();
539
556
  } if (rf & 2) {
@@ -541,9 +558,9 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_
541
558
  i0.ɵɵadvance(2);
542
559
  i0.ɵɵtextInterpolate1(" ", ctx_r1.showCodeComments ? "Hide" : "Show", " AI Comments ");
543
560
  } }
544
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_15_Template(rf, ctx) { if (rf & 1) {
545
- i0.ɵɵelementStart(0, "div", 93)(1, "h4");
546
- i0.ɵɵelement(2, "i", 54);
561
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_15_Template(rf, ctx) { if (rf & 1) {
562
+ i0.ɵɵelementStart(0, "div", 103)(1, "h4");
563
+ i0.ɵɵelement(2, "i", 61);
547
564
  i0.ɵɵtext(3, " AI Explanation");
548
565
  i0.ɵɵelementEnd();
549
566
  i0.ɵɵelementStart(4, "p");
@@ -554,13 +571,13 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_
554
571
  i0.ɵɵadvance(5);
555
572
  i0.ɵɵtextInterpolate(ctx_r1.record.CodeComments);
556
573
  } }
557
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_16_Template(rf, ctx) { if (rf & 1) {
558
- const _r21 = i0.ɵɵgetCurrentView();
559
- i0.ɵɵelementStart(0, "div", 94)(1, "label");
574
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_16_Template(rf, ctx) { if (rf & 1) {
575
+ const _r22 = i0.ɵɵgetCurrentView();
576
+ i0.ɵɵelementStart(0, "div", 104)(1, "label");
560
577
  i0.ɵɵtext(2, "Rejection Comments");
561
578
  i0.ɵɵelementEnd();
562
- i0.ɵɵelementStart(3, "textarea", 106);
563
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_16_Template_textarea_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CodeApprovalComments, $event) || (ctx_r1.record.CodeApprovalComments = $event); return i0.ɵɵresetView($event); });
579
+ i0.ɵɵelementStart(3, "textarea", 116);
580
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_16_Template_textarea_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CodeApprovalComments, $event) || (ctx_r1.record.CodeApprovalComments = $event); return i0.ɵɵresetView($event); });
564
581
  i0.ɵɵtext(4, " ");
565
582
  i0.ɵɵelementEnd()();
566
583
  } if (rf & 2) {
@@ -569,28 +586,28 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_
569
586
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CodeApprovalComments);
570
587
  i0.ɵɵproperty("rows", 2);
571
588
  } }
572
- function MJActionFormComponentExtended_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
573
- const _r18 = i0.ɵɵgetCurrentView();
574
- i0.ɵɵelementStart(0, "mj-accordion-panel", 26);
575
- i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_36_ng_template_1_Template, 4, 1, "ng-template", 27);
576
- i0.ɵɵelementStart(2, "div", 28);
577
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_3_Template, 18, 5, "div", 86);
578
- i0.ɵɵelementStart(4, "div", 87)(5, "div", 88)(6, "h3");
579
- i0.ɵɵelement(7, "i", 89);
589
+ function MJActionFormComponentExtended_Conditional_0_Conditional_38_Template(rf, ctx) { if (rf & 1) {
590
+ const _r19 = i0.ɵɵgetCurrentView();
591
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 33);
592
+ i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_38_ng_template_1_Template, 4, 1, "ng-template", 29);
593
+ i0.ɵɵelementStart(2, "div", 30);
594
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_3_Template, 18, 5, "div", 96);
595
+ i0.ɵɵelementStart(4, "div", 97)(5, "div", 98)(6, "h3");
596
+ i0.ɵɵelement(7, "i", 99);
580
597
  i0.ɵɵtext(8, " Action Code");
581
598
  i0.ɵɵelementEnd();
582
- i0.ɵɵelementStart(9, "div", 90);
583
- i0.ɵɵconditionalCreate(10, MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_10_Template, 3, 1, "button", 61);
584
- i0.ɵɵelementStart(11, "button", 67);
585
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.record.Code || "")); });
586
- i0.ɵɵelement(12, "i", 91);
599
+ i0.ɵɵelementStart(9, "div", 100);
600
+ i0.ɵɵconditionalCreate(10, MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_10_Template, 3, 1, "button", 71);
601
+ i0.ɵɵelementStart(11, "button", 77);
602
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.copyToClipboard(ctx_r1.record.Code || "")); });
603
+ i0.ɵɵelement(12, "i", 101);
587
604
  i0.ɵɵtext(13, " Copy ");
588
605
  i0.ɵɵelementEnd()()();
589
- i0.ɵɵelementStart(14, "mj-code-editor", 92);
590
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_36_Template_mj_code_editor_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Code, $event) || (ctx_r1.record.Code = $event); return i0.ɵɵresetView($event); });
606
+ i0.ɵɵelementStart(14, "mj-code-editor", 102);
607
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionFormComponentExtended_Conditional_0_Conditional_38_Template_mj_code_editor_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Code, $event) || (ctx_r1.record.Code = $event); return i0.ɵɵresetView($event); });
591
608
  i0.ɵɵelementEnd();
592
- i0.ɵɵconditionalCreate(15, MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_15_Template, 6, 1, "div", 93);
593
- i0.ɵɵconditionalCreate(16, MJActionFormComponentExtended_Conditional_0_Conditional_36_Conditional_16_Template, 5, 2, "div", 94);
609
+ i0.ɵɵconditionalCreate(15, MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_15_Template, 6, 1, "div", 103);
610
+ i0.ɵɵconditionalCreate(16, MJActionFormComponentExtended_Conditional_0_Conditional_38_Conditional_16_Template, 5, 2, "div", 104);
594
611
  i0.ɵɵelementEnd()()();
595
612
  } if (rf & 2) {
596
613
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -607,11 +624,11 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_36_Template(rf,
607
624
  i0.ɵɵadvance();
608
625
  i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.record.CodeApprovalStatus === "Rejected" ? 16 : -1);
609
626
  } }
610
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_ng_template_1_Template(rf, ctx) { if (rf & 1) {
611
- i0.ɵɵelementStart(0, "span", 55);
612
- i0.ɵɵelement(1, "i", 112);
627
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
628
+ i0.ɵɵelementStart(0, "span", 65);
629
+ i0.ɵɵelement(1, "i", 122);
613
630
  i0.ɵɵtext(2, " Runtime Configuration & Permissions ");
614
- i0.ɵɵelementStart(3, "span", 113);
631
+ i0.ɵɵelementStart(3, "span", 123);
615
632
  i0.ɵɵtext(4);
616
633
  i0.ɵɵelementEnd()();
617
634
  } if (rf & 2) {
@@ -619,34 +636,34 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_37_ng_template_
619
636
  i0.ɵɵadvance(4);
620
637
  i0.ɵɵtextInterpolate1(" (", ctx_r1.getRuntimeConfigSummary(), ") ");
621
638
  } }
622
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_3_Template(rf, ctx) { if (rf & 1) {
623
- i0.ɵɵelementStart(0, "mj-alert", 107)(1, "strong");
639
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
640
+ i0.ɵɵelementStart(0, "mj-alert", 117)(1, "strong");
624
641
  i0.ɵɵtext(2, "Missing or malformed RuntimeActionConfiguration.");
625
642
  i0.ɵɵelementEnd();
626
643
  i0.ɵɵtext(3, " This Runtime action cannot run until a valid configuration is supplied. Approval should not be granted in this state. ");
627
644
  i0.ɵɵelementEnd();
628
645
  } }
629
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
646
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
630
647
  i0.ɵɵelementStart(0, "strong");
631
648
  i0.ɵɵtext(1, "allowAnyEntity");
632
649
  i0.ɵɵelementEnd();
633
650
  } }
634
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
651
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
635
652
  i0.ɵɵelementStart(0, "strong");
636
653
  i0.ɵɵtext(1, "allowAnyAction");
637
654
  i0.ɵɵelementEnd();
638
655
  } }
639
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
656
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
640
657
  i0.ɵɵelementStart(0, "strong");
641
658
  i0.ɵɵtext(1, "allowAnyAgent");
642
659
  i0.ɵɵelementEnd();
643
660
  } }
644
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
645
- i0.ɵɵelementStart(0, "mj-alert", 114)(1, "div", 125);
661
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
662
+ i0.ɵɵelementStart(0, "mj-alert", 124)(1, "div", 135);
646
663
  i0.ɵɵtext(2, " This runtime action has one or more wildcard flags set that bypass the specific allowlists below: ");
647
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Conditional_3_Template, 2, 0, "strong");
648
- i0.ɵɵconditionalCreate(4, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Conditional_4_Template, 2, 0, "strong");
649
- i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Conditional_5_Template, 2, 0, "strong");
664
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Conditional_3_Template, 2, 0, "strong");
665
+ i0.ɵɵconditionalCreate(4, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Conditional_4_Template, 2, 0, "strong");
666
+ i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Conditional_5_Template, 2, 0, "strong");
650
667
  i0.ɵɵtext(6, " . Approving grants this action unrestricted access to that namespace on behalf of any user who invokes it. Only approve if the action is framework-authored or you have personally reviewed every place it touches those resources. ");
651
668
  i0.ɵɵelementEnd()();
652
669
  } if (rf & 2) {
@@ -658,76 +675,76 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_
658
675
  i0.ɵɵadvance();
659
676
  i0.ɵɵconditional(ctx_r1.getWildcardFlags().agent ? 5 : -1);
660
677
  } }
661
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
662
- i0.ɵɵelementStart(0, "div", 119);
678
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
679
+ i0.ɵɵelementStart(0, "div", 129);
663
680
  i0.ɵɵtext(1, "None requested");
664
681
  i0.ɵɵelementEnd();
665
682
  } }
666
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
667
- i0.ɵɵelementStart(0, "span", 128);
683
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
684
+ i0.ɵɵelementStart(0, "span", 138);
668
685
  i0.ɵɵtext(1);
669
686
  i0.ɵɵelementEnd();
670
687
  } if (rf & 2) {
671
- const e_r22 = ctx.$implicit;
688
+ const e_r23 = ctx.$implicit;
672
689
  i0.ɵɵadvance();
673
- i0.ɵɵtextInterpolate1(" ", e_r22.name, " ");
690
+ i0.ɵɵtextInterpolate1(" ", e_r23.name, " ");
674
691
  } }
675
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
676
- i0.ɵɵelementStart(0, "div", 120);
677
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_7_For_2_Template, 2, 1, "span", 128, _forTrack1);
692
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
693
+ i0.ɵɵelementStart(0, "div", 130);
694
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_7_For_2_Template, 2, 1, "span", 138, _forTrack1);
678
695
  i0.ɵɵelementEnd();
679
696
  } if (rf & 2) {
680
697
  const ctx_r1 = i0.ɵɵnextContext(4);
681
698
  i0.ɵɵadvance();
682
699
  i0.ɵɵrepeater(ctx_r1.getAllowedEntities());
683
700
  } }
684
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
685
- i0.ɵɵelementStart(0, "div", 119);
701
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
702
+ i0.ɵɵelementStart(0, "div", 129);
686
703
  i0.ɵɵtext(1, "None requested");
687
704
  i0.ɵɵelementEnd();
688
705
  } }
689
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
690
- i0.ɵɵelementStart(0, "span", 128);
706
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
707
+ i0.ɵɵelementStart(0, "span", 138);
691
708
  i0.ɵɵtext(1);
692
709
  i0.ɵɵelementEnd();
693
710
  } if (rf & 2) {
694
- const a_r23 = ctx.$implicit;
711
+ const a_r24 = ctx.$implicit;
695
712
  i0.ɵɵadvance();
696
- i0.ɵɵtextInterpolate1(" ", a_r23.name, " ");
713
+ i0.ɵɵtextInterpolate1(" ", a_r24.name, " ");
697
714
  } }
698
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_13_Template(rf, ctx) { if (rf & 1) {
699
- i0.ɵɵelementStart(0, "div", 120);
700
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_13_For_2_Template, 2, 1, "span", 128, _forTrack1);
715
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_13_Template(rf, ctx) { if (rf & 1) {
716
+ i0.ɵɵelementStart(0, "div", 130);
717
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_13_For_2_Template, 2, 1, "span", 138, _forTrack1);
701
718
  i0.ɵɵelementEnd();
702
719
  } if (rf & 2) {
703
720
  const ctx_r1 = i0.ɵɵnextContext(4);
704
721
  i0.ɵɵadvance();
705
722
  i0.ɵɵrepeater(ctx_r1.getAllowedActions());
706
723
  } }
707
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_18_Template(rf, ctx) { if (rf & 1) {
708
- i0.ɵɵelementStart(0, "div", 119);
724
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_18_Template(rf, ctx) { if (rf & 1) {
725
+ i0.ɵɵelementStart(0, "div", 129);
709
726
  i0.ɵɵtext(1, "None requested");
710
727
  i0.ɵɵelementEnd();
711
728
  } }
712
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
713
- i0.ɵɵelementStart(0, "span", 128);
729
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
730
+ i0.ɵɵelementStart(0, "span", 138);
714
731
  i0.ɵɵtext(1);
715
732
  i0.ɵɵelementEnd();
716
733
  } if (rf & 2) {
717
- const g_r24 = ctx.$implicit;
734
+ const g_r25 = ctx.$implicit;
718
735
  i0.ɵɵadvance();
719
- i0.ɵɵtextInterpolate1(" ", g_r24.name, " ");
736
+ i0.ɵɵtextInterpolate1(" ", g_r25.name, " ");
720
737
  } }
721
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_19_Template(rf, ctx) { if (rf & 1) {
722
- i0.ɵɵelementStart(0, "div", 120);
723
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_19_For_2_Template, 2, 1, "span", 128, _forTrack1);
738
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_19_Template(rf, ctx) { if (rf & 1) {
739
+ i0.ɵɵelementStart(0, "div", 130);
740
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_19_For_2_Template, 2, 1, "span", 138, _forTrack1);
724
741
  i0.ɵɵelementEnd();
725
742
  } if (rf & 2) {
726
743
  const ctx_r1 = i0.ɵɵnextContext(4);
727
744
  i0.ɵɵadvance();
728
745
  i0.ɵɵrepeater(ctx_r1.getAllowedAgents());
729
746
  } }
730
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_30_Template(rf, ctx) { if (rf & 1) {
747
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_30_Template(rf, ctx) { if (rf & 1) {
731
748
  i0.ɵɵelementStart(0, "div");
732
749
  i0.ɵɵtext(1);
733
750
  i0.ɵɵelementEnd();
@@ -736,78 +753,78 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_
736
753
  i0.ɵɵadvance();
737
754
  i0.ɵɵtextInterpolate1("Max execution time: ", ctx_r1.record.MaxExecutionTimeMS, " ms");
738
755
  } }
739
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_35_Template(rf, ctx) { if (rf & 1) {
740
- i0.ɵɵelementStart(0, "div", 119);
756
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_35_Template(rf, ctx) { if (rf & 1) {
757
+ i0.ɵɵelementStart(0, "div", 129);
741
758
  i0.ɵɵtext(1, "None (only default set: lodash, date-fns, uuid, validator)");
742
759
  i0.ɵɵelementEnd();
743
760
  } }
744
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_36_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
761
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_36_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
745
762
  i0.ɵɵelementStart(0, "span", 18);
746
763
  i0.ɵɵtext(1);
747
764
  i0.ɵɵelementEnd();
748
765
  } if (rf & 2) {
749
- const lib_r25 = i0.ɵɵnextContext().$implicit;
766
+ const lib_r26 = i0.ɵɵnextContext().$implicit;
750
767
  i0.ɵɵadvance();
751
- i0.ɵɵtextInterpolate1(" @", lib_r25.version);
768
+ i0.ɵɵtextInterpolate1(" @", lib_r26.version);
752
769
  } }
753
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_36_For_2_Template(rf, ctx) { if (rf & 1) {
754
- i0.ɵɵelementStart(0, "span", 129);
770
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_36_For_2_Template(rf, ctx) { if (rf & 1) {
771
+ i0.ɵɵelementStart(0, "span", 139);
755
772
  i0.ɵɵtext(1);
756
- i0.ɵɵconditionalCreate(2, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_36_For_2_Conditional_2_Template, 2, 1, "span", 18);
773
+ i0.ɵɵconditionalCreate(2, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_36_For_2_Conditional_2_Template, 2, 1, "span", 18);
757
774
  i0.ɵɵelementEnd();
758
775
  } if (rf & 2) {
759
- const lib_r25 = ctx.$implicit;
776
+ const lib_r26 = ctx.$implicit;
760
777
  i0.ɵɵadvance();
761
- i0.ɵɵtextInterpolate1(" ", lib_r25.name);
778
+ i0.ɵɵtextInterpolate1(" ", lib_r26.name);
762
779
  i0.ɵɵadvance();
763
- i0.ɵɵconditional(lib_r25.version ? 2 : -1);
780
+ i0.ɵɵconditional(lib_r26.version ? 2 : -1);
764
781
  } }
765
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_36_Template(rf, ctx) { if (rf & 1) {
766
- i0.ɵɵelementStart(0, "div", 127);
767
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_36_For_2_Template, 3, 2, "span", 129, _forTrack2);
782
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_36_Template(rf, ctx) { if (rf & 1) {
783
+ i0.ɵɵelementStart(0, "div", 137);
784
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_36_For_2_Template, 3, 2, "span", 139, _forTrack2);
768
785
  i0.ɵɵelementEnd();
769
786
  } if (rf & 2) {
770
787
  const ctx_r1 = i0.ɵɵnextContext(4);
771
788
  i0.ɵɵadvance();
772
789
  i0.ɵɵrepeater(ctx_r1.getRequestedLibraries());
773
790
  } }
774
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Template(rf, ctx) { if (rf & 1) {
775
- i0.ɵɵconditionalCreate(0, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_0_Template, 7, 3, "mj-alert", 114);
776
- i0.ɵɵelementStart(1, "div", 115)(2, "div", 116)(3, "div", 117);
777
- i0.ɵɵelement(4, "i", 118);
791
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
792
+ i0.ɵɵconditionalCreate(0, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_0_Template, 7, 3, "mj-alert", 124);
793
+ i0.ɵɵelementStart(1, "div", 125)(2, "div", 126)(3, "div", 127);
794
+ i0.ɵɵelement(4, "i", 128);
778
795
  i0.ɵɵtext(5);
779
796
  i0.ɵɵelementEnd();
780
- i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_6_Template, 2, 0, "div", 119)(7, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_7_Template, 3, 0, "div", 120);
797
+ i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_6_Template, 2, 0, "div", 129)(7, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_7_Template, 3, 0, "div", 130);
781
798
  i0.ɵɵelementEnd();
782
- i0.ɵɵelementStart(8, "div", 116)(9, "div", 117);
783
- i0.ɵɵelement(10, "i", 121);
799
+ i0.ɵɵelementStart(8, "div", 126)(9, "div", 127);
800
+ i0.ɵɵelement(10, "i", 131);
784
801
  i0.ɵɵtext(11);
785
802
  i0.ɵɵelementEnd();
786
- i0.ɵɵconditionalCreate(12, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_12_Template, 2, 0, "div", 119)(13, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_13_Template, 3, 0, "div", 120);
803
+ i0.ɵɵconditionalCreate(12, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_12_Template, 2, 0, "div", 129)(13, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_13_Template, 3, 0, "div", 130);
787
804
  i0.ɵɵelementEnd();
788
- i0.ɵɵelementStart(14, "div", 116)(15, "div", 117);
789
- i0.ɵɵelement(16, "i", 122);
805
+ i0.ɵɵelementStart(14, "div", 126)(15, "div", 127);
806
+ i0.ɵɵelement(16, "i", 132);
790
807
  i0.ɵɵtext(17);
791
808
  i0.ɵɵelementEnd();
792
- i0.ɵɵconditionalCreate(18, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_18_Template, 2, 0, "div", 119)(19, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_19_Template, 3, 0, "div", 120);
809
+ i0.ɵɵconditionalCreate(18, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_18_Template, 2, 0, "div", 129)(19, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_19_Template, 3, 0, "div", 130);
793
810
  i0.ɵɵelementEnd()();
794
- i0.ɵɵelementStart(20, "div", 123)(21, "div")(22, "div", 108);
795
- i0.ɵɵelement(23, "i", 124);
811
+ i0.ɵɵelementStart(20, "div", 133)(21, "div")(22, "div", 118);
812
+ i0.ɵɵelement(23, "i", 134);
796
813
  i0.ɵɵtext(24, " Resource Limits ");
797
814
  i0.ɵɵelementEnd();
798
- i0.ɵɵelementStart(25, "div", 125)(26, "div");
815
+ i0.ɵɵelementStart(25, "div", 135)(26, "div");
799
816
  i0.ɵɵtext(27);
800
817
  i0.ɵɵelementEnd();
801
818
  i0.ɵɵelementStart(28, "div");
802
819
  i0.ɵɵtext(29);
803
820
  i0.ɵɵelementEnd();
804
- i0.ɵɵconditionalCreate(30, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_30_Template, 2, 1, "div");
821
+ i0.ɵɵconditionalCreate(30, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_30_Template, 2, 1, "div");
805
822
  i0.ɵɵelementEnd()();
806
- i0.ɵɵelementStart(31, "div")(32, "div", 108);
807
- i0.ɵɵelement(33, "i", 126);
823
+ i0.ɵɵelementStart(31, "div")(32, "div", 118);
824
+ i0.ɵɵelement(33, "i", 136);
808
825
  i0.ɵɵtext(34, " Additional Libraries ");
809
826
  i0.ɵɵelementEnd();
810
- i0.ɵɵconditionalCreate(35, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_35_Template, 2, 0, "div", 119)(36, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Conditional_36_Template, 3, 0, "div", 127);
827
+ i0.ɵɵconditionalCreate(35, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_35_Template, 2, 0, "div", 129)(36, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Conditional_36_Template, 3, 0, "div", 137);
811
828
  i0.ɵɵelementEnd()();
812
829
  } if (rf & 2) {
813
830
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -833,35 +850,35 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_
833
850
  i0.ɵɵadvance(5);
834
851
  i0.ɵɵconditional(ctx_r1.getRequestedLibraries().length === 0 ? 35 : 36);
835
852
  } }
836
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_12_Template(rf, ctx) { if (rf & 1) {
837
- const _r26 = i0.ɵɵgetCurrentView();
838
- i0.ɵɵelementStart(0, "mj-alert", 111)(1, "div", 130);
853
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_12_Template(rf, ctx) { if (rf & 1) {
854
+ const _r27 = i0.ɵɵgetCurrentView();
855
+ i0.ɵɵelementStart(0, "mj-alert", 121)(1, "div", 140);
839
856
  i0.ɵɵtext(2, " Approving grants this action the permissions listed above on behalf of any user who invokes it. Review the code and permissions carefully before approving. ");
840
857
  i0.ɵɵelementEnd();
841
- i0.ɵɵelementStart(3, "div", 21)(4, "button", 131);
842
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_12_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.approveCode()); });
843
- i0.ɵɵelement(5, "i", 132);
858
+ i0.ɵɵelementStart(3, "div", 21)(4, "button", 141);
859
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_12_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.approveCode()); });
860
+ i0.ɵɵelement(5, "i", 142);
844
861
  i0.ɵɵtext(6, " Approve ");
845
862
  i0.ɵɵelementEnd();
846
- i0.ɵɵelementStart(7, "button", 133);
847
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_12_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.rejectCode()); });
848
- i0.ɵɵelement(8, "i", 134);
863
+ i0.ɵɵelementStart(7, "button", 143);
864
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_12_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.rejectCode()); });
865
+ i0.ɵɵelement(8, "i", 144);
849
866
  i0.ɵɵtext(9, " Reject ");
850
867
  i0.ɵɵelementEnd()()();
851
868
  } }
852
- function MJActionFormComponentExtended_Conditional_0_Conditional_37_Template(rf, ctx) { if (rf & 1) {
853
- i0.ɵɵelementStart(0, "mj-accordion-panel", 26);
854
- i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_37_ng_template_1_Template, 5, 1, "ng-template", 27);
855
- i0.ɵɵelementStart(2, "div", 28);
856
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_3_Template, 4, 0, "mj-alert", 107)(4, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_4_Template, 37, 11);
857
- i0.ɵɵelementStart(5, "div")(6, "div", 108);
858
- i0.ɵɵelement(7, "i", 109);
869
+ function MJActionFormComponentExtended_Conditional_0_Conditional_39_Template(rf, ctx) { if (rf & 1) {
870
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 34);
871
+ i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Template, 5, 1, "ng-template", 29);
872
+ i0.ɵɵelementStart(2, "div", 30);
873
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template, 4, 0, "mj-alert", 117)(4, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Template, 37, 11);
874
+ i0.ɵɵelementStart(5, "div")(6, "div", 118);
875
+ i0.ɵɵelement(7, "i", 119);
859
876
  i0.ɵɵtext(8, " JavaScript Payload ");
860
877
  i0.ɵɵelementEnd();
861
- i0.ɵɵelementStart(9, "pre", 110)(10, "code");
878
+ i0.ɵɵelementStart(9, "pre", 120)(10, "code");
862
879
  i0.ɵɵtext(11);
863
880
  i0.ɵɵelementEnd()()();
864
- i0.ɵɵconditionalCreate(12, MJActionFormComponentExtended_Conditional_0_Conditional_37_Conditional_12_Template, 10, 0, "mj-alert", 111);
881
+ i0.ɵɵconditionalCreate(12, MJActionFormComponentExtended_Conditional_0_Conditional_39_Conditional_12_Template, 10, 0, "mj-alert", 121);
865
882
  i0.ɵɵelementEnd()();
866
883
  } if (rf & 2) {
867
884
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -873,8 +890,8 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_37_Template(rf,
873
890
  i0.ɵɵadvance();
874
891
  i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.record.CodeApprovalStatus === "Pending" ? 12 : -1);
875
892
  } }
876
- function MJActionFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
877
- i0.ɵɵelementStart(0, "span", 136);
893
+ function MJActionFormComponentExtended_Conditional_0_ng_template_41_Conditional_3_Template(rf, ctx) { if (rf & 1) {
894
+ i0.ɵɵelementStart(0, "span", 146);
878
895
  i0.ɵɵtext(1);
879
896
  i0.ɵɵelementEnd();
880
897
  } if (rf & 2) {
@@ -882,184 +899,184 @@ function MJActionFormComponentExtended_Conditional_0_ng_template_39_Conditional_
882
899
  i0.ɵɵadvance();
883
900
  i0.ɵɵtextInterpolate1(" ", ctx_r1.resultCodes.length, " ");
884
901
  } }
885
- function MJActionFormComponentExtended_Conditional_0_ng_template_39_Template(rf, ctx) { if (rf & 1) {
886
- i0.ɵɵelementStart(0, "span", 55);
887
- i0.ɵɵelement(1, "i", 135);
902
+ function MJActionFormComponentExtended_Conditional_0_ng_template_41_Template(rf, ctx) { if (rf & 1) {
903
+ i0.ɵɵelementStart(0, "span", 65);
904
+ i0.ɵɵelement(1, "i", 145);
888
905
  i0.ɵɵtext(2, " Result Codes ");
889
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_ng_template_39_Conditional_3_Template, 2, 1, "span", 136);
906
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_ng_template_41_Conditional_3_Template, 2, 1, "span", 146);
890
907
  i0.ɵɵelementEnd();
891
908
  } if (rf & 2) {
892
909
  const ctx_r1 = i0.ɵɵnextContext(2);
893
910
  i0.ɵɵadvance(3);
894
911
  i0.ɵɵconditional(ctx_r1.resultCodes.length > 0 ? 3 : -1);
895
912
  } }
896
- function MJActionFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
897
- const _r27 = i0.ɵɵgetCurrentView();
898
- i0.ɵɵelementStart(0, "div", 31)(1, "button", 137);
899
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_41_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.addResultCode()); });
900
- i0.ɵɵelement(2, "i", 68);
913
+ function MJActionFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
914
+ const _r28 = i0.ɵɵgetCurrentView();
915
+ i0.ɵɵelementStart(0, "div", 36)(1, "button", 147);
916
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_43_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.addResultCode()); });
917
+ i0.ɵɵelement(2, "i", 78);
901
918
  i0.ɵɵtext(3, " Add Result Code ");
902
919
  i0.ɵɵelementEnd()();
903
920
  } }
904
- function MJActionFormComponentExtended_Conditional_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
905
- i0.ɵɵelementStart(0, "div", 29);
906
- i0.ɵɵelement(1, "i", 57);
921
+ function MJActionFormComponentExtended_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
922
+ i0.ɵɵelementStart(0, "div", 31);
923
+ i0.ɵɵelement(1, "i", 67);
907
924
  i0.ɵɵtext(2, " Loading result codes... ");
908
925
  i0.ɵɵelementEnd();
909
926
  } }
910
- function MJActionFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
911
- i0.ɵɵelement(0, "mj-empty-state", 32);
927
+ function MJActionFormComponentExtended_Conditional_0_Conditional_45_Template(rf, ctx) { if (rf & 1) {
928
+ i0.ɵɵelement(0, "mj-empty-state", 37);
912
929
  } if (rf & 2) {
913
930
  const ctx_r1 = i0.ɵɵnextContext(2);
914
931
  i0.ɵɵproperty("Message", ctx_r1.EditMode && ctx_r1.record.IsSaved ? "Add result codes to define possible outcomes" : "");
915
932
  } }
916
- function MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
917
- i0.ɵɵelementStart(0, "div", 143);
933
+ function MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
934
+ i0.ɵɵelementStart(0, "div", 153);
918
935
  i0.ɵɵtext(1);
919
936
  i0.ɵɵelementEnd();
920
937
  } if (rf & 2) {
921
- const code_r29 = i0.ɵɵnextContext().$implicit;
938
+ const code_r30 = i0.ɵɵnextContext().$implicit;
922
939
  i0.ɵɵadvance();
923
- i0.ɵɵtextInterpolate(code_r29.Description);
940
+ i0.ɵɵtextInterpolate(code_r30.Description);
924
941
  } }
925
- function MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
926
- const _r30 = i0.ɵɵgetCurrentView();
927
- i0.ɵɵelementStart(0, "div", 144)(1, "button", 145);
928
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Conditional_7_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r30); const code_r29 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.editResultCode(code_r29); return i0.ɵɵresetView($event.stopPropagation()); });
929
- i0.ɵɵelement(2, "i", 81);
942
+ function MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
943
+ const _r31 = i0.ɵɵgetCurrentView();
944
+ i0.ɵɵelementStart(0, "div", 154)(1, "button", 155);
945
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Conditional_7_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r31); const code_r30 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.editResultCode(code_r30); return i0.ɵɵresetView($event.stopPropagation()); });
946
+ i0.ɵɵelement(2, "i", 91);
930
947
  i0.ɵɵelementEnd();
931
- i0.ɵɵelementStart(3, "button", 146);
932
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Conditional_7_Template_button_click_3_listener($event) { i0.ɵɵrestoreView(_r30); const code_r29 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.deleteResultCode(code_r29); return i0.ɵɵresetView($event.stopPropagation()); });
933
- i0.ɵɵelement(4, "i", 83);
948
+ i0.ɵɵelementStart(3, "button", 156);
949
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Conditional_7_Template_button_click_3_listener($event) { i0.ɵɵrestoreView(_r31); const code_r30 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.deleteResultCode(code_r30); return i0.ɵɵresetView($event.stopPropagation()); });
950
+ i0.ɵɵelement(4, "i", 93);
934
951
  i0.ɵɵelementEnd()();
935
952
  } }
936
- function MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Template(rf, ctx) { if (rf & 1) {
937
- const _r28 = i0.ɵɵgetCurrentView();
938
- i0.ɵɵelementStart(0, "div", 139);
939
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Template_div_click_0_listener($event) { const code_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onResultCodeClick(code_r29, $event)); });
940
- i0.ɵɵelementStart(1, "div", 140);
953
+ function MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Template(rf, ctx) { if (rf & 1) {
954
+ const _r29 = i0.ɵɵgetCurrentView();
955
+ i0.ɵɵelementStart(0, "div", 149);
956
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Template_div_click_0_listener($event) { const code_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onResultCodeClick(code_r30, $event)); });
957
+ i0.ɵɵelementStart(1, "div", 150);
941
958
  i0.ɵɵelement(2, "i");
942
959
  i0.ɵɵelementEnd();
943
- i0.ɵɵelementStart(3, "div", 141)(4, "div", 142);
960
+ i0.ɵɵelementStart(3, "div", 151)(4, "div", 152);
944
961
  i0.ɵɵtext(5);
945
962
  i0.ɵɵelementEnd();
946
- i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Conditional_6_Template, 2, 1, "div", 143);
963
+ i0.ɵɵconditionalCreate(6, MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Conditional_6_Template, 2, 1, "div", 153);
947
964
  i0.ɵɵelementEnd();
948
- i0.ɵɵconditionalCreate(7, MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Conditional_7_Template, 5, 0, "div", 144);
965
+ i0.ɵɵconditionalCreate(7, MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Conditional_7_Template, 5, 0, "div", 154);
949
966
  i0.ɵɵelementEnd();
950
967
  } if (rf & 2) {
951
- const code_r29 = ctx.$implicit;
968
+ const code_r30 = ctx.$implicit;
952
969
  const ctx_r1 = i0.ɵɵnextContext(3);
953
- i0.ɵɵclassProp("success", code_r29.IsSuccess)("failure", !code_r29.IsSuccess)("clickable", true);
970
+ i0.ɵɵclassProp("success", code_r30.IsSuccess)("failure", !code_r30.IsSuccess)("clickable", true);
954
971
  i0.ɵɵadvance(2);
955
- i0.ɵɵclassMap(code_r29.IsSuccess ? "fa-solid fa-check-circle" : "fa-solid fa-times-circle");
972
+ i0.ɵɵclassMap(code_r30.IsSuccess ? "fa-solid fa-check-circle" : "fa-solid fa-times-circle");
956
973
  i0.ɵɵadvance(3);
957
- i0.ɵɵtextInterpolate(code_r29.ResultCode);
974
+ i0.ɵɵtextInterpolate(code_r30.ResultCode);
958
975
  i0.ɵɵadvance();
959
- i0.ɵɵconditional(code_r29.Description ? 6 : -1);
976
+ i0.ɵɵconditional(code_r30.Description ? 6 : -1);
960
977
  i0.ɵɵadvance();
961
978
  i0.ɵɵconditional(ctx_r1.EditMode ? 7 : -1);
962
979
  } }
963
- function MJActionFormComponentExtended_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
964
- i0.ɵɵelementStart(0, "div", 33);
965
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_44_For_2_Template, 8, 11, "div", 138, _forTrack0);
980
+ function MJActionFormComponentExtended_Conditional_0_Conditional_46_Template(rf, ctx) { if (rf & 1) {
981
+ i0.ɵɵelementStart(0, "div", 38);
982
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_46_For_2_Template, 8, 11, "div", 148, _forTrack0);
966
983
  i0.ɵɵelementEnd();
967
984
  } if (rf & 2) {
968
985
  const ctx_r1 = i0.ɵɵnextContext(2);
969
986
  i0.ɵɵadvance();
970
987
  i0.ɵɵrepeater(ctx_r1.resultCodes);
971
988
  } }
972
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_ng_template_1_Template(rf, ctx) { if (rf & 1) {
973
- i0.ɵɵelementStart(0, "span", 55);
974
- i0.ɵɵelement(1, "i", 148);
989
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_ng_template_1_Template(rf, ctx) { if (rf & 1) {
990
+ i0.ɵɵelementStart(0, "span", 65);
991
+ i0.ɵɵelement(1, "i", 158);
975
992
  i0.ɵɵtext(2, " Execution & Monitoring ");
976
993
  i0.ɵɵelementEnd();
977
994
  } }
978
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_3_Template(rf, ctx) { if (rf & 1) {
979
- i0.ɵɵelementStart(0, "div", 29);
980
- i0.ɵɵelement(1, "i", 57);
995
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_3_Template(rf, ctx) { if (rf & 1) {
996
+ i0.ɵɵelementStart(0, "div", 31);
997
+ i0.ɵɵelement(1, "i", 67);
981
998
  i0.ɵɵtext(2, " Loading executions... ");
982
999
  i0.ɵɵelementEnd();
983
1000
  } }
984
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_4_Template(rf, ctx) { if (rf & 1) {
985
- i0.ɵɵelement(0, "mj-empty-state", 147);
1001
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1002
+ i0.ɵɵelement(0, "mj-empty-state", 157);
986
1003
  } }
987
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1004
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Conditional_5_Template(rf, ctx) { if (rf & 1) {
988
1005
  i0.ɵɵtext(0);
989
1006
  } if (rf & 2) {
990
- const execution_r32 = i0.ɵɵnextContext().$implicit;
1007
+ const execution_r33 = i0.ɵɵnextContext().$implicit;
991
1008
  const ctx_r1 = i0.ɵɵnextContext(4);
992
- i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(ctx_r1.getExecutionDuration(execution_r32)), " ");
1009
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDuration(ctx_r1.getExecutionDuration(execution_r33)), " ");
993
1010
  } }
994
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Conditional_6_Template(rf, ctx) { if (rf & 1) {
995
- i0.ɵɵelementStart(0, "span", 163);
1011
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1012
+ i0.ɵɵelementStart(0, "span", 173);
996
1013
  i0.ɵɵtext(1, "Running...");
997
1014
  i0.ɵɵelementEnd();
998
1015
  } }
999
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Template(rf, ctx) { if (rf & 1) {
1000
- const _r31 = i0.ɵɵgetCurrentView();
1001
- i0.ɵɵelementStart(0, "tr", 162)(1, "td");
1016
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Template(rf, ctx) { if (rf & 1) {
1017
+ const _r32 = i0.ɵɵgetCurrentView();
1018
+ i0.ɵɵelementStart(0, "tr", 172)(1, "td");
1002
1019
  i0.ɵɵtext(2);
1003
1020
  i0.ɵɵpipe(3, "date");
1004
1021
  i0.ɵɵelementEnd();
1005
1022
  i0.ɵɵelementStart(4, "td");
1006
- i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Conditional_5_Template, 1, 1)(6, MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Conditional_6_Template, 2, 0, "span", 163);
1023
+ i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Conditional_5_Template, 1, 1)(6, MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Conditional_6_Template, 2, 0, "span", 173);
1007
1024
  i0.ɵɵelementEnd();
1008
1025
  i0.ɵɵelementStart(7, "td");
1009
1026
  i0.ɵɵtext(8);
1010
1027
  i0.ɵɵelementEnd();
1011
- i0.ɵɵelementStart(9, "td")(10, "span", 142);
1028
+ i0.ɵɵelementStart(9, "td")(10, "span", 152);
1012
1029
  i0.ɵɵtext(11);
1013
1030
  i0.ɵɵelementEnd()();
1014
- i0.ɵɵelementStart(12, "td")(13, "button", 67);
1015
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Template_button_click_13_listener() { const execution_r32 = i0.ɵɵrestoreView(_r31).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToExecution(execution_r32.ID)); });
1016
- i0.ɵɵelement(14, "i", 164);
1031
+ i0.ɵɵelementStart(12, "td")(13, "button", 77);
1032
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Template_button_click_13_listener() { const execution_r33 = i0.ɵɵrestoreView(_r32).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToExecution(execution_r33.ID)); });
1033
+ i0.ɵɵelement(14, "i", 174);
1017
1034
  i0.ɵɵelementEnd()()();
1018
1035
  } if (rf & 2) {
1019
- const execution_r32 = ctx.$implicit;
1036
+ const execution_r33 = ctx.$implicit;
1020
1037
  const ctx_r1 = i0.ɵɵnextContext(4);
1021
- i0.ɵɵclassProp("success", ctx_r1.isExecutionSuccess(execution_r32));
1038
+ i0.ɵɵclassProp("success", ctx_r1.isExecutionSuccess(execution_r33));
1022
1039
  i0.ɵɵadvance(2);
1023
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 10, execution_r32.StartedAt, "short"));
1040
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 10, execution_r33.StartedAt, "short"));
1024
1041
  i0.ɵɵadvance(3);
1025
- i0.ɵɵconditional(execution_r32.EndedAt ? 5 : 6);
1042
+ i0.ɵɵconditional(execution_r33.EndedAt ? 5 : 6);
1026
1043
  i0.ɵɵadvance(3);
1027
- i0.ɵɵtextInterpolate(execution_r32.User);
1044
+ i0.ɵɵtextInterpolate(execution_r33.User);
1028
1045
  i0.ɵɵadvance(2);
1029
- i0.ɵɵclassProp("success", ctx_r1.isExecutionSuccess(execution_r32))("failure", !ctx_r1.isExecutionSuccess(execution_r32));
1046
+ i0.ɵɵclassProp("success", ctx_r1.isExecutionSuccess(execution_r33))("failure", !ctx_r1.isExecutionSuccess(execution_r33));
1030
1047
  i0.ɵɵadvance();
1031
- i0.ɵɵtextInterpolate1(" ", execution_r32.ResultCode, " ");
1048
+ i0.ɵɵtextInterpolate1(" ", execution_r33.ResultCode, " ");
1032
1049
  } }
1033
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1034
- i0.ɵɵelementStart(0, "div", 149)(1, "div", 150);
1035
- i0.ɵɵelement(2, "i", 151);
1036
- i0.ɵɵelementStart(3, "div", 152)(4, "div", 153);
1050
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1051
+ i0.ɵɵelementStart(0, "div", 159)(1, "div", 160);
1052
+ i0.ɵɵelement(2, "i", 161);
1053
+ i0.ɵɵelementStart(3, "div", 162)(4, "div", 163);
1037
1054
  i0.ɵɵtext(5, "Avg Duration");
1038
1055
  i0.ɵɵelementEnd();
1039
- i0.ɵɵelementStart(6, "div", 154);
1056
+ i0.ɵɵelementStart(6, "div", 164);
1040
1057
  i0.ɵɵtext(7);
1041
1058
  i0.ɵɵelementEnd()()();
1042
- i0.ɵɵelementStart(8, "div", 150);
1043
- i0.ɵɵelement(9, "i", 155);
1044
- i0.ɵɵelementStart(10, "div", 152)(11, "div", 153);
1059
+ i0.ɵɵelementStart(8, "div", 160);
1060
+ i0.ɵɵelement(9, "i", 165);
1061
+ i0.ɵɵelementStart(10, "div", 162)(11, "div", 163);
1045
1062
  i0.ɵɵtext(12, "Success Rate");
1046
1063
  i0.ɵɵelementEnd();
1047
- i0.ɵɵelementStart(13, "div", 156);
1064
+ i0.ɵɵelementStart(13, "div", 166);
1048
1065
  i0.ɵɵtext(14);
1049
1066
  i0.ɵɵelementEnd()()();
1050
- i0.ɵɵelementStart(15, "div", 150);
1051
- i0.ɵɵelement(16, "i", 157);
1052
- i0.ɵɵelementStart(17, "div", 152)(18, "div", 153);
1067
+ i0.ɵɵelementStart(15, "div", 160);
1068
+ i0.ɵɵelement(16, "i", 167);
1069
+ i0.ɵɵelementStart(17, "div", 162)(18, "div", 163);
1053
1070
  i0.ɵɵtext(19, "Total Runs");
1054
1071
  i0.ɵɵelementEnd();
1055
- i0.ɵɵelementStart(20, "div", 154);
1072
+ i0.ɵɵelementStart(20, "div", 164);
1056
1073
  i0.ɵɵtext(21);
1057
1074
  i0.ɵɵelementEnd()()()();
1058
- i0.ɵɵelementStart(22, "h3", 158);
1059
- i0.ɵɵelement(23, "i", 159);
1075
+ i0.ɵɵelementStart(22, "h3", 168);
1076
+ i0.ɵɵelement(23, "i", 169);
1060
1077
  i0.ɵɵtext(24, " Recent Executions");
1061
1078
  i0.ɵɵelementEnd();
1062
- i0.ɵɵelementStart(25, "div", 160)(26, "table")(27, "thead")(28, "tr")(29, "th");
1079
+ i0.ɵɵelementStart(25, "div", 170)(26, "table")(27, "thead")(28, "tr")(29, "th");
1063
1080
  i0.ɵɵtext(30, "Started");
1064
1081
  i0.ɵɵelementEnd();
1065
1082
  i0.ɵɵelementStart(31, "th");
@@ -1075,7 +1092,7 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_
1075
1092
  i0.ɵɵtext(38, "Actions");
1076
1093
  i0.ɵɵelementEnd()()();
1077
1094
  i0.ɵɵelementStart(39, "tbody");
1078
- i0.ɵɵrepeaterCreate(40, MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_For_41_Template, 15, 13, "tr", 161, _forTrack0);
1095
+ i0.ɵɵrepeaterCreate(40, MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_For_41_Template, 15, 13, "tr", 171, _forTrack0);
1079
1096
  i0.ɵɵelementEnd()()();
1080
1097
  } if (rf & 2) {
1081
1098
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -1092,11 +1109,11 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_
1092
1109
  i0.ɵɵadvance(19);
1093
1110
  i0.ɵɵrepeater(ctx_r1.recentExecutions);
1094
1111
  } }
1095
- function MJActionFormComponentExtended_Conditional_0_Conditional_45_Template(rf, ctx) { if (rf & 1) {
1096
- i0.ɵɵelementStart(0, "mj-accordion-panel", 26);
1097
- i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_45_ng_template_1_Template, 3, 0, "ng-template", 27);
1098
- i0.ɵɵelementStart(2, "div", 28);
1099
- i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_3_Template, 3, 0, "div", 29)(4, MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_4_Template, 1, 0, "mj-empty-state", 147)(5, MJActionFormComponentExtended_Conditional_0_Conditional_45_Conditional_5_Template, 42, 7);
1112
+ function MJActionFormComponentExtended_Conditional_0_Conditional_47_Template(rf, ctx) { if (rf & 1) {
1113
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 39);
1114
+ i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_47_ng_template_1_Template, 3, 0, "ng-template", 29);
1115
+ i0.ɵɵelementStart(2, "div", 30);
1116
+ i0.ɵɵconditionalCreate(3, MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_3_Template, 3, 0, "div", 31)(4, MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_4_Template, 1, 0, "mj-empty-state", 157)(5, MJActionFormComponentExtended_Conditional_0_Conditional_47_Conditional_5_Template, 42, 7);
1100
1117
  i0.ɵɵelementEnd()();
1101
1118
  } if (rf & 2) {
1102
1119
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -1104,100 +1121,100 @@ function MJActionFormComponentExtended_Conditional_0_Conditional_45_Template(rf,
1104
1121
  i0.ɵɵadvance(3);
1105
1122
  i0.ɵɵconditional(ctx_r1.isLoadingExecutions ? 3 : ctx_r1.recentExecutions.length === 0 ? 4 : 5);
1106
1123
  } }
1107
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1108
- i0.ɵɵelementStart(0, "span", 55);
1109
- i0.ɵɵelement(1, "i", 176);
1124
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_ng_template_1_Template(rf, ctx) { if (rf & 1) {
1125
+ i0.ɵɵelementStart(0, "span", 65);
1126
+ i0.ɵɵelement(1, "i", 186);
1110
1127
  i0.ɵɵtext(2, " Related Configuration ");
1111
1128
  i0.ɵɵelementEnd();
1112
1129
  } }
1113
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1114
- i0.ɵɵelementStart(0, "div", 29);
1115
- i0.ɵɵelement(1, "i", 57);
1130
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1131
+ i0.ɵɵelementStart(0, "div", 31);
1132
+ i0.ɵɵelement(1, "i", 67);
1116
1133
  i0.ɵɵtext(2, " Loading libraries... ");
1117
1134
  i0.ɵɵelementEnd();
1118
1135
  } }
1119
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1120
- i0.ɵɵelement(0, "mj-empty-state", 167);
1136
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1137
+ i0.ɵɵelement(0, "mj-empty-state", 177);
1121
1138
  } }
1122
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1123
- i0.ɵɵelementStart(0, "div", 181);
1139
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1140
+ i0.ɵɵelementStart(0, "div", 191);
1124
1141
  i0.ɵɵtext(1);
1125
1142
  i0.ɵɵelementEnd();
1126
1143
  } if (rf & 2) {
1127
- const ɵ$index_777_r35 = i0.ɵɵnextContext().$index;
1144
+ const ɵ$index_787_r36 = i0.ɵɵnextContext().$index;
1128
1145
  const ctx_r1 = i0.ɵɵnextContext(4);
1129
1146
  i0.ɵɵadvance();
1130
- i0.ɵɵtextInterpolate(ctx_r1.actionLibraries[ɵ$index_777_r35].ItemsUsed);
1147
+ i0.ɵɵtextInterpolate(ctx_r1.actionLibraries[ɵ$index_787_r36].ItemsUsed);
1131
1148
  } }
1132
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
1133
- const _r33 = i0.ɵɵgetCurrentView();
1134
- i0.ɵɵelementStart(0, "div", 178);
1135
- i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_For_2_Template_div_click_0_listener() { const lib_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToLibrary(lib_r34.ID)); });
1136
- i0.ɵɵelement(1, "i", 166);
1137
- i0.ɵɵelementStart(2, "div", 179)(3, "div", 180);
1149
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
1150
+ const _r34 = i0.ɵɵgetCurrentView();
1151
+ i0.ɵɵelementStart(0, "div", 188);
1152
+ i0.ɵɵlistener("click", function MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_For_2_Template_div_click_0_listener() { const lib_r35 = i0.ɵɵrestoreView(_r34).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToLibrary(lib_r35.ID)); });
1153
+ i0.ɵɵelement(1, "i", 176);
1154
+ i0.ɵɵelementStart(2, "div", 189)(3, "div", 190);
1138
1155
  i0.ɵɵtext(4);
1139
1156
  i0.ɵɵelementEnd();
1140
- i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_For_2_Conditional_5_Template, 2, 1, "div", 181);
1157
+ i0.ɵɵconditionalCreate(5, MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_For_2_Conditional_5_Template, 2, 1, "div", 191);
1141
1158
  i0.ɵɵelementEnd();
1142
- i0.ɵɵelement(6, "i", 164);
1159
+ i0.ɵɵelement(6, "i", 174);
1143
1160
  i0.ɵɵelementEnd();
1144
1161
  } if (rf & 2) {
1145
- const lib_r34 = ctx.$implicit;
1146
- const ɵ$index_777_r35 = ctx.$index;
1162
+ const lib_r35 = ctx.$implicit;
1163
+ const ɵ$index_787_r36 = ctx.$index;
1147
1164
  const ctx_r1 = i0.ɵɵnextContext(4);
1148
1165
  i0.ɵɵadvance(4);
1149
- i0.ɵɵtextInterpolate(lib_r34.Name);
1166
+ i0.ɵɵtextInterpolate(lib_r35.Name);
1150
1167
  i0.ɵɵadvance();
1151
- i0.ɵɵconditional(ctx_r1.actionLibraries[ɵ$index_777_r35].ItemsUsed ? 5 : -1);
1168
+ i0.ɵɵconditional(ctx_r1.actionLibraries[ɵ$index_787_r36].ItemsUsed ? 5 : -1);
1152
1169
  } }
1153
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1154
- i0.ɵɵelementStart(0, "div", 168);
1155
- i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_For_2_Template, 7, 2, "div", 177, _forTrack0);
1170
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1171
+ i0.ɵɵelementStart(0, "div", 178);
1172
+ i0.ɵɵrepeaterCreate(1, MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_For_2_Template, 7, 2, "div", 187, _forTrack0);
1156
1173
  i0.ɵɵelementEnd();
1157
1174
  } if (rf & 2) {
1158
1175
  const ctx_r1 = i0.ɵɵnextContext(3);
1159
1176
  i0.ɵɵadvance();
1160
1177
  i0.ɵɵrepeater(ctx_r1.libraries);
1161
1178
  } }
1162
- function MJActionFormComponentExtended_Conditional_0_Conditional_46_Template(rf, ctx) { if (rf & 1) {
1163
- i0.ɵɵelementStart(0, "mj-accordion-panel", 26);
1164
- i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_46_ng_template_1_Template, 3, 0, "ng-template", 27);
1165
- i0.ɵɵelementStart(2, "div", 28)(3, "div", 165)(4, "h3");
1166
- i0.ɵɵelement(5, "i", 166);
1179
+ function MJActionFormComponentExtended_Conditional_0_Conditional_48_Template(rf, ctx) { if (rf & 1) {
1180
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 40);
1181
+ i0.ɵɵtemplate(1, MJActionFormComponentExtended_Conditional_0_Conditional_48_ng_template_1_Template, 3, 0, "ng-template", 29);
1182
+ i0.ɵɵelementStart(2, "div", 30)(3, "div", 175)(4, "h3");
1183
+ i0.ɵɵelement(5, "i", 176);
1167
1184
  i0.ɵɵtext(6, " Libraries");
1168
1185
  i0.ɵɵelementEnd();
1169
- i0.ɵɵconditionalCreate(7, MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_7_Template, 3, 0, "div", 29)(8, MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_8_Template, 1, 0, "mj-empty-state", 167)(9, MJActionFormComponentExtended_Conditional_0_Conditional_46_Conditional_9_Template, 3, 0, "div", 168);
1186
+ i0.ɵɵconditionalCreate(7, MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_7_Template, 3, 0, "div", 31)(8, MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_8_Template, 1, 0, "mj-empty-state", 177)(9, MJActionFormComponentExtended_Conditional_0_Conditional_48_Conditional_9_Template, 3, 0, "div", 178);
1170
1187
  i0.ɵɵelementEnd();
1171
- i0.ɵɵelementStart(10, "div", 169)(11, "div", 170);
1172
- i0.ɵɵelement(12, "i", 171);
1188
+ i0.ɵɵelementStart(10, "div", 179)(11, "div", 180);
1189
+ i0.ɵɵelement(12, "i", 181);
1173
1190
  i0.ɵɵelementStart(13, "span");
1174
1191
  i0.ɵɵtext(14, "Authorizations");
1175
1192
  i0.ɵɵelementEnd();
1176
- i0.ɵɵelementStart(15, "span", 172);
1193
+ i0.ɵɵelementStart(15, "span", 182);
1177
1194
  i0.ɵɵtext(16, "View");
1178
1195
  i0.ɵɵelementEnd()();
1179
- i0.ɵɵelementStart(17, "div", 170);
1180
- i0.ɵɵelement(18, "i", 173);
1196
+ i0.ɵɵelementStart(17, "div", 180);
1197
+ i0.ɵɵelement(18, "i", 183);
1181
1198
  i0.ɵɵelementStart(19, "span");
1182
1199
  i0.ɵɵtext(20, "Contexts");
1183
1200
  i0.ɵɵelementEnd();
1184
- i0.ɵɵelementStart(21, "span", 172);
1201
+ i0.ɵɵelementStart(21, "span", 182);
1185
1202
  i0.ɵɵtext(22, "View");
1186
1203
  i0.ɵɵelementEnd()();
1187
- i0.ɵɵelementStart(23, "div", 170);
1188
- i0.ɵɵelement(24, "i", 174);
1204
+ i0.ɵɵelementStart(23, "div", 180);
1205
+ i0.ɵɵelement(24, "i", 184);
1189
1206
  i0.ɵɵelementStart(25, "span");
1190
1207
  i0.ɵɵtext(26, "Scheduled Actions");
1191
1208
  i0.ɵɵelementEnd();
1192
- i0.ɵɵelementStart(27, "span", 172);
1209
+ i0.ɵɵelementStart(27, "span", 182);
1193
1210
  i0.ɵɵtext(28, "View");
1194
1211
  i0.ɵɵelementEnd()();
1195
- i0.ɵɵelementStart(29, "div", 170);
1196
- i0.ɵɵelement(30, "i", 175);
1212
+ i0.ɵɵelementStart(29, "div", 180);
1213
+ i0.ɵɵelement(30, "i", 185);
1197
1214
  i0.ɵɵelementStart(31, "span");
1198
1215
  i0.ɵɵtext(32, "Entity Actions");
1199
1216
  i0.ɵɵelementEnd();
1200
- i0.ɵɵelementStart(33, "span", 172);
1217
+ i0.ɵɵelementStart(33, "span", 182);
1201
1218
  i0.ɵɵtext(34, "View");
1202
1219
  i0.ɵɵelementEnd()()()()();
1203
1220
  } if (rf & 2) {
@@ -1234,27 +1251,33 @@ function MJActionFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
1234
1251
  i0.ɵɵconditionalCreate(27, MJActionFormComponentExtended_Conditional_0_Conditional_27_Template, 3, 0, "button", 23);
1235
1252
  i0.ɵɵelementEnd();
1236
1253
  i0.ɵɵconditionalCreate(28, MJActionFormComponentExtended_Conditional_0_Conditional_28_Template, 2, 0, "div", 24);
1237
- i0.ɵɵelementEnd()()();
1238
- i0.ɵɵelementStart(29, "div", 25)(30, "mj-accordion-panel", 26);
1239
- i0.ɵɵtemplate(31, MJActionFormComponentExtended_Conditional_0_ng_template_31_Template, 4, 1, "ng-template", 27);
1240
- i0.ɵɵelementStart(32, "div", 28);
1241
- i0.ɵɵconditionalCreate(33, MJActionFormComponentExtended_Conditional_0_Conditional_33_Template, 3, 0, "div", 29)(34, MJActionFormComponentExtended_Conditional_0_Conditional_34_Template, 1, 1, "mj-empty-state", 30)(35, MJActionFormComponentExtended_Conditional_0_Conditional_35_Template, 16, 6);
1242
1254
  i0.ɵɵelementEnd()();
1243
- i0.ɵɵconditionalCreate(36, MJActionFormComponentExtended_Conditional_0_Conditional_36_Template, 17, 9, "mj-accordion-panel", 26);
1244
- i0.ɵɵconditionalCreate(37, MJActionFormComponentExtended_Conditional_0_Conditional_37_Template, 13, 4, "mj-accordion-panel", 26);
1245
- i0.ɵɵelementStart(38, "mj-accordion-panel", 26);
1246
- i0.ɵɵtemplate(39, MJActionFormComponentExtended_Conditional_0_ng_template_39_Template, 4, 1, "ng-template", 27);
1247
- i0.ɵɵelementStart(40, "div", 28);
1248
- i0.ɵɵconditionalCreate(41, MJActionFormComponentExtended_Conditional_0_Conditional_41_Template, 4, 0, "div", 31);
1249
- i0.ɵɵconditionalCreate(42, MJActionFormComponentExtended_Conditional_0_Conditional_42_Template, 3, 0, "div", 29)(43, MJActionFormComponentExtended_Conditional_0_Conditional_43_Template, 1, 1, "mj-empty-state", 32)(44, MJActionFormComponentExtended_Conditional_0_Conditional_44_Template, 3, 0, "div", 33);
1255
+ i0.ɵɵconditionalCreate(29, MJActionFormComponentExtended_Conditional_0_Conditional_29_Template, 4, 2, "button", 25);
1256
+ i0.ɵɵelementEnd();
1257
+ i0.ɵɵelementStart(30, "div", 26)(31, "mj-accordion-sections", 27);
1258
+ i0.ɵɵlistener("ActiveKeyChange", function MJActionFormComponentExtended_Conditional_0_Template_mj_accordion_sections_ActiveKeyChange_31_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Phone.Pick($event)); });
1259
+ i0.ɵɵelementStart(32, "mj-accordion-panel", 28);
1260
+ i0.ɵɵtemplate(33, MJActionFormComponentExtended_Conditional_0_ng_template_33_Template, 4, 1, "ng-template", 29);
1261
+ i0.ɵɵelementStart(34, "div", 30);
1262
+ i0.ɵɵconditionalCreate(35, MJActionFormComponentExtended_Conditional_0_Conditional_35_Template, 3, 0, "div", 31)(36, MJActionFormComponentExtended_Conditional_0_Conditional_36_Template, 1, 1, "mj-empty-state", 32)(37, MJActionFormComponentExtended_Conditional_0_Conditional_37_Template, 16, 6);
1250
1263
  i0.ɵɵelementEnd()();
1251
- i0.ɵɵconditionalCreate(45, MJActionFormComponentExtended_Conditional_0_Conditional_45_Template, 6, 2, "mj-accordion-panel", 26);
1252
- i0.ɵɵconditionalCreate(46, MJActionFormComponentExtended_Conditional_0_Conditional_46_Template, 35, 2, "mj-accordion-panel", 26);
1253
- i0.ɵɵelementEnd()()()();
1264
+ i0.ɵɵconditionalCreate(38, MJActionFormComponentExtended_Conditional_0_Conditional_38_Template, 17, 9, "mj-accordion-panel", 33);
1265
+ i0.ɵɵconditionalCreate(39, MJActionFormComponentExtended_Conditional_0_Conditional_39_Template, 13, 4, "mj-accordion-panel", 34);
1266
+ i0.ɵɵelementStart(40, "mj-accordion-panel", 35);
1267
+ i0.ɵɵtemplate(41, MJActionFormComponentExtended_Conditional_0_ng_template_41_Template, 4, 1, "ng-template", 29);
1268
+ i0.ɵɵelementStart(42, "div", 30);
1269
+ i0.ɵɵconditionalCreate(43, MJActionFormComponentExtended_Conditional_0_Conditional_43_Template, 4, 0, "div", 36);
1270
+ i0.ɵɵconditionalCreate(44, MJActionFormComponentExtended_Conditional_0_Conditional_44_Template, 3, 0, "div", 31)(45, MJActionFormComponentExtended_Conditional_0_Conditional_45_Template, 1, 1, "mj-empty-state", 37)(46, MJActionFormComponentExtended_Conditional_0_Conditional_46_Template, 3, 0, "div", 38);
1271
+ i0.ɵɵelementEnd()();
1272
+ i0.ɵɵconditionalCreate(47, MJActionFormComponentExtended_Conditional_0_Conditional_47_Template, 6, 2, "mj-accordion-panel", 39);
1273
+ i0.ɵɵconditionalCreate(48, MJActionFormComponentExtended_Conditional_0_Conditional_48_Template, 35, 2, "mj-accordion-panel", 40);
1274
+ i0.ɵɵelementEnd()()()()();
1254
1275
  } if (rf & 2) {
1255
1276
  const ctx_r1 = i0.ɵɵnextContext();
1256
1277
  i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1)("ToolbarConfig", ctx_r1.toolbarConfig)("WidthMode", "full-width");
1257
- i0.ɵɵadvance(8);
1278
+ i0.ɵɵadvance(4);
1279
+ i0.ɵɵclassProp("hero-view", !ctx_r1.EditMode)("hero-compact", !ctx_r1.EditMode && !ctx_r1.HeroDetailsOpen);
1280
+ i0.ɵɵadvance(4);
1258
1281
  i0.ɵɵclassMap(ctx_r1.getActionIcon());
1259
1282
  i0.ɵɵstyleProp("color", ctx_r1.getTypeColor());
1260
1283
  i0.ɵɵadvance();
@@ -1277,28 +1300,36 @@ function MJActionFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf
1277
1300
  i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.record.Type === "Generated" ? 27 : -1);
1278
1301
  i0.ɵɵadvance();
1279
1302
  i0.ɵɵconditional(!ctx_r1.EditMode && ctx_r1.record.Status !== "Active" && ctx_r1.record.ID ? 28 : -1);
1303
+ i0.ɵɵadvance();
1304
+ i0.ɵɵconditional(!ctx_r1.EditMode && ctx_r1.HeroSummary ? 29 : -1);
1280
1305
  i0.ɵɵadvance(2);
1281
- i0.ɵɵproperty("Expanded", true);
1306
+ i0.ɵɵproperty("Enabled", ctx_r1.Phone.IsPhone)("ActiveKey", ctx_r1.Phone.Section);
1307
+ i0.ɵɵadvance();
1308
+ i0.ɵɵproperty("SectionCount", ctx_r1.ActionParams.length)("Expanded", true);
1282
1309
  i0.ɵɵadvance(3);
1283
- i0.ɵɵconditional(ctx_r1.isLoadingParams ? 33 : ctx_r1.actionParams.length === 0 ? 34 : 35);
1310
+ i0.ɵɵconditional(ctx_r1.isLoadingParams ? 35 : ctx_r1.actionParams.length === 0 ? 36 : 37);
1284
1311
  i0.ɵɵadvance(3);
1285
- i0.ɵɵconditional(ctx_r1.record.Type === "Generated" ? 36 : -1);
1312
+ i0.ɵɵconditional(ctx_r1.record.Type === "Generated" ? 38 : -1);
1286
1313
  i0.ɵɵadvance();
1287
- i0.ɵɵconditional(ctx_r1.isRuntimeAction ? 37 : -1);
1314
+ i0.ɵɵconditional(ctx_r1.isRuntimeAction ? 39 : -1);
1288
1315
  i0.ɵɵadvance();
1289
- i0.ɵɵproperty("Expanded", ctx_r1.expandedSections.resultCodes);
1316
+ i0.ɵɵproperty("SectionCount", ctx_r1.ResultCodes.length)("Expanded", ctx_r1.expandedSections.resultCodes);
1290
1317
  i0.ɵɵadvance(3);
1291
- i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.record.IsSaved ? 41 : -1);
1318
+ i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.record.IsSaved ? 43 : -1);
1292
1319
  i0.ɵɵadvance();
1293
- i0.ɵɵconditional(ctx_r1.isLoadingResultCodes ? 42 : ctx_r1.resultCodes.length === 0 ? 43 : 44);
1320
+ i0.ɵɵconditional(ctx_r1.isLoadingResultCodes ? 44 : ctx_r1.resultCodes.length === 0 ? 45 : 46);
1294
1321
  i0.ɵɵadvance(3);
1295
- i0.ɵɵconditional(ctx_r1.record.IsSaved ? 45 : -1);
1322
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 47 : -1);
1296
1323
  i0.ɵɵadvance();
1297
- i0.ɵɵconditional(ctx_r1.record.IsSaved ? 46 : -1);
1324
+ i0.ɵɵconditional(ctx_r1.record.IsSaved ? 48 : -1);
1298
1325
  } }
1299
1326
  let MJActionFormComponentExtended = class MJActionFormComponentExtended extends MJActionFormComponent {
1300
1327
  constructor() {
1301
1328
  super(...arguments);
1329
+ /** Phone width shows the stacked accordions as sections behind one picker (design call 7A). */
1330
+ this.Phone = new PhoneSectionsState(() => this.cdr.markForCheck());
1331
+ /** Phone hero (6A): whether the summary line is expanded to show the rest of the hero. */
1332
+ this.HeroDetailsOpen = false;
1302
1333
  // This form has a fully custom layout (header panel + accordion
1303
1334
  // sections we manage ourselves), so the toolbar's section-search,
1304
1335
  // expand/collapse, manage-sections, and width-toggle widgets don't
@@ -1349,6 +1380,24 @@ let MJActionFormComponentExtended = class MJActionFormComponentExtended extends
1349
1380
  this.viewContainerRef = inject(ViewContainerRef);
1350
1381
  this.sharedService = inject(SharedService);
1351
1382
  }
1383
+ ngOnDestroy() {
1384
+ super.ngOnDestroy();
1385
+ this.Phone.Stop();
1386
+ }
1387
+ /** Toggles the phone hero between its compact identity row and the full hero. */
1388
+ ToggleHeroDetails() {
1389
+ this.HeroDetailsOpen = !this.HeroDetailsOpen;
1390
+ this.cdr.markForCheck();
1391
+ }
1392
+ /** The phone hero's one-line summary of what the compact hero leaves out. */
1393
+ get HeroSummary() {
1394
+ return JoinHeroSummary([
1395
+ this.category?.Name,
1396
+ this.record.Type,
1397
+ CountLabel(this.ActionParams.length, 'param'),
1398
+ this.HasCodeApproval && this.record.CodeApprovalStatus ? `Code ${this.record.CodeApprovalStatus.toLowerCase()}` : null,
1399
+ ]);
1400
+ }
1352
1401
  /** @deprecated Use {@link ToolbarConfig}. */
1353
1402
  get toolbarConfig() {
1354
1403
  return this.ToolbarConfig;
@@ -2561,8 +2610,8 @@ let MJActionFormComponentExtended = class MJActionFormComponentExtended extends
2561
2610
  return this.DeleteParameter(param);
2562
2611
  }
2563
2612
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJActionFormComponentExtended_BaseFactory; return function MJActionFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJActionFormComponentExtended_BaseFactory || (ɵMJActionFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJActionFormComponentExtended)))(__ngFactoryType__ || MJActionFormComponentExtended); }; })(); }
2564
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJActionFormComponentExtended, selectors: [["mj-action-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 4, consts: [["form", "ngForm"], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Close", "Action", "ActionParams", "IsOpen"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "action-main-area", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [1, "action-header", 2, "flex-shrink", "0", "padding", "20px", "background", "var(--mj-bg-surface-card)", "border-bottom", "2px solid var(--mj-border-default)"], [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"], [2, "font-size", "1.4em"], ["type", "text", "name", "actionName", "placeholder", "Enter action name...", 1, "mj-input", 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"], ["name", "actionDescription", "placeholder", "Enter action description...", 1, "mj-textarea", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [2, "margin", "0 0 12px 0", "color", "var(--mj-text-muted)", "font-size", "0.9em", "line-height", "1.4"], [1, "quick-config", 2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [1, "config-item", 2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-cube", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-weight", "500"], [1, "action-buttons", 2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], [2, "display", "flex", "gap", "8px"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Open Run Harness", 3, "disabled"], ["mjButton", "", "variant", "outline", "size", "md", "title", "Regenerate Code"], [2, "font-size", "0.75em", "color", "var(--mj-status-error)", "text-align", "right"], [1, "configuration-sections", 2, "flex", "1", "background", "var(--mj-bg-surface-card)", "border-top", "2px solid var(--mj-border-default)", "padding", "16px", "min-height", "0"], [2, "margin-bottom", "12px", 3, "Expanded"], ["mjAccordionTitle", ""], [2, "padding", "16px"], [1, "loading-state"], ["Size", "compact", "Icon", "fa-solid fa-sliders", "Title", "No parameters defined", 3, "Message"], [2, "display", "flex", "justify-content", "flex-end", "margin-bottom", "12px"], ["Size", "compact", "Icon", "fa-solid fa-flag-checkered", "Title", "No result codes defined", 3, "Message"], [1, "result-codes-grid"], ["type", "text", "name", "actionName", "placeholder", "Enter action name...", 1, "mj-input", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "var(--mj-text-secondary)", "font-weight", "600", "flex", "1"], [1, "status-chip"], [1, "status-chip", 3, "title"], [2, "margin-right", "4px"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "var(--mj-text-secondary)", "font-size", "0.9em"], ["name", "actionStatus", "TextField", "text", "ValueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [2, "color", "var(--mj-status-error)"], ["name", "actionType", "TextField", "text", "ValueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["name", "categoryID", "Placeholder", "Select category...", 2, "width", "200px", 3, "ngModelChange", "ngModel", "Data"], ["name", "codeApprovalStatus", "TextField", "text", "ValueField", "value", 2, "width", "160px", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["name", "actionDescription", "placeholder", "Enter action description...", 1, "mj-textarea", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-folder", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-weight", "500", "cursor", "pointer", 3, "click"], [1, "fa-solid", "fa-external-link", 2, "font-size", "0.75em", "margin-left", "4px"], [2, "font-weight", "500"], [1, "fa-solid", "fa-sliders", 2, "color", "var(--mj-text-muted)"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Open Run Harness", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["mjButton", "", "variant", "outline", "size", "md", "title", "Regenerate Code", 3, "click"], [1, "fa-solid", "fa-robot"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [2, "background", "var(--mj-status-info)", "color", "var(--mj-text-inverse)", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "params-section"], [1, "params-header"], [1, "fa-solid", "fa-sign-in-alt"], ["mjButton", "", "variant", "flat", "size", "sm"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No input parameters defined"], [1, "params-grid"], [1, "params-section", 2, "margin-top", "24px"], [1, "fa-solid", "fa-sign-out-alt"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No output parameters defined"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "param-card", 3, "required", "clickable"], [1, "param-card", 3, "click"], [1, "param-header"], [1, "param-name"], [1, "param-badges"], [1, "required-badge"], [1, "array-badge"], [1, "param-details"], [1, "param-type"], [1, "param-description"], [1, "param-default"], ["title", "Edit parameter", 1, "param-edit-btn", 3, "click"], [1, "fa-solid", "fa-edit"], ["title", "Delete parameter", 1, "param-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "default-label"], [1, "param-card", 3, "clickable"], [1, "generation-panel"], [1, "code-editor-section"], [1, "code-toolbar"], [1, "fa-solid", "fa-file-code"], [1, "code-actions"], [1, "fa-solid", "fa-copy"], ["name", "actionCode", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "code-comments"], [1, "approval-comments"], [1, "fa-solid", "fa-code", 2, "color", "var(--mj-text-muted)"], [2, "background", "var(--mj-status-warning)", "color", "var(--mj-color-warning-800)", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [1, "fa-solid", "fa-lock"], [1, "prompt-section"], ["name", "userPrompt", "placeholder", "Describe what this action should do...", 1, "mj-textarea", 2, "width", "100%", "min-height", "120px", 3, "ngModelChange", "ngModel", "rows"], [1, "comments-section"], ["name", "userComments", "placeholder", "Internal notes...", 1, "mj-textarea", 2, "width", "100%", 3, "ngModelChange", "ngModel", "rows"], [1, "generation-controls"], ["name", "codeLocked", 3, "ngModelChange", "ngModel"], [2, "margin-left", "8px"], [1, "fa-solid", "fa-comment"], ["name", "codeApprovalComments", "placeholder", "Explain why the code was rejected...", 1, "mj-textarea", 2, "width", "100%", 3, "ngModelChange", "ngModel", "rows"], ["Variant", "error"], [2, "font-weight", "600", "margin-bottom", "6px", "color", "var(--mj-text-primary)"], [1, "fa-solid", "fa-code", 2, "margin-right", "6px", "color", "var(--mj-text-muted)"], [2, "background", "var(--mj-bg-surface-sunken)", "color", "var(--mj-text-primary)", "padding", "12px", "border-radius", "4px", "overflow-x", "auto", "max-height", "400px", "font-family", "'SF Mono', Monaco, Consolas, monospace", "font-size", "0.85em", "margin", "0"], ["Variant", "warning", "Title", "Approval required before this Runtime action can execute.", 1, "approval-required-alert"], [1, "fa-solid", "fa-wand-magic-sparkles", 2, "color", "var(--mj-status-warning)"], [2, "color", "var(--mj-text-muted)", "font-weight", "400", "font-size", "0.85em"], ["Variant", "warning", "Title", "Wildcard permissions enabled"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(280px, 1fr))", "gap", "16px", "margin-bottom", "20px"], [2, "border", "1px solid var(--mj-border-default)", "border-radius", "6px", "padding", "12px", "background", "var(--mj-bg-surface-card)"], [2, "font-weight", "600", "margin-bottom", "8px", "color", "var(--mj-text-primary)"], [1, "fa-solid", "fa-database", 2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [2, "color", "var(--mj-text-muted)", "font-style", "italic"], [2, "display", "flex", "flex-direction", "column", "gap", "4px"], [1, "fa-solid", "fa-bolt", 2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-robot", 2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "16px", "margin-bottom", "16px"], [1, "fa-solid", "fa-gauge-high", 2, "margin-right", "6px", "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-size", "0.9em"], [1, "fa-solid", "fa-book", 2, "margin-right", "6px", "color", "var(--mj-text-muted)"], [2, "display", "flex", "flex-wrap", "wrap", "gap", "4px"], [2, "background", "var(--mj-bg-surface-sunken)", "padding", "4px 8px", "border-radius", "4px", "font-size", "0.9em", "color", "var(--mj-text-primary)"], [2, "background", "var(--mj-bg-surface-sunken)", "padding", "2px 8px", "border-radius", "10px", "font-size", "0.85em"], [2, "color", "var(--mj-text-secondary)", "font-size", "0.9em", "margin-bottom", "12px"], [1, "mj-button", "mj-button-primary", 3, "click"], [1, "fa-solid", "fa-check"], [1, "mj-button", 3, "click"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-flag-checkered", 2, "color", "var(--mj-text-muted)"], [2, "background", "var(--mj-status-success)", "color", "var(--mj-text-inverse)", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "result-code-card", 3, "success", "failure", "clickable"], [1, "result-code-card", 3, "click"], [1, "result-icon"], [1, "result-content"], [1, "result-code"], [1, "result-description"], [1, "result-actions"], ["title", "Edit result code", 1, "result-edit-btn", 3, "click"], ["title", "Delete result code", 1, "result-delete-btn", 3, "click"], ["Size", "compact", "Icon", "fa-solid fa-chart-line", "Title", "No executions yet"], [1, "fa-solid", "fa-chart-line", 2, "color", "var(--mj-text-muted)"], [1, "execution-stats-row"], [1, "stat-box"], [1, "fa-solid", "fa-tachometer-alt"], [1, "stat-info"], [1, "stat-label", 2, "color", "var(--mj-text-primary)"], [1, "stat-value", 2, "color", "var(--mj-text-primary)"], [1, "fa-solid", "fa-check-circle"], [1, "stat-value", 2, "font-weight", "600"], [1, "fa-solid", "fa-play-circle"], [2, "margin-top", "24px"], [1, "fa-solid", "fa-history"], [1, "executions-table"], [1, "execution-row", 3, "success"], [1, "execution-row"], [1, "running"], [1, "fa-solid", "fa-external-link"], [1, "config-subsection"], [1, "fa-solid", "fa-book"], ["Size", "compact", "Icon", "fa-solid fa-book", "Title", "No libraries configured"], [1, "library-cards"], [1, "related-entities-grid"], [1, "related-entity-link"], [1, "fa-solid", "fa-shield-alt"], [1, "entity-count"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-cube"], [1, "fa-solid", "fa-cogs", 2, "color", "var(--mj-text-muted)"], [1, "library-card"], [1, "library-card", 3, "click"], [1, "library-info"], [1, "library-name"], [1, "library-items"]], template: function MJActionFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2565
- i0.ɵɵconditionalCreate(0, MJActionFormComponentExtended_Conditional_0_Template, 47, 27, "mj-record-form-container", 1);
2613
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJActionFormComponentExtended, selectors: [["mj-action-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 4, consts: [["form", "ngForm"], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Close", "Action", "ActionParams", "IsOpen"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "action-main-area", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [1, "action-header", "phone-hero", 2, "flex-shrink", "0", "padding", "20px", "background", "var(--mj-bg-surface-card)", "border-bottom", "2px solid var(--mj-border-default)"], [1, "hero-header-row"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [2, "font-size", "1.4em"], ["type", "text", "name", "actionName", "placeholder", "Enter action name...", 1, "mj-input", 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"], ["name", "actionDescription", "placeholder", "Enter action description...", 1, "mj-textarea", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [1, "phone-hero-detail", 2, "margin", "0 0 12px 0", "color", "var(--mj-text-muted)", "font-size", "0.9em", "line-height", "1.4"], [1, "quick-config", "phone-hero-detail", 2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [1, "config-item", 2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-cube", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-weight", "500"], [1, "action-buttons"], [2, "display", "flex", "gap", "8px"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Open Run Harness", 1, "phone-hero-run", 3, "disabled"], ["mjButton", "", "variant", "outline", "size", "md", "title", "Regenerate Code"], [2, "font-size", "0.75em", "color", "var(--mj-status-error)", "text-align", "right"], ["type", "button", 1, "phone-hero-summary"], [1, "configuration-sections", 2, "flex", "1", "background", "var(--mj-bg-surface-card)", "border-top", "2px solid var(--mj-border-default)", "padding", "16px", "min-height", "0"], [3, "ActiveKeyChange", "Enabled", "ActiveKey"], ["SectionKey", "parameters", "SectionTitle", "Parameters", "SectionIcon", "fa-solid fa-sliders", 2, "margin-bottom", "12px", 3, "SectionCount", "Expanded"], ["mjAccordionTitle", ""], [1, "phone-flush-x", 2, "padding", "16px"], [1, "loading-state"], ["Size", "compact", "Icon", "fa-solid fa-sliders", "Title", "No parameters defined", 3, "Message"], ["SectionKey", "code", "SectionTitle", "Code & Generation", "SectionIcon", "fa-solid fa-code", 2, "margin-bottom", "12px", 3, "Expanded"], ["SectionKey", "runtime", "SectionTitle", "Runtime Configuration & Permissions", "SectionIcon", "fa-solid fa-wand-magic-sparkles", 2, "margin-bottom", "12px", 3, "Expanded"], ["SectionKey", "result-codes", "SectionTitle", "Result Codes", "SectionIcon", "fa-solid fa-flag-checkered", 2, "margin-bottom", "12px", 3, "SectionCount", "Expanded"], [2, "display", "flex", "justify-content", "flex-end", "margin-bottom", "12px"], ["Size", "compact", "Icon", "fa-solid fa-flag-checkered", "Title", "No result codes defined", 3, "Message"], [1, "result-codes-grid"], ["SectionKey", "execution", "SectionTitle", "Execution & Monitoring", "SectionIcon", "fa-solid fa-chart-line", 2, "margin-bottom", "12px", 3, "Expanded"], ["SectionKey", "related", "SectionTitle", "Related Configuration", "SectionIcon", "fa-solid fa-cogs", 2, "margin-bottom", "12px", 3, "Expanded"], ["type", "text", "name", "actionName", "placeholder", "Enter action name...", 1, "mj-input", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "var(--mj-text-secondary)", "font-weight", "600", "flex", "1"], [1, "status-chip"], [1, "status-chip", "phone-hero-detail", 3, "title"], [2, "margin-right", "4px"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "var(--mj-text-secondary)", "font-size", "0.9em"], ["name", "actionStatus", "TextField", "text", "ValueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [2, "color", "var(--mj-status-error)"], ["name", "actionType", "TextField", "text", "ValueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["name", "categoryID", "Placeholder", "Select category...", 2, "width", "200px", 3, "ngModelChange", "ngModel", "Data"], ["name", "codeApprovalStatus", "TextField", "text", "ValueField", "value", 2, "width", "160px", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], ["name", "actionDescription", "placeholder", "Enter action description...", 1, "mj-textarea", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-folder", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-weight", "500", "cursor", "pointer", 3, "click"], [1, "fa-solid", "fa-external-link", 2, "font-size", "0.75em", "margin-left", "4px"], [2, "font-weight", "500"], [1, "fa-solid", "fa-sliders", 2, "color", "var(--mj-text-muted)"], ["mjButton", "", "variant", "primary", "size", "lg", "title", "Open Run Harness", 1, "phone-hero-run", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], ["mjButton", "", "variant", "outline", "size", "md", "title", "Regenerate Code", 3, "click"], [1, "fa-solid", "fa-robot"], ["type", "button", 1, "phone-hero-summary", 3, "click"], [1, "phone-hero-summary-text"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [2, "background", "var(--mj-status-info)", "color", "var(--mj-text-inverse)", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "params-section"], [1, "params-header"], [1, "fa-solid", "fa-sign-in-alt"], ["mjButton", "", "variant", "flat", "size", "sm"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No input parameters defined"], [1, "params-grid"], [1, "params-section", 2, "margin-top", "24px"], [1, "fa-solid", "fa-sign-out-alt"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No output parameters defined"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "param-card", 3, "required", "clickable"], [1, "param-card", 3, "click"], [1, "param-header"], [1, "param-name"], [1, "param-badges"], [1, "required-badge"], [1, "array-badge"], [1, "param-details"], [1, "param-type"], [1, "param-description"], [1, "param-default"], ["title", "Edit parameter", 1, "param-edit-btn", 3, "click"], [1, "fa-solid", "fa-edit"], ["title", "Delete parameter", 1, "param-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "default-label"], [1, "param-card", 3, "clickable"], [1, "generation-panel"], [1, "code-editor-section"], [1, "code-toolbar"], [1, "fa-solid", "fa-file-code"], [1, "code-actions"], [1, "fa-solid", "fa-copy"], ["name", "actionCode", 2, "height", "400px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "code-comments"], [1, "approval-comments"], [1, "fa-solid", "fa-code", 2, "color", "var(--mj-text-muted)"], [2, "background", "var(--mj-status-warning)", "color", "var(--mj-color-warning-800)", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [1, "fa-solid", "fa-lock"], [1, "prompt-section"], ["name", "userPrompt", "placeholder", "Describe what this action should do...", 1, "mj-textarea", 2, "width", "100%", "min-height", "120px", 3, "ngModelChange", "ngModel", "rows"], [1, "comments-section"], ["name", "userComments", "placeholder", "Internal notes...", 1, "mj-textarea", 2, "width", "100%", 3, "ngModelChange", "ngModel", "rows"], [1, "generation-controls"], ["name", "codeLocked", 3, "ngModelChange", "ngModel"], [2, "margin-left", "8px"], [1, "fa-solid", "fa-comment"], ["name", "codeApprovalComments", "placeholder", "Explain why the code was rejected...", 1, "mj-textarea", 2, "width", "100%", 3, "ngModelChange", "ngModel", "rows"], ["Variant", "error"], [2, "font-weight", "600", "margin-bottom", "6px", "color", "var(--mj-text-primary)"], [1, "fa-solid", "fa-code", 2, "margin-right", "6px", "color", "var(--mj-text-muted)"], [2, "background", "var(--mj-bg-surface-sunken)", "color", "var(--mj-text-primary)", "padding", "12px", "border-radius", "4px", "overflow-x", "auto", "max-height", "400px", "font-family", "'SF Mono', Monaco, Consolas, monospace", "font-size", "0.85em", "margin", "0"], ["Variant", "warning", "Title", "Approval required before this Runtime action can execute.", 1, "approval-required-alert"], [1, "fa-solid", "fa-wand-magic-sparkles", 2, "color", "var(--mj-status-warning)"], [2, "color", "var(--mj-text-muted)", "font-weight", "400", "font-size", "0.85em"], ["Variant", "warning", "Title", "Wildcard permissions enabled"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(280px, 1fr))", "gap", "16px", "margin-bottom", "20px"], [2, "border", "1px solid var(--mj-border-default)", "border-radius", "6px", "padding", "12px", "background", "var(--mj-bg-surface-card)"], [2, "font-weight", "600", "margin-bottom", "8px", "color", "var(--mj-text-primary)"], [1, "fa-solid", "fa-database", 2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [2, "color", "var(--mj-text-muted)", "font-style", "italic"], [2, "display", "flex", "flex-direction", "column", "gap", "4px"], [1, "fa-solid", "fa-bolt", 2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-robot", 2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "16px", "margin-bottom", "16px"], [1, "fa-solid", "fa-gauge-high", 2, "margin-right", "6px", "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-size", "0.9em"], [1, "fa-solid", "fa-book", 2, "margin-right", "6px", "color", "var(--mj-text-muted)"], [2, "display", "flex", "flex-wrap", "wrap", "gap", "4px"], [2, "background", "var(--mj-bg-surface-sunken)", "padding", "4px 8px", "border-radius", "4px", "font-size", "0.9em", "color", "var(--mj-text-primary)"], [2, "background", "var(--mj-bg-surface-sunken)", "padding", "2px 8px", "border-radius", "10px", "font-size", "0.85em"], [2, "color", "var(--mj-text-secondary)", "font-size", "0.9em", "margin-bottom", "12px"], [1, "mj-button", "mj-button-primary", 3, "click"], [1, "fa-solid", "fa-check"], [1, "mj-button", 3, "click"], [1, "fa-solid", "fa-ban"], [1, "fa-solid", "fa-flag-checkered", 2, "color", "var(--mj-text-muted)"], [2, "background", "var(--mj-status-success)", "color", "var(--mj-text-inverse)", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "result-code-card", 3, "success", "failure", "clickable"], [1, "result-code-card", 3, "click"], [1, "result-icon"], [1, "result-content"], [1, "result-code"], [1, "result-description"], [1, "result-actions"], ["title", "Edit result code", 1, "result-edit-btn", 3, "click"], ["title", "Delete result code", 1, "result-delete-btn", 3, "click"], ["Size", "compact", "Icon", "fa-solid fa-chart-line", "Title", "No executions yet"], [1, "fa-solid", "fa-chart-line", 2, "color", "var(--mj-text-muted)"], [1, "execution-stats-row"], [1, "stat-box"], [1, "fa-solid", "fa-tachometer-alt"], [1, "stat-info"], [1, "stat-label", 2, "color", "var(--mj-text-primary)"], [1, "stat-value", 2, "color", "var(--mj-text-primary)"], [1, "fa-solid", "fa-check-circle"], [1, "stat-value", 2, "font-weight", "600"], [1, "fa-solid", "fa-play-circle"], [2, "margin-top", "24px"], [1, "fa-solid", "fa-history"], [1, "executions-table"], [1, "execution-row", 3, "success"], [1, "execution-row"], [1, "running"], [1, "fa-solid", "fa-external-link"], [1, "config-subsection"], [1, "fa-solid", "fa-book"], ["Size", "compact", "Icon", "fa-solid fa-book", "Title", "No libraries configured"], [1, "library-cards"], [1, "related-entities-grid"], [1, "related-entity-link"], [1, "fa-solid", "fa-shield-alt"], [1, "entity-count"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-cube"], [1, "fa-solid", "fa-cogs", 2, "color", "var(--mj-text-muted)"], [1, "library-card"], [1, "library-card", 3, "click"], [1, "library-info"], [1, "library-name"], [1, "library-items"]], template: function MJActionFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
2614
+ i0.ɵɵconditionalCreate(0, MJActionFormComponentExtended_Conditional_0_Template, 49, 36, "mj-record-form-container", 1);
2566
2615
  i0.ɵɵelementStart(1, "mj-action-test-harness-dialog", 2);
2567
2616
  i0.ɵɵlistener("Close", function MJActionFormComponentExtended_Template_mj_action_test_harness_dialog_Close_1_listener() { return ctx.onTestHarnessVisibilityChanged(false); });
2568
2617
  i0.ɵɵelementEnd();
@@ -2570,7 +2619,7 @@ let MJActionFormComponentExtended = class MJActionFormComponentExtended extends
2570
2619
  i0.ɵɵconditional(ctx.record ? 0 : -1);
2571
2620
  i0.ɵɵadvance();
2572
2621
  i0.ɵɵproperty("Action", ctx.record)("ActionParams", ctx.actionParams)("IsOpen", ctx.showTestHarness);
2573
- } }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJEmptyStateComponent, i2.MJAlertComponent, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDropdownComponent, i2.MJSwitchComponent, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.ActionTestHarnessDialogComponent, i6.DatePipe], styles: ["\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n.approval-required-alert[_ngcontent-%COMP%] { margin-top: 16px; }\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n\n.action-hero-header[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 32px;\n margin: -20px -20px 24px -20px;\n border-radius: 0 0 var(--mj-radius-lg) var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n}\n\n.hero-content[_ngcontent-%COMP%] {\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.action-identity[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 24px;\n margin-bottom: 24px;\n}\n\n.action-icon-wrapper[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n}\n\n.action-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-4xl);\n}\n\n.action-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.action-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n.action-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 2em;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-inverse);\n}\n\n.action-name-input[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: var(--mj-font-semibold);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n min-width: 400px;\n}\n\n.action-name-input[_ngcontent-%COMP%]::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n.action-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%], .type-badge[_ngcontent-%COMP%], .approval-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n}\n\n.action-category[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 0.95em;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n margin-bottom: 12px;\n}\n\n.action-category[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-inverse);\n transform: translateX(4px);\n}\n\n.action-description[_ngcontent-%COMP%] {\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 1.05em;\n line-height: var(--mj-leading-relaxed);\n margin: 0;\n}\n\n.action-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n border-radius: var(--mj-radius-md);\n}\n\n.action-description-input[_ngcontent-%COMP%]::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n\n.action-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-inverse) 10%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border-radius: var(--mj-radius-lg);\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 16px;\n min-width: 160px;\n}\n\n.stat-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-2xl);\n color: color-mix(in srgb, var(--mj-text-inverse) 80%, transparent);\n}\n\n.stat-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: var(--mj-font-bold);\n color: var(--mj-text-inverse);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: color-mix(in srgb, var(--mj-text-inverse) 70%, transparent);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n.hero-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.hero-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n backdrop-filter: blur(10px);\n}\n\n\n.action-content[_ngcontent-%COMP%] {\n padding: 0 20px 20px;\n}\n\n.content-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n margin-bottom: 20px;\n overflow: hidden;\n transition: all var(--mj-transition-base);\n}\n\n.content-section[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n background: var(--mj-bg-surface-elevated);\n cursor: pointer;\n user-select: none;\n transition: background var(--mj-transition-base);\n}\n\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.3em;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.section-count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n}\n\n.toggle-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s;\n}\n\n.toggle-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(-90deg);\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 24px;\n animation: _ngcontent-%COMP%_slideDown 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.overview-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.overview-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.full-width[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.overview-display[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 24px;\n}\n\n.display-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.display-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.display-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.display-value.code[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.approval-date[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-left: 8px;\n}\n\n\n.generation-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.generation-panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: var(--mj-color-indigo-500);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.prompt-section[_ngcontent-%COMP%], .comments-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.prompt-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .comments-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n}\n\n.generation-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.code-locked-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.code-editor-section[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.code-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.code-toolbar[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.code-comments[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin-top: 16px;\n}\n\n.code-comments[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-info);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-comments[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n line-height: var(--mj-leading-relaxed);\n}\n\n.approval-comments[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.approval-comments[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-status-error);\n}\n\n\n.params-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 20px;\n}\n\n.params-section.params-section-compact[_ngcontent-%COMP%] {\n padding: 12px 20px;\n}\n\n.params-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.params-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.params-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.param-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n transition: all var(--mj-transition-base);\n}\n\n.param-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.param-card.required[_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning);\n}\n\n.param-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.param-card.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.param-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.param-edit-btn[_ngcontent-%COMP%], \n.param-delete-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-sm);\n transition: all var(--mj-transition-base);\n}\n\n.param-edit-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.param-delete-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.param-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.required-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.array-badge[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.param-type[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-bottom: 8px;\n}\n\n.param-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n margin-bottom: 8px;\n}\n\n.param-default[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.default-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n}\n\n.param-default[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-family: 'Courier New', monospace;\n color: var(--mj-color-error-400);\n}\n\n\n\n.result-codes-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.result-code-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n transition: all var(--mj-transition-base);\n position: relative;\n}\n\n.result-code-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.result-code-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.result-code-card.success[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-code-card.failure[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity var(--mj-transition-base);\n}\n\n.result-code-card[_ngcontent-%COMP%]:hover .result-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.result-edit-btn[_ngcontent-%COMP%], \n.result-delete-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n padding: 4px 8px;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n font-size: var(--mj-text-sm);\n}\n\n.result-edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.result-delete-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-error);\n}\n\n.result-icon[_ngcontent-%COMP%] {\n font-size: 1.5em;\n flex-shrink: 0;\n}\n\n.result-code-card.success[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.result-code-card.failure[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.result-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.result-code[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n font-family: 'Courier New', monospace;\n}\n\n.result-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n\n.execution-stats-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 32px;\n flex-wrap: wrap;\n}\n\n.stat-box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.stat-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n color: var(--mj-text-muted);\n}\n\n.stat-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.executions-table[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.executions-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.executions-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n text-align: left;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.executions-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.execution-row[_ngcontent-%COMP%] {\n transition: background var(--mj-transition-base);\n}\n\n.execution-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.execution-row.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.running[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-style: italic;\n}\n\n.result-code[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n font-family: 'Courier New', monospace;\n}\n\n.result-code.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.result-code.failure[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n.config-subsection[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n.config-subsection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.library-cards[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.library-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.library-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n transform: translateX(4px);\n}\n\n.library-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 1.5em;\n color: var(--mj-text-muted);\n}\n\n.library-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.library-name[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.library-items[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n font-family: 'Courier New', monospace;\n}\n\n.related-entities-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.related-entity-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.related-entity-link[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n}\n\n.related-entity-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.related-entity-link[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.entity-count[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-sm);\n}\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n margin-bottom: 12px;\n}\n\n\n@media (max-width: 768px) {\n .action-hero-header[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .action-identity[_ngcontent-%COMP%] {\n flex-direction: column;\n text-align: center;\n }\n\n .action-icon-wrapper[_ngcontent-%COMP%] {\n margin: 0 auto;\n }\n\n .action-title-row[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .action-stats[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .params-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] }); }
2622
+ } }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJEmptyStateComponent, i2.MJAlertComponent, i2.MJAccordionSectionsComponent, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDropdownComponent, i2.MJSwitchComponent, i3.MjRecordFormContainerComponent, i4.CodeEditorComponent, i5.ActionTestHarnessDialogComponent, i6.DatePipe], styles: ["\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n.approval-required-alert[_ngcontent-%COMP%] { margin-top: 16px; }\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n\n.action-hero-header[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 32px;\n margin: -20px -20px 24px -20px;\n border-radius: 0 0 var(--mj-radius-lg) var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n}\n\n.hero-content[_ngcontent-%COMP%] {\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.action-identity[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 24px;\n margin-bottom: 24px;\n}\n\n.action-icon-wrapper[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n}\n\n.action-icon-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-4xl);\n}\n\n.action-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.action-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n.action-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 2em;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-inverse);\n}\n\n.action-name-input[_ngcontent-%COMP%] {\n font-size: 1.8em;\n font-weight: var(--mj-font-semibold);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n min-width: 400px;\n}\n\n.action-name-input[_ngcontent-%COMP%]::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n.action-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.status-badge[_ngcontent-%COMP%], .type-badge[_ngcontent-%COMP%], .approval-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n}\n\n.action-category[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 0.95em;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n margin-bottom: 12px;\n}\n\n.action-category[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-inverse);\n transform: translateX(4px);\n}\n\n.action-description[_ngcontent-%COMP%] {\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 1.05em;\n line-height: var(--mj-leading-relaxed);\n margin: 0;\n}\n\n.action-description-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n border-radius: var(--mj-radius-md);\n}\n\n.action-description-input[_ngcontent-%COMP%]::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n\n.action-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-inverse) 10%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border-radius: var(--mj-radius-lg);\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 16px;\n min-width: 160px;\n}\n\n.stat-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-2xl);\n color: color-mix(in srgb, var(--mj-text-inverse) 80%, transparent);\n}\n\n.stat-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 1.4em;\n font-weight: var(--mj-font-bold);\n color: var(--mj-text-inverse);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: color-mix(in srgb, var(--mj-text-inverse) 70%, transparent);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n.hero-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.hero-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n backdrop-filter: blur(10px);\n}\n\n\n.action-content[_ngcontent-%COMP%] {\n padding: 0 20px 20px;\n}\n\n.content-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n margin-bottom: 20px;\n overflow: hidden;\n transition: all var(--mj-transition-base);\n}\n\n.content-section[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n background: var(--mj-bg-surface-elevated);\n cursor: pointer;\n user-select: none;\n transition: background var(--mj-transition-base);\n}\n\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.3em;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.section-count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n}\n\n.toggle-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s;\n}\n\n.toggle-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(-90deg);\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 24px;\n animation: _ngcontent-%COMP%_slideDown 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.overview-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.overview-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.full-width[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.overview-display[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 24px;\n}\n\n.display-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.display-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.display-value[_ngcontent-%COMP%] {\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.display-value.code[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.approval-date[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-left: 8px;\n}\n\n\n.generation-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.generation-panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: var(--mj-color-indigo-500);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.prompt-section[_ngcontent-%COMP%], .comments-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.prompt-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .comments-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n}\n\n.generation-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.code-locked-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.code-editor-section[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.code-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.code-toolbar[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.code-comments[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin-top: 16px;\n}\n\n.code-comments[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-status-info);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-comments[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n line-height: var(--mj-leading-relaxed);\n}\n\n.approval-comments[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.approval-comments[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-status-error);\n}\n\n\n.params-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 20px;\n}\n\n.params-section.params-section-compact[_ngcontent-%COMP%] {\n padding: 12px 20px;\n}\n\n.params-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.params-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.params-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.param-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n transition: all var(--mj-transition-base);\n}\n\n.param-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.param-card.required[_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning);\n}\n\n.param-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.param-card.clickable[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.param-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.param-edit-btn[_ngcontent-%COMP%], \n.param-delete-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-sm);\n transition: all var(--mj-transition-base);\n}\n\n.param-edit-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.param-delete-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.param-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.required-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.array-badge[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-500);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.param-type[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-bottom: 8px;\n}\n\n.param-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n margin-bottom: 8px;\n}\n\n.param-default[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.default-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n}\n\n.param-default[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-family: 'Courier New', monospace;\n color: var(--mj-color-error-400);\n}\n\n\n\n.result-codes-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n\n@media (max-width: 768px) {\n .result-codes-grid[_ngcontent-%COMP%] {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n.result-code-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n transition: all var(--mj-transition-base);\n position: relative;\n}\n\n.result-code-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.result-code-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.result-code-card.success[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-code-card.failure[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity var(--mj-transition-base);\n}\n\n.result-code-card[_ngcontent-%COMP%]:hover .result-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.result-edit-btn[_ngcontent-%COMP%], \n.result-delete-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n padding: 4px 8px;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n font-size: var(--mj-text-sm);\n}\n\n.result-edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.result-delete-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-error);\n}\n\n.result-icon[_ngcontent-%COMP%] {\n font-size: 1.5em;\n flex-shrink: 0;\n}\n\n.result-code-card.success[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.result-code-card.failure[_ngcontent-%COMP%] .result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.result-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.result-code[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n font-family: 'Courier New', monospace;\n}\n\n.result-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n\n.execution-stats-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n margin-bottom: 32px;\n flex-wrap: wrap;\n}\n\n.stat-box[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 200px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.stat-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n color: var(--mj-text-muted);\n}\n\n.stat-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.executions-table[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.executions-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.executions-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n text-align: left;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.executions-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.execution-row[_ngcontent-%COMP%] {\n transition: background var(--mj-transition-base);\n}\n\n.execution-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.execution-row.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.running[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-style: italic;\n}\n\n.result-code[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n font-family: 'Courier New', monospace;\n}\n\n.result-code.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.result-code.failure[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n.config-subsection[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n.config-subsection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.library-cards[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.library-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.library-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n transform: translateX(4px);\n}\n\n.library-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child {\n font-size: 1.5em;\n color: var(--mj-text-muted);\n}\n\n.library-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.library-name[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.library-items[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n font-family: 'Courier New', monospace;\n}\n\n.related-entities-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.related-entity-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.related-entity-link[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n}\n\n.related-entity-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.related-entity-link[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.entity-count[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-sm);\n}\n\n\n.loading-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px;\n color: var(--mj-text-muted);\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n margin-bottom: 12px;\n}\n\n\n@media (max-width: 768px) {\n .action-hero-header[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .action-identity[_ngcontent-%COMP%] {\n flex-direction: column;\n text-align: center;\n }\n\n .action-icon-wrapper[_ngcontent-%COMP%] {\n margin: 0 auto;\n }\n\n .action-title-row[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .action-stats[_ngcontent-%COMP%] {\n justify-content: center;\n }\n\n .params-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n\n.hero-header-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.action-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: flex-end;\n}\n\n@media (max-width: 768px) {\n .hero-header-row[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .action-buttons[_ngcontent-%COMP%] {\n width: 100%;\n align-items: stretch;\n }\n\n .action-buttons[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .action-buttons[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\n flex: 1;\n }\n}\n\n\n\n@media (max-width: 768px) {\n .configuration-sections[_ngcontent-%COMP%] {\n padding: 12px 0 !important;\n border-top: 0 !important;\n background: transparent !important;\n }\n\n .phone-flush-x[_ngcontent-%COMP%] {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n}", "\n\n\n\n\n\n\n\n\n\n\n\n\n\n.phone-hero-summary[_ngcontent-%COMP%], \n.phone-hero-only[_ngcontent-%COMP%] {\n display: none;\n}\n\n@media (max-width: 768px) {\n .phone-hero[_ngcontent-%COMP%] {\n padding: 12px !important;\n }\n\n \n .phone-hero.hero-compact[_ngcontent-%COMP%] .phone-hero-detail[_ngcontent-%COMP%], \n .phone-hero.hero-view[_ngcontent-%COMP%] .phone-hero-hide[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .phone-hero-only[_ngcontent-%COMP%] {\n display: inline-flex;\n }\n\n \n .phone-hero[_ngcontent-%COMP%] .phone-hero-stats[_ngcontent-%COMP%] {\n display: grid !important;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n }\n\n .phone-hero-status[_ngcontent-%COMP%] {\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n \n .phone-hero-status[data-status=\"running\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n .phone-hero-status[data-status=\"success\"][_ngcontent-%COMP%] { color: var(--mj-status-success-text); background: var(--mj-status-success-bg); }\n .phone-hero-status[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-error-text); background: var(--mj-status-error-bg); }\n .phone-hero-status[data-status=\"info\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n\n .phone-hero-top[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n gap: 10px;\n }\n\n .phone-hero-actions[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .phone-hero[_ngcontent-%COMP%] .phone-hero-run[_ngcontent-%COMP%] {\n width: 100%;\n min-height: 44px;\n justify-content: center;\n }\n\n \n\n .phone-hero-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 44px;\n margin-top: 8px;\n padding: 0 4px;\n border: 0;\n border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent);\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-sm);\n text-align: left;\n cursor: pointer;\n opacity: 0.85;\n }\n\n .phone-hero-summary[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n }\n\n .phone-hero-summary-text[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .phone-hero-summary[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n transition: transform 0.15s ease;\n }\n\n .phone-hero-summary[aria-expanded=\"true\"][_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .phone-hero-summary[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n transition: none;\n }\n}"] }); }
2574
2623
  };
2575
2624
  MJActionFormComponentExtended = __decorate([
2576
2625
  RegisterClass(BaseFormComponent, 'MJ: Actions')
@@ -2578,7 +2627,7 @@ MJActionFormComponentExtended = __decorate([
2578
2627
  export { MJActionFormComponentExtended };
2579
2628
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJActionFormComponentExtended, [{
2580
2629
  type: Component,
2581
- args: [{ standalone: false, selector: 'mj-action-form', template: "<!--\n NOTE: We wrap the form content in <mj-record-form-container> rather than\n using <mj-form-toolbar> directly. The container owns the toolbar AND the\n panels behind History/Tags/List buttons \u2014 without it those buttons emit\n events that nothing listens to and the features silently break. Follow\n this pattern for every custom entity form \u2014 see packages/Angular/CLAUDE.md.\n-->\n@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Main Content Area -->\n <div class=\"action-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"action-header\" style=\"flex-shrink: 0; padding: 20px; background: var(--mj-bg-surface-card); border-bottom: 2px solid var(--mj-border-default);\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n \n <!-- Left: Action 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]=\"getActionIcon()\" [style.color]=\"getTypeColor()\" style=\"font-size: 1.4em;\"></i>\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"record.Name\"\n name=\"actionName\"\n placeholder=\"Enter action name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\" />\n } @else {\n <h4 style=\"margin: 0; color: var(--mj-text-secondary); font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled Action' }}</h4>\n <span class=\"status-chip\"\n [attr.data-color]=\"record.Status === 'Active' ? 'success' : record.Status === 'Pending' ? 'warning' : 'error'\">\n {{ record.Status }}\n </span>\n @if (hasCodeApproval && record.CodeApprovalStatus) {\n <span class=\"status-chip\"\n [attr.data-color]=\"record.CodeApprovalStatus === 'Approved' ? 'success' : record.CodeApprovalStatus === 'Pending' ? 'warning' : 'error'\"\n [title]=\"'Code ' + record.CodeApprovalStatus\">\n <i [class]=\"'fa-solid ' + getApprovalStatusIcon()\" style=\"margin-right: 4px;\"></i>\n {{ record.CodeApprovalStatus }}\n </span>\n }\n }\n </div>\n \n <!-- Status and Type Editors when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">Status</label>\n <mj-dropdown [(ngModel)]=\"record.Status\"\n name=\"actionStatus\"\n [Data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </mj-dropdown>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Type <span style=\"color: var(--mj-status-error);\">*</span>\n </label>\n <mj-dropdown [(ngModel)]=\"record.Type\"\n name=\"actionType\"\n [Data]=\"[{text: 'Generated', value: 'Generated'}, {text: 'Custom', value: 'Custom'}]\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </mj-dropdown>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Category <span style=\"color: var(--mj-status-error);\">*</span>\n </label>\n <mj-dropdown [(ngModel)]=\"record.CategoryID\"\n name=\"categoryID\"\n [Data]=\"[]\"\n Placeholder=\"Select category...\"\n style=\"width: 200px;\">\n </mj-dropdown>\n </div>\n @if (hasCodeApproval) {\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n <i [class]=\"'fa-solid ' + getApprovalStatusIcon()\" [style.color]=\"getApprovalStatusColor()\" style=\"margin-right: 4px;\"></i>\n Code Approval\n </label>\n <mj-dropdown [(ngModel)]=\"record.CodeApprovalStatus\"\n name=\"codeApprovalStatus\"\n [Data]=\"[{text: 'Approved', value: 'Approved'}, {text: 'Pending', value: 'Pending'}, {text: 'Rejected', value: 'Rejected'}]\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n style=\"width: 160px;\">\n </mj-dropdown>\n </div>\n }\n </div>\n }\n \n @if (EditMode) {\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.Description\" \n name=\"actionDescription\"\n [rows]=\"2\"\n placeholder=\"Enter action description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </textarea>\n } @else if (record.Description) {\n <p style=\"margin: 0 0 12px 0; color: var(--mj-text-muted); font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n \n <!-- Quick Config Row -->\n <div class=\"quick-config\" style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (category) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Category:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500; cursor: pointer;\" (click)=\"navigateToCategory()\">\n {{ category.Name }}\n <i class=\"fa-solid fa-external-link\" style=\"font-size: 0.75em; margin-left: 4px;\"></i>\n </span>\n </div>\n }\n \n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-cube\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Type:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ record.Type }}</span>\n </div>\n \n @if (hasCodeApproval && record.CodeApprovalStatus) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i [class]=\"'fa-solid ' + getApprovalStatusIcon()\" [style.color]=\"getApprovalStatusColor()\"></i>\n <span style=\"color: var(--mj-text-muted);\">Code:</span>\n <span [style.color]=\"getApprovalStatusColor()\" style=\"font-weight: 500;\">{{ record.CodeApprovalStatus }}</span>\n </div>\n }\n \n @if (actionParams.length > 0) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ actionParams.length }} Parameters</span>\n </div>\n }\n </div>\n </div>\n \n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID && !EditMode) {\n <button mjButton variant=\"primary\" size=\"lg\"\n (click)=\"openTestHarness()\"\n title=\"Open Run Harness\"\n [disabled]=\"record.Status !== 'Active'\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n @if (EditMode && record.Type === 'Generated') {\n <button mjButton variant=\"outline\" size=\"md\"\n (click)=\"regenerateCode()\"\n title=\"Regenerate Code\">\n <i class=\"fa-solid fa-robot\"></i> Regenerate\n </button>\n }\n </div>\n \n @if (!EditMode && record.Status !== 'Active' && record.ID) {\n <div style=\"font-size: 0.75em; color: var(--mj-status-error); text-align: right;\">\n Action must be Active to execute\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: var(--mj-bg-surface-card); border-top: 2px solid var(--mj-border-default); padding: 16px; min-height: 0;\">\n \n <!-- Parameters Section (FIRST) -->\n <mj-accordion-panel\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: var(--mj-text-muted);\"></i>\n Parameters\n @if (actionParams.length > 0) {\n <span style=\"background: var(--mj-status-info); color: var(--mj-text-inverse); padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ actionParams.length }}\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 16px;\">\n @if (isLoadingParams) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading parameters...\n </div>\n } @else if (actionParams.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-sliders\"\n Title=\"No parameters defined\"\n [Message]=\"EditMode && record.IsSaved ? 'Add parameters to define inputs and outputs for this action' : ''\" />\n } @else {\n <!-- Input Parameters Grid -->\n <div class=\"params-section\">\n <div class=\"params-header\">\n <h3><i class=\"fa-solid fa-sign-in-alt\"></i> Input Parameters</h3>\n @if (EditMode && record.IsSaved) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"addParameter('Input')\">\n <i class=\"fa-solid fa-plus\"></i> Add Input\n </button>\n }\n </div>\n \n @if (getInputParams().length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No input parameters defined\" />\n } @else {\n <div class=\"params-grid\">\n @for (param of getInputParams(); track param.ID) {\n <div class=\"param-card\" [class.required]=\"param.IsRequired\" \n [class.clickable]=\"true\"\n (click)=\"onParamClick(param, $event)\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <div class=\"param-badges\">\n @if (param.IsRequired) {\n <span class=\"required-badge\">Required</span>\n }\n @if (param.IsArray) {\n <span class=\"array-badge\">Array</span>\n }\n @if (EditMode) {\n <button class=\"param-edit-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"param-delete-btn\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"param-details\">\n <div class=\"param-type\">{{ param.ValueType }}</div>\n @if (param.Description) {\n <div class=\"param-description\">{{ param.Description }}</div>\n }\n @if (param.DefaultValue) {\n <div class=\"param-default\">\n <span class=\"default-label\">Default:</span>\n <code>{{ param.DefaultValue }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Output Parameters Grid -->\n <div class=\"params-section\" style=\"margin-top: 24px;\" \n [class.params-section-compact]=\"getOutputParams().length === 0\">\n <div class=\"params-header\">\n <h3><i class=\"fa-solid fa-sign-out-alt\"></i> Output Parameters</h3>\n @if (EditMode && record.IsSaved) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"addParameter('Output')\">\n <i class=\"fa-solid fa-plus\"></i> Add Output\n </button>\n }\n </div>\n \n @if (getOutputParams().length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No output parameters defined\" />\n } @else {\n <div class=\"params-grid\">\n @for (param of getOutputParams(); track param.ID) {\n <div class=\"param-card\"\n [class.clickable]=\"true\"\n (click)=\"onParamClick(param, $event)\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <div class=\"param-badges\">\n @if (param.IsArray) {\n <span class=\"array-badge\">Array</span>\n }\n @if (EditMode) {\n <button class=\"param-edit-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"param-delete-btn\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"param-details\">\n <div class=\"param-type\">{{ param.ValueType }}</div>\n @if (param.Description) {\n <div class=\"param-description\">{{ param.Description }}</div>\n }\n @if (param.DefaultValue) {\n <div class=\"param-default\">\n <span class=\"default-label\">Default:</span>\n <code>{{ param.DefaultValue }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Code & Generation Section (Only for Generated type) -->\n @if (record.Type === 'Generated') {\n <mj-accordion-panel\n [Expanded]=\"expandedSections.code\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n Code &amp; Generation\n @if (record.CodeLocked) {\n <span style=\"background: var(--mj-status-warning); color: var(--mj-color-warning-800); padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n <i class=\"fa-solid fa-lock\"></i> Locked\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 16px;\">\n @if (EditMode) {\n <div class=\"generation-panel\">\n <h3><i class=\"fa-solid fa-robot\"></i> AI Generation</h3>\n <div class=\"prompt-section\">\n <label>User Prompt</label>\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.UserPrompt\"\n name=\"userPrompt\"\n [rows]=\"8\"\n placeholder=\"Describe what this action should do...\"\n style=\"width: 100%; min-height: 120px;\">\n </textarea>\n </div>\n <div class=\"comments-section\">\n <label>Internal Comments (not sent to AI)</label>\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.UserComments\"\n name=\"userComments\"\n [rows]=\"2\"\n placeholder=\"Internal notes...\"\n style=\"width: 100%;\">\n </textarea>\n </div>\n <div class=\"generation-controls\">\n <mj-switch [(ngModel)]=\"record.CodeLocked\"\n name=\"codeLocked\">\n </mj-switch>\n <label style=\"margin-left: 8px;\">Lock Code (prevent regeneration)</label>\n </div>\n </div>\n }\n \n <div class=\"code-editor-section\">\n <div class=\"code-toolbar\">\n <h3><i class=\"fa-solid fa-file-code\"></i> Action Code</h3>\n <div class=\"code-actions\">\n @if (record.CodeComments) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"toggleCodeComments()\">\n <i class=\"fa-solid fa-comment\"></i> \n {{ showCodeComments ? 'Hide' : 'Show' }} AI Comments\n </button>\n }\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"copyToClipboard(record.Code || '')\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n </div>\n </div>\n <mj-code-editor \n [(ngModel)]=\"record.Code\"\n name=\"actionCode\"\n [readonly]=\"!EditMode || record.CodeLocked\"\n [language]=\"codeLanguage\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n \n @if (showCodeComments && record.CodeComments) {\n <div class=\"code-comments\">\n <h4><i class=\"fa-solid fa-robot\"></i> AI Explanation</h4>\n <p>{{ record.CodeComments }}</p>\n </div>\n }\n \n @if (EditMode && record.CodeApprovalStatus === 'Rejected') {\n <div class=\"approval-comments\">\n <label>Rejection Comments</label>\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.CodeApprovalComments\"\n name=\"codeApprovalComments\"\n [rows]=\"2\"\n placeholder=\"Explain why the code was rejected...\"\n style=\"width: 100%;\">\n </textarea>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Runtime Action Configuration Section (only for Type='Runtime') -->\n @if (isRuntimeAction) {\n <mj-accordion-panel\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-wand-magic-sparkles\" style=\"color: var(--mj-status-warning);\"></i>\n Runtime Configuration &amp; Permissions\n <span style=\"color: var(--mj-text-muted); font-weight: 400; font-size: 0.85em;\">\n ({{ getRuntimeConfigSummary() }})\n </span>\n </span>\n </ng-template>\n\n <div style=\"padding: 16px;\">\n @if (!runtimeConfig) {\n <mj-alert Variant=\"error\">\n <strong>Missing or malformed RuntimeActionConfiguration.</strong>\n This Runtime action cannot run until a valid configuration is supplied. Approval should not be granted in this state.\n </mj-alert>\n } @else {\n @if (getWildcardFlags().any) {\n <mj-alert Variant=\"warning\" Title=\"Wildcard permissions enabled\">\n <div style=\"color: var(--mj-text-secondary); font-size: 0.9em;\">\n This runtime action has one or more wildcard flags set that bypass the specific allowlists below:\n @if (getWildcardFlags().entity) { <strong>allowAnyEntity</strong> }\n @if (getWildcardFlags().action) { <strong>allowAnyAction</strong> }\n @if (getWildcardFlags().agent) { <strong>allowAnyAgent</strong> }\n . Approving grants this action unrestricted access to that namespace on behalf of any user who invokes it. Only approve if the action is framework-authored or you have personally reviewed every place it touches those resources.\n </div>\n </mj-alert>\n }\n <!-- Declared permissions \u2014 the security contract an approver is blessing -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; margin-bottom: 20px;\">\n <!-- Entities -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; padding: 12px; background: var(--mj-bg-surface-card);\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-database\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>\n Allowed Entities ({{ getAllowedEntities().length }})\n </div>\n @if (getAllowedEntities().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None requested</div>\n } @else {\n <div style=\"display: flex; flex-direction: column; gap: 4px;\">\n @for (e of getAllowedEntities(); track e.id) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 4px 8px; border-radius: 4px; font-size: 0.9em; color: var(--mj-text-primary);\">\n {{ e.name }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- Actions -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; padding: 12px; background: var(--mj-bg-surface-card);\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-bolt\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>\n Allowed Actions ({{ getAllowedActions().length }})\n </div>\n @if (getAllowedActions().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None requested</div>\n } @else {\n <div style=\"display: flex; flex-direction: column; gap: 4px;\">\n @for (a of getAllowedActions(); track a.id) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 4px 8px; border-radius: 4px; font-size: 0.9em; color: var(--mj-text-primary);\">\n {{ a.name }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- Agents -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; padding: 12px; background: var(--mj-bg-surface-card);\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-robot\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>\n Allowed Agents ({{ getAllowedAgents().length }})\n </div>\n @if (getAllowedAgents().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None requested</div>\n } @else {\n <div style=\"display: flex; flex-direction: column; gap: 4px;\">\n @for (g of getAllowedAgents(); track g.id) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 4px 8px; border-radius: 4px; font-size: 0.9em; color: var(--mj-text-primary);\">\n {{ g.name }}\n </span>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Limits + libraries -->\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px;\">\n <div>\n <div style=\"font-weight: 600; margin-bottom: 6px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-gauge-high\" style=\"margin-right: 6px; color: var(--mj-text-muted);\"></i>\n Resource Limits\n </div>\n <div style=\"color: var(--mj-text-secondary); font-size: 0.9em;\">\n <div>Max memory: {{ getRuntimeLimits().maxMemoryMB }} MB</div>\n <div>Max bridge calls: {{ getRuntimeLimits().maxBridgeCalls }}</div>\n @if (record.MaxExecutionTimeMS) {\n <div>Max execution time: {{ record.MaxExecutionTimeMS }} ms</div>\n }\n </div>\n </div>\n <div>\n <div style=\"font-weight: 600; margin-bottom: 6px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-book\" style=\"margin-right: 6px; color: var(--mj-text-muted);\"></i>\n Additional Libraries\n </div>\n @if (getRequestedLibraries().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None (only default set: lodash, date-fns, uuid, validator)</div>\n } @else {\n <div style=\"display: flex; flex-wrap: wrap; gap: 4px;\">\n @for (lib of getRequestedLibraries(); track lib.name) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 2px 8px; border-radius: 10px; font-size: 0.85em;\">\n {{ lib.name }}@if (lib.version) {<span style=\"color: var(--mj-text-muted);\"> @{{ lib.version }}</span>}\n </span>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Code payload -->\n <div>\n <div style=\"font-weight: 600; margin-bottom: 6px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-code\" style=\"margin-right: 6px; color: var(--mj-text-muted);\"></i>\n JavaScript Payload\n </div>\n <pre style=\"background: var(--mj-bg-surface-sunken); color: var(--mj-text-primary); padding: 12px; border-radius: 4px; overflow-x: auto; max-height: 400px; font-family: 'SF Mono', Monaco, Consolas, monospace; font-size: 0.85em; margin: 0;\"><code>{{ record.Code }}</code></pre>\n </div>\n\n <!-- Approval actions (Runtime-specific labels) -->\n @if (EditMode && record.CodeApprovalStatus === 'Pending') {\n <mj-alert Variant=\"warning\" Title=\"Approval required before this Runtime action can execute.\" class=\"approval-required-alert\">\n <div style=\"color: var(--mj-text-secondary); font-size: 0.9em; margin-bottom: 12px;\">\n Approving grants this action the permissions listed above on behalf of any user who invokes it. Review the code and permissions carefully before approving.\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button class=\"mj-button mj-button-primary\" (click)=\"approveCode()\">\n <i class=\"fa-solid fa-check\"></i> Approve\n </button>\n <button class=\"mj-button\" (click)=\"rejectCode()\">\n <i class=\"fa-solid fa-ban\"></i> Reject\n </button>\n </div>\n </mj-alert>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Result Codes Section -->\n <mj-accordion-panel\n [Expanded]=\"expandedSections.resultCodes\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-flag-checkered\" style=\"color: var(--mj-text-muted);\"></i>\n Result Codes\n @if (resultCodes.length > 0) {\n <span style=\"background: var(--mj-status-success); color: var(--mj-text-inverse); padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ resultCodes.length }}\n </span>\n }\n </span>\n </ng-template>\n \n <div style=\"padding: 16px;\">\n <!-- Add Result Code Button -->\n @if (EditMode && record.IsSaved) {\n <div style=\"display: flex; justify-content: flex-end; margin-bottom: 12px;\">\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addResultCode()\">\n <i class=\"fa-solid fa-plus\"></i> Add Result Code\n </button>\n </div>\n }\n \n @if (isLoadingResultCodes) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading result codes...\n </div>\n } @else if (resultCodes.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-flag-checkered\"\n Title=\"No result codes defined\"\n [Message]=\"EditMode && record.IsSaved ? 'Add result codes to define possible outcomes' : ''\" />\n } @else {\n <div class=\"result-codes-grid\">\n @for (code of resultCodes; track code.ID) {\n <div class=\"result-code-card\" \n [class.success]=\"code.IsSuccess\" \n [class.failure]=\"!code.IsSuccess\"\n [class.clickable]=\"true\"\n (click)=\"onResultCodeClick(code, $event)\">\n <div class=\"result-icon\">\n <i [class]=\"code.IsSuccess ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-code\">{{ code.ResultCode }}</div>\n @if (code.Description) {\n <div class=\"result-description\">{{ code.Description }}</div>\n }\n </div>\n @if (EditMode) {\n <div class=\"result-actions\">\n <button class=\"result-edit-btn\" (click)=\"editResultCode(code); $event.stopPropagation()\" title=\"Edit result code\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"result-delete-btn\" (click)=\"deleteResultCode(code); $event.stopPropagation()\" title=\"Delete result code\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Execution & Monitoring Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"expandedSections.execution\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-chart-line\" style=\"color: var(--mj-text-muted);\"></i>\n Execution &amp; Monitoring\n </span>\n </ng-template>\n \n <div style=\"padding: 16px;\">\n @if (isLoadingExecutions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading executions...\n </div>\n } @else if (recentExecutions.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-chart-line\"\n Title=\"No executions yet\" />\n } @else {\n <div class=\"execution-stats-row\">\n <div class=\"stat-box\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"stat-info\">\n <div class=\"stat-label\" style=\"color: var(--mj-text-primary);\">Avg Duration</div>\n <div class=\"stat-value\" style=\"color: var(--mj-text-primary);\">{{ formatDuration(executionStats.avgDuration) }}</div>\n </div>\n </div>\n <div class=\"stat-box\">\n <i class=\"fa-solid fa-check-circle\" [style.color]=\"getSuccessRateColor()\"></i>\n <div class=\"stat-info\">\n <div class=\"stat-label\" style=\"color: var(--mj-text-primary);\">Success Rate</div>\n <div class=\"stat-value\" [style.color]=\"getSuccessRateColor()\" style=\"font-weight: 600;\">{{ executionStats.successRate.toFixed(0) }}%</div>\n </div>\n </div>\n <div class=\"stat-box\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <div class=\"stat-info\">\n <div class=\"stat-label\" style=\"color: var(--mj-text-primary);\">Total Runs</div>\n <div class=\"stat-value\" style=\"color: var(--mj-text-primary);\">{{ executionStats.totalRuns }}</div>\n </div>\n </div>\n </div>\n\n <h3 style=\"margin-top: 24px;\"><i class=\"fa-solid fa-history\"></i> Recent Executions</h3>\n <div class=\"executions-table\">\n <table>\n <thead>\n <tr>\n <th>Started</th>\n <th>Duration</th>\n <th>User</th>\n <th>Result</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (execution of recentExecutions; track execution.ID) {\n <tr class=\"execution-row\" [class.success]=\"isExecutionSuccess(execution)\">\n <td>{{ execution.StartedAt | date:'short' }}</td>\n <td>\n @if (execution.EndedAt) {\n {{ formatDuration(getExecutionDuration(execution)) }}\n } @else {\n <span class=\"running\">Running...</span>\n }\n </td>\n <td>{{ execution.User }}</td>\n <td>\n <span class=\"result-code\" \n [class.success]=\"isExecutionSuccess(execution)\"\n [class.failure]=\"!isExecutionSuccess(execution)\">\n {{ execution.ResultCode }}\n </span>\n </td>\n <td>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"navigateToExecution(execution.ID)\">\n <i class=\"fa-solid fa-external-link\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Related Configuration Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"expandedSections.configuration\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: var(--mj-text-muted);\"></i>\n Related Configuration\n </span>\n </ng-template>\n \n <div style=\"padding: 16px;\">\n <!-- Libraries -->\n <div class=\"config-subsection\">\n <h3><i class=\"fa-solid fa-book\"></i> Libraries</h3>\n @if (isLoadingLibraries) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading libraries...\n </div>\n } @else if (actionLibraries.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-book\"\n Title=\"No libraries configured\" />\n } @else {\n <div class=\"library-cards\">\n @for (lib of libraries; track lib.ID; let i = $index) {\n <div class=\"library-card\" (click)=\"navigateToLibrary(lib.ID)\">\n <i class=\"fa-solid fa-book\"></i>\n <div class=\"library-info\">\n <div class=\"library-name\">{{ lib.Name }}</div>\n @if (actionLibraries[i].ItemsUsed) {\n <div class=\"library-items\">{{ actionLibraries[i].ItemsUsed }}</div>\n }\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Other Related Entities -->\n <div class=\"related-entities-grid\">\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-shield-alt\"></i>\n <span>Authorizations</span>\n <span class=\"entity-count\">View</span>\n </div>\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Contexts</span>\n <span class=\"entity-count\">View</span>\n </div>\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-calendar\"></i>\n <span>Scheduled Actions</span>\n <span class=\"entity-count\">View</span>\n </div>\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-cube\"></i>\n <span>Entity Actions</span>\n <span class=\"entity-count\">View</span>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n }\n </div>\n </div>\n </form>\n</mj-record-form-container>\n}\n\n<!-- Action Test Harness Dialog -->\n<mj-action-test-harness-dialog\n [Action]=\"record\"\n [ActionParams]=\"actionParams\"\n [IsOpen]=\"showTestHarness\"\n (Close)=\"onTestHarnessVisibilityChanged(false)\">\n</mj-action-test-harness-dialog>", styles: ["/* Enable flex layout for full-height scrolling */\n:host {\n display: block;\n height: 100%;\n}\n\n/* positions the Runtime-action approval alert (mj-alert is margin-less but for bottom) */\n.approval-required-alert { margin-top: 16px; }\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n min-height: 0 !important;\n}\n\n/* Hero Header Section */\n.action-hero-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 32px;\n margin: -20px -20px 24px -20px;\n border-radius: 0 0 var(--mj-radius-lg) var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n}\n\n.hero-content {\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.action-identity {\n display: flex;\n align-items: flex-start;\n gap: 24px;\n margin-bottom: 24px;\n}\n\n.action-icon-wrapper {\n width: 80px;\n height: 80px;\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n}\n\n.action-icon-wrapper i {\n font-size: var(--mj-text-4xl);\n}\n\n.action-info {\n flex: 1;\n min-width: 0;\n}\n\n.action-title-row {\n display: flex;\n align-items: center;\n gap: 16px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n.action-title {\n margin: 0;\n font-size: 2em;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-inverse);\n}\n\n.action-name-input {\n font-size: 1.8em;\n font-weight: var(--mj-font-semibold);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n min-width: 400px;\n}\n\n.action-name-input::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n.action-badges {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.status-badge, .type-badge, .approval-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n}\n\n.action-category {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 0.95em;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n margin-bottom: 12px;\n}\n\n.action-category:hover {\n color: var(--mj-text-inverse);\n transform: translateX(4px);\n}\n\n.action-description {\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 1.05em;\n line-height: var(--mj-leading-relaxed);\n margin: 0;\n}\n\n.action-description-input {\n width: 100%;\n max-width: 600px;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n border-radius: var(--mj-radius-md);\n}\n\n.action-description-input::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n/* Quick Stats */\n.action-stats {\n display: flex;\n gap: 24px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.stat-card {\n background: color-mix(in srgb, var(--mj-text-inverse) 10%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border-radius: var(--mj-radius-lg);\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 16px;\n min-width: 160px;\n}\n\n.stat-card i {\n font-size: var(--mj-text-2xl);\n color: color-mix(in srgb, var(--mj-text-inverse) 80%, transparent);\n}\n\n.stat-content {\n display: flex;\n flex-direction: column;\n}\n\n.stat-value {\n font-size: 1.4em;\n font-weight: var(--mj-font-bold);\n color: var(--mj-text-inverse);\n}\n\n.stat-label {\n font-size: var(--mj-text-sm);\n color: color-mix(in srgb, var(--mj-text-inverse) 70%, transparent);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Hero Actions */\n.hero-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.hero-actions button {\n backdrop-filter: blur(10px);\n}\n\n/* Main Content Sections */\n.action-content {\n padding: 0 20px 20px;\n}\n\n.content-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n margin-bottom: 20px;\n overflow: hidden;\n transition: all var(--mj-transition-base);\n}\n\n.content-section:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.section-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n background: var(--mj-bg-surface-elevated);\n cursor: pointer;\n user-select: none;\n transition: background var(--mj-transition-base);\n}\n\n.section-header:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 1.3em;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.section-header i:first-child {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.section-count {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n}\n\n.toggle-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s;\n}\n\n.toggle-icon.rotated {\n transform: rotate(-90deg);\n}\n\n.section-content {\n padding: 24px;\n animation: slideDown 0.3s ease;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.overview-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.overview-field label {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.required {\n color: var(--mj-status-error);\n}\n\n.full-width {\n width: 100%;\n}\n\n.overview-display {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 24px;\n}\n\n.display-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.display-field label {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.display-value {\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.display-value.code {\n font-family: 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.approval-date {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-left: 8px;\n}\n\n/* Code Section */\n.generation-panel {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.generation-panel h3 {\n margin: 0 0 16px 0;\n color: var(--mj-color-indigo-500);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.prompt-section, .comments-section {\n margin-bottom: 16px;\n}\n\n.prompt-section label, .comments-section label {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n}\n\n.generation-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.code-locked-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.code-editor-section {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.code-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.code-toolbar h3 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-actions {\n display: flex;\n gap: 8px;\n}\n\n.code-comments {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin-top: 16px;\n}\n\n.code-comments h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-info);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-comments p {\n margin: 0;\n color: var(--mj-text-secondary);\n line-height: var(--mj-leading-relaxed);\n}\n\n.approval-comments {\n margin-top: 16px;\n}\n\n.approval-comments label {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-status-error);\n}\n\n/* Parameters Section */\n.params-section {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 20px;\n}\n\n.params-section.params-section-compact {\n padding: 12px 20px;\n}\n\n.params-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.params-header h3 {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.params-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.param-card {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n transition: all var(--mj-transition-base);\n}\n\n.param-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.param-card.required {\n border-color: var(--mj-status-warning);\n}\n\n.param-card.clickable {\n cursor: pointer;\n}\n\n.param-card.clickable:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.param-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.param-name {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.param-badges {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.param-edit-btn,\n.param-delete-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-sm);\n transition: all var(--mj-transition-base);\n}\n\n.param-edit-btn:hover {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.param-delete-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.param-details {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.required-badge {\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.array-badge {\n background: var(--mj-color-indigo-500);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.param-type {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-bottom: 8px;\n}\n\n.param-description {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n margin-bottom: 8px;\n}\n\n.param-default {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.default-label {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n}\n\n.param-default code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-family: 'Courier New', monospace;\n color: var(--mj-color-error-400);\n}\n\n\n/* Result Codes Section */\n.result-codes-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.result-code-card {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n transition: all var(--mj-transition-base);\n position: relative;\n}\n\n.result-code-card.clickable {\n cursor: pointer;\n}\n\n.result-code-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.result-code-card.success {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-code-card.failure {\n border-color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity var(--mj-transition-base);\n}\n\n.result-code-card:hover .result-actions {\n opacity: 1;\n}\n\n.result-edit-btn,\n.result-delete-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n padding: 4px 8px;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n font-size: var(--mj-text-sm);\n}\n\n.result-edit-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.result-delete-btn:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-error);\n}\n\n.result-icon {\n font-size: 1.5em;\n flex-shrink: 0;\n}\n\n.result-code-card.success .result-icon {\n color: var(--mj-status-success);\n}\n\n.result-code-card.failure .result-icon {\n color: var(--mj-status-error);\n}\n\n.result-content {\n flex: 1;\n min-width: 0;\n}\n\n.result-code {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n font-family: 'Courier New', monospace;\n}\n\n.result-description {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n/* Execution Section */\n.execution-stats-row {\n display: flex;\n gap: 20px;\n margin-bottom: 32px;\n flex-wrap: wrap;\n}\n\n.stat-box {\n flex: 1;\n min-width: 200px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.stat-box i {\n font-size: 2em;\n color: var(--mj-text-muted);\n}\n\n.stat-info {\n flex: 1;\n}\n\n.executions-table {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.executions-table table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.executions-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n text-align: left;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.executions-table td {\n padding: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.execution-row {\n transition: background var(--mj-transition-base);\n}\n\n.execution-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.execution-row.success {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.running {\n color: var(--mj-status-warning);\n font-style: italic;\n}\n\n.result-code {\n display: inline-block;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n font-family: 'Courier New', monospace;\n}\n\n.result-code.success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.result-code.failure {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Configuration Section */\n.config-subsection {\n margin-bottom: 32px;\n}\n\n.config-subsection h3 {\n margin: 0 0 16px 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.library-cards {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.library-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.library-card:hover {\n background: var(--mj-bg-surface-hover);\n transform: translateX(4px);\n}\n\n.library-card i:first-child {\n font-size: 1.5em;\n color: var(--mj-text-muted);\n}\n\n.library-info {\n flex: 1;\n min-width: 0;\n}\n\n.library-name {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.library-items {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n font-family: 'Courier New', monospace;\n}\n\n.related-entities-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.related-entity-link {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.related-entity-link:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n}\n\n.related-entity-link i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.related-entity-link span:first-of-type {\n flex: 1;\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.entity-count {\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-sm);\n}\n\n/* Common States */\n.loading-state {\n text-align: center;\n padding: 60px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 2em;\n margin-bottom: 12px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .action-hero-header {\n padding: 20px;\n }\n\n .action-identity {\n flex-direction: column;\n text-align: center;\n }\n\n .action-icon-wrapper {\n margin: 0 auto;\n }\n\n .action-title-row {\n justify-content: center;\n }\n\n .action-stats {\n justify-content: center;\n }\n\n .params-grid {\n grid-template-columns: 1fr;\n }\n}\n\n"] }]
2630
+ args: [{ standalone: false, selector: 'mj-action-form', template: "<!--\n NOTE: We wrap the form content in <mj-record-form-container> rather than\n using <mj-form-toolbar> directly. The container owns the toolbar AND the\n panels behind History/Tags/List buttons \u2014 without it those buttons emit\n events that nothing listens to and the features silently break. Follow\n this pattern for every custom entity form \u2014 see packages/Angular/CLAUDE.md.\n-->\n@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Main Content Area -->\n <div class=\"action-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"action-header phone-hero\" [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\" style=\"flex-shrink: 0; padding: 20px; background: var(--mj-bg-surface-card); border-bottom: 2px solid var(--mj-border-default);\">\n <div class=\"hero-header-row\">\n \n <!-- Left: Action 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]=\"getActionIcon()\" [style.color]=\"getTypeColor()\" style=\"font-size: 1.4em;\"></i>\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"record.Name\"\n name=\"actionName\"\n placeholder=\"Enter action name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\" />\n } @else {\n <h4 style=\"margin: 0; color: var(--mj-text-secondary); font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled Action' }}</h4>\n <span class=\"status-chip\"\n [attr.data-color]=\"record.Status === 'Active' ? 'success' : record.Status === 'Pending' ? 'warning' : 'error'\">\n {{ record.Status }}\n </span>\n @if (hasCodeApproval && record.CodeApprovalStatus) {\n <span class=\"status-chip phone-hero-detail\"\n [attr.data-color]=\"record.CodeApprovalStatus === 'Approved' ? 'success' : record.CodeApprovalStatus === 'Pending' ? 'warning' : 'error'\"\n [title]=\"'Code ' + record.CodeApprovalStatus\">\n <i [class]=\"'fa-solid ' + getApprovalStatusIcon()\" style=\"margin-right: 4px;\"></i>\n {{ record.CodeApprovalStatus }}\n </span>\n }\n }\n </div>\n \n <!-- Status and Type Editors when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">Status</label>\n <mj-dropdown [(ngModel)]=\"record.Status\"\n name=\"actionStatus\"\n [Data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </mj-dropdown>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Type <span style=\"color: var(--mj-status-error);\">*</span>\n </label>\n <mj-dropdown [(ngModel)]=\"record.Type\"\n name=\"actionType\"\n [Data]=\"[{text: 'Generated', value: 'Generated'}, {text: 'Custom', value: 'Custom'}]\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </mj-dropdown>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Category <span style=\"color: var(--mj-status-error);\">*</span>\n </label>\n <mj-dropdown [(ngModel)]=\"record.CategoryID\"\n name=\"categoryID\"\n [Data]=\"[]\"\n Placeholder=\"Select category...\"\n style=\"width: 200px;\">\n </mj-dropdown>\n </div>\n @if (hasCodeApproval) {\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n <i [class]=\"'fa-solid ' + getApprovalStatusIcon()\" [style.color]=\"getApprovalStatusColor()\" style=\"margin-right: 4px;\"></i>\n Code Approval\n </label>\n <mj-dropdown [(ngModel)]=\"record.CodeApprovalStatus\"\n name=\"codeApprovalStatus\"\n [Data]=\"[{text: 'Approved', value: 'Approved'}, {text: 'Pending', value: 'Pending'}, {text: 'Rejected', value: 'Rejected'}]\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n style=\"width: 160px;\">\n </mj-dropdown>\n </div>\n }\n </div>\n }\n \n @if (EditMode) {\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.Description\" \n name=\"actionDescription\"\n [rows]=\"2\"\n placeholder=\"Enter action description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </textarea>\n } @else if (record.Description) {\n <p class=\"phone-hero-detail\" style=\"margin: 0 0 12px 0; color: var(--mj-text-muted); font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n \n <!-- Quick Config Row -->\n <div class=\"quick-config phone-hero-detail\" style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (category) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Category:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500; cursor: pointer;\" (click)=\"navigateToCategory()\">\n {{ category.Name }}\n <i class=\"fa-solid fa-external-link\" style=\"font-size: 0.75em; margin-left: 4px;\"></i>\n </span>\n </div>\n }\n \n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-cube\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Type:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ record.Type }}</span>\n </div>\n \n @if (hasCodeApproval && record.CodeApprovalStatus) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i [class]=\"'fa-solid ' + getApprovalStatusIcon()\" [style.color]=\"getApprovalStatusColor()\"></i>\n <span style=\"color: var(--mj-text-muted);\">Code:</span>\n <span [style.color]=\"getApprovalStatusColor()\" style=\"font-weight: 500;\">{{ record.CodeApprovalStatus }}</span>\n </div>\n }\n \n @if (actionParams.length > 0) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ actionParams.length }} Parameters</span>\n </div>\n }\n </div>\n </div>\n \n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID && !EditMode) {\n <button mjButton variant=\"primary\" size=\"lg\" class=\"phone-hero-run\"\n (click)=\"openTestHarness()\"\n title=\"Open Run Harness\"\n [disabled]=\"record.Status !== 'Active'\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n @if (EditMode && record.Type === 'Generated') {\n <button mjButton variant=\"outline\" size=\"md\"\n (click)=\"regenerateCode()\"\n title=\"Regenerate Code\">\n <i class=\"fa-solid fa-robot\"></i> Regenerate\n </button>\n }\n </div>\n \n @if (!EditMode && record.Status !== 'Active' && record.ID) {\n <div style=\"font-size: 0.75em; color: var(--mj-status-error); text-align: right;\">\n Action must be Active to execute\n </div>\n }\n </div>\n </div>\n @if (!EditMode && HeroSummary) {\n <button type=\"button\" class=\"phone-hero-summary\" [attr.aria-expanded]=\"HeroDetailsOpen\" (click)=\"ToggleHeroDetails()\">\n <span class=\"phone-hero-summary-text\">{{ HeroSummary }}</span>\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: var(--mj-bg-surface-card); border-top: 2px solid var(--mj-border-default); padding: 16px; min-height: 0;\">\n <!-- Phone: one section at a time behind a picker; desktop keeps the accordions -->\n <mj-accordion-sections [Enabled]=\"Phone.IsPhone\" [ActiveKey]=\"Phone.Section\" (ActiveKeyChange)=\"Phone.Pick($event)\">\n \n <!-- Parameters Section (FIRST) -->\n <mj-accordion-panel SectionKey=\"parameters\" SectionTitle=\"Parameters\" SectionIcon=\"fa-solid fa-sliders\" [SectionCount]=\"ActionParams.length\"\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: var(--mj-text-muted);\"></i>\n Parameters\n @if (actionParams.length > 0) {\n <span style=\"background: var(--mj-status-info); color: var(--mj-text-inverse); padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ actionParams.length }}\n </span>\n }\n </span>\n </ng-template>\n \n <div class=\"phone-flush-x\" style=\"padding: 16px;\">\n @if (isLoadingParams) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading parameters...\n </div>\n } @else if (actionParams.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-sliders\"\n Title=\"No parameters defined\"\n [Message]=\"EditMode && record.IsSaved ? 'Add parameters to define inputs and outputs for this action' : ''\" />\n } @else {\n <!-- Input Parameters Grid -->\n <div class=\"params-section\">\n <div class=\"params-header\">\n <h3><i class=\"fa-solid fa-sign-in-alt\"></i> Input Parameters</h3>\n @if (EditMode && record.IsSaved) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"addParameter('Input')\">\n <i class=\"fa-solid fa-plus\"></i> Add Input\n </button>\n }\n </div>\n \n @if (getInputParams().length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No input parameters defined\" />\n } @else {\n <div class=\"params-grid\">\n @for (param of getInputParams(); track param.ID) {\n <div class=\"param-card\" [class.required]=\"param.IsRequired\" \n [class.clickable]=\"true\"\n (click)=\"onParamClick(param, $event)\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <div class=\"param-badges\">\n @if (param.IsRequired) {\n <span class=\"required-badge\">Required</span>\n }\n @if (param.IsArray) {\n <span class=\"array-badge\">Array</span>\n }\n @if (EditMode) {\n <button class=\"param-edit-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"param-delete-btn\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"param-details\">\n <div class=\"param-type\">{{ param.ValueType }}</div>\n @if (param.Description) {\n <div class=\"param-description\">{{ param.Description }}</div>\n }\n @if (param.DefaultValue) {\n <div class=\"param-default\">\n <span class=\"default-label\">Default:</span>\n <code>{{ param.DefaultValue }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Output Parameters Grid -->\n <div class=\"params-section\" style=\"margin-top: 24px;\" \n [class.params-section-compact]=\"getOutputParams().length === 0\">\n <div class=\"params-header\">\n <h3><i class=\"fa-solid fa-sign-out-alt\"></i> Output Parameters</h3>\n @if (EditMode && record.IsSaved) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"addParameter('Output')\">\n <i class=\"fa-solid fa-plus\"></i> Add Output\n </button>\n }\n </div>\n \n @if (getOutputParams().length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No output parameters defined\" />\n } @else {\n <div class=\"params-grid\">\n @for (param of getOutputParams(); track param.ID) {\n <div class=\"param-card\"\n [class.clickable]=\"true\"\n (click)=\"onParamClick(param, $event)\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <div class=\"param-badges\">\n @if (param.IsArray) {\n <span class=\"array-badge\">Array</span>\n }\n @if (EditMode) {\n <button class=\"param-edit-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"param-delete-btn\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"param-details\">\n <div class=\"param-type\">{{ param.ValueType }}</div>\n @if (param.Description) {\n <div class=\"param-description\">{{ param.Description }}</div>\n }\n @if (param.DefaultValue) {\n <div class=\"param-default\">\n <span class=\"default-label\">Default:</span>\n <code>{{ param.DefaultValue }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Code & Generation Section (Only for Generated type) -->\n @if (record.Type === 'Generated') {\n <mj-accordion-panel SectionKey=\"code\" SectionTitle=\"Code &amp; Generation\" SectionIcon=\"fa-solid fa-code\"\n [Expanded]=\"expandedSections.code\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n Code &amp; Generation\n @if (record.CodeLocked) {\n <span style=\"background: var(--mj-status-warning); color: var(--mj-color-warning-800); padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n <i class=\"fa-solid fa-lock\"></i> Locked\n </span>\n }\n </span>\n </ng-template>\n \n <div class=\"phone-flush-x\" style=\"padding: 16px;\">\n @if (EditMode) {\n <div class=\"generation-panel\">\n <h3><i class=\"fa-solid fa-robot\"></i> AI Generation</h3>\n <div class=\"prompt-section\">\n <label>User Prompt</label>\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.UserPrompt\"\n name=\"userPrompt\"\n [rows]=\"8\"\n placeholder=\"Describe what this action should do...\"\n style=\"width: 100%; min-height: 120px;\">\n </textarea>\n </div>\n <div class=\"comments-section\">\n <label>Internal Comments (not sent to AI)</label>\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.UserComments\"\n name=\"userComments\"\n [rows]=\"2\"\n placeholder=\"Internal notes...\"\n style=\"width: 100%;\">\n </textarea>\n </div>\n <div class=\"generation-controls\">\n <mj-switch [(ngModel)]=\"record.CodeLocked\"\n name=\"codeLocked\">\n </mj-switch>\n <label style=\"margin-left: 8px;\">Lock Code (prevent regeneration)</label>\n </div>\n </div>\n }\n \n <div class=\"code-editor-section\">\n <div class=\"code-toolbar\">\n <h3><i class=\"fa-solid fa-file-code\"></i> Action Code</h3>\n <div class=\"code-actions\">\n @if (record.CodeComments) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"toggleCodeComments()\">\n <i class=\"fa-solid fa-comment\"></i> \n {{ showCodeComments ? 'Hide' : 'Show' }} AI Comments\n </button>\n }\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"copyToClipboard(record.Code || '')\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n </div>\n </div>\n <mj-code-editor \n [(ngModel)]=\"record.Code\"\n name=\"actionCode\"\n [readonly]=\"!EditMode || record.CodeLocked\"\n [language]=\"codeLanguage\"\n [lineWrapping]=\"true\"\n style=\"height: 400px; width: 100%;\">\n </mj-code-editor>\n \n @if (showCodeComments && record.CodeComments) {\n <div class=\"code-comments\">\n <h4><i class=\"fa-solid fa-robot\"></i> AI Explanation</h4>\n <p>{{ record.CodeComments }}</p>\n </div>\n }\n \n @if (EditMode && record.CodeApprovalStatus === 'Rejected') {\n <div class=\"approval-comments\">\n <label>Rejection Comments</label>\n <textarea class=\"mj-textarea\" [(ngModel)]=\"record.CodeApprovalComments\"\n name=\"codeApprovalComments\"\n [rows]=\"2\"\n placeholder=\"Explain why the code was rejected...\"\n style=\"width: 100%;\">\n </textarea>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Runtime Action Configuration Section (only for Type='Runtime') -->\n @if (isRuntimeAction) {\n <mj-accordion-panel SectionKey=\"runtime\" SectionTitle=\"Runtime Configuration &amp; Permissions\" SectionIcon=\"fa-solid fa-wand-magic-sparkles\"\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-wand-magic-sparkles\" style=\"color: var(--mj-status-warning);\"></i>\n Runtime Configuration &amp; Permissions\n <span style=\"color: var(--mj-text-muted); font-weight: 400; font-size: 0.85em;\">\n ({{ getRuntimeConfigSummary() }})\n </span>\n </span>\n </ng-template>\n\n <div class=\"phone-flush-x\" style=\"padding: 16px;\">\n @if (!runtimeConfig) {\n <mj-alert Variant=\"error\">\n <strong>Missing or malformed RuntimeActionConfiguration.</strong>\n This Runtime action cannot run until a valid configuration is supplied. Approval should not be granted in this state.\n </mj-alert>\n } @else {\n @if (getWildcardFlags().any) {\n <mj-alert Variant=\"warning\" Title=\"Wildcard permissions enabled\">\n <div style=\"color: var(--mj-text-secondary); font-size: 0.9em;\">\n This runtime action has one or more wildcard flags set that bypass the specific allowlists below:\n @if (getWildcardFlags().entity) { <strong>allowAnyEntity</strong> }\n @if (getWildcardFlags().action) { <strong>allowAnyAction</strong> }\n @if (getWildcardFlags().agent) { <strong>allowAnyAgent</strong> }\n . Approving grants this action unrestricted access to that namespace on behalf of any user who invokes it. Only approve if the action is framework-authored or you have personally reviewed every place it touches those resources.\n </div>\n </mj-alert>\n }\n <!-- Declared permissions \u2014 the security contract an approver is blessing -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; margin-bottom: 20px;\">\n <!-- Entities -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; padding: 12px; background: var(--mj-bg-surface-card);\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-database\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>\n Allowed Entities ({{ getAllowedEntities().length }})\n </div>\n @if (getAllowedEntities().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None requested</div>\n } @else {\n <div style=\"display: flex; flex-direction: column; gap: 4px;\">\n @for (e of getAllowedEntities(); track e.id) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 4px 8px; border-radius: 4px; font-size: 0.9em; color: var(--mj-text-primary);\">\n {{ e.name }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- Actions -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; padding: 12px; background: var(--mj-bg-surface-card);\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-bolt\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>\n Allowed Actions ({{ getAllowedActions().length }})\n </div>\n @if (getAllowedActions().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None requested</div>\n } @else {\n <div style=\"display: flex; flex-direction: column; gap: 4px;\">\n @for (a of getAllowedActions(); track a.id) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 4px 8px; border-radius: 4px; font-size: 0.9em; color: var(--mj-text-primary);\">\n {{ a.name }}\n </span>\n }\n </div>\n }\n </div>\n\n <!-- Agents -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; padding: 12px; background: var(--mj-bg-surface-card);\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-robot\" style=\"margin-right: 6px; color: var(--mj-brand-primary);\"></i>\n Allowed Agents ({{ getAllowedAgents().length }})\n </div>\n @if (getAllowedAgents().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None requested</div>\n } @else {\n <div style=\"display: flex; flex-direction: column; gap: 4px;\">\n @for (g of getAllowedAgents(); track g.id) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 4px 8px; border-radius: 4px; font-size: 0.9em; color: var(--mj-text-primary);\">\n {{ g.name }}\n </span>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Limits + libraries -->\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px;\">\n <div>\n <div style=\"font-weight: 600; margin-bottom: 6px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-gauge-high\" style=\"margin-right: 6px; color: var(--mj-text-muted);\"></i>\n Resource Limits\n </div>\n <div style=\"color: var(--mj-text-secondary); font-size: 0.9em;\">\n <div>Max memory: {{ getRuntimeLimits().maxMemoryMB }} MB</div>\n <div>Max bridge calls: {{ getRuntimeLimits().maxBridgeCalls }}</div>\n @if (record.MaxExecutionTimeMS) {\n <div>Max execution time: {{ record.MaxExecutionTimeMS }} ms</div>\n }\n </div>\n </div>\n <div>\n <div style=\"font-weight: 600; margin-bottom: 6px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-book\" style=\"margin-right: 6px; color: var(--mj-text-muted);\"></i>\n Additional Libraries\n </div>\n @if (getRequestedLibraries().length === 0) {\n <div style=\"color: var(--mj-text-muted); font-style: italic;\">None (only default set: lodash, date-fns, uuid, validator)</div>\n } @else {\n <div style=\"display: flex; flex-wrap: wrap; gap: 4px;\">\n @for (lib of getRequestedLibraries(); track lib.name) {\n <span style=\"background: var(--mj-bg-surface-sunken); padding: 2px 8px; border-radius: 10px; font-size: 0.85em;\">\n {{ lib.name }}@if (lib.version) {<span style=\"color: var(--mj-text-muted);\"> @{{ lib.version }}</span>}\n </span>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Code payload -->\n <div>\n <div style=\"font-weight: 600; margin-bottom: 6px; color: var(--mj-text-primary);\">\n <i class=\"fa-solid fa-code\" style=\"margin-right: 6px; color: var(--mj-text-muted);\"></i>\n JavaScript Payload\n </div>\n <pre style=\"background: var(--mj-bg-surface-sunken); color: var(--mj-text-primary); padding: 12px; border-radius: 4px; overflow-x: auto; max-height: 400px; font-family: 'SF Mono', Monaco, Consolas, monospace; font-size: 0.85em; margin: 0;\"><code>{{ record.Code }}</code></pre>\n </div>\n\n <!-- Approval actions (Runtime-specific labels) -->\n @if (EditMode && record.CodeApprovalStatus === 'Pending') {\n <mj-alert Variant=\"warning\" Title=\"Approval required before this Runtime action can execute.\" class=\"approval-required-alert\">\n <div style=\"color: var(--mj-text-secondary); font-size: 0.9em; margin-bottom: 12px;\">\n Approving grants this action the permissions listed above on behalf of any user who invokes it. Review the code and permissions carefully before approving.\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button class=\"mj-button mj-button-primary\" (click)=\"approveCode()\">\n <i class=\"fa-solid fa-check\"></i> Approve\n </button>\n <button class=\"mj-button\" (click)=\"rejectCode()\">\n <i class=\"fa-solid fa-ban\"></i> Reject\n </button>\n </div>\n </mj-alert>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Result Codes Section -->\n <mj-accordion-panel SectionKey=\"result-codes\" SectionTitle=\"Result Codes\" SectionIcon=\"fa-solid fa-flag-checkered\" [SectionCount]=\"ResultCodes.length\"\n [Expanded]=\"expandedSections.resultCodes\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-flag-checkered\" style=\"color: var(--mj-text-muted);\"></i>\n Result Codes\n @if (resultCodes.length > 0) {\n <span style=\"background: var(--mj-status-success); color: var(--mj-text-inverse); padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ resultCodes.length }}\n </span>\n }\n </span>\n </ng-template>\n \n <div class=\"phone-flush-x\" style=\"padding: 16px;\">\n <!-- Add Result Code Button -->\n @if (EditMode && record.IsSaved) {\n <div style=\"display: flex; justify-content: flex-end; margin-bottom: 12px;\">\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addResultCode()\">\n <i class=\"fa-solid fa-plus\"></i> Add Result Code\n </button>\n </div>\n }\n \n @if (isLoadingResultCodes) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading result codes...\n </div>\n } @else if (resultCodes.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-flag-checkered\"\n Title=\"No result codes defined\"\n [Message]=\"EditMode && record.IsSaved ? 'Add result codes to define possible outcomes' : ''\" />\n } @else {\n <div class=\"result-codes-grid\">\n @for (code of resultCodes; track code.ID) {\n <div class=\"result-code-card\" \n [class.success]=\"code.IsSuccess\" \n [class.failure]=\"!code.IsSuccess\"\n [class.clickable]=\"true\"\n (click)=\"onResultCodeClick(code, $event)\">\n <div class=\"result-icon\">\n <i [class]=\"code.IsSuccess ? 'fa-solid fa-check-circle' : 'fa-solid fa-times-circle'\"></i>\n </div>\n <div class=\"result-content\">\n <div class=\"result-code\">{{ code.ResultCode }}</div>\n @if (code.Description) {\n <div class=\"result-description\">{{ code.Description }}</div>\n }\n </div>\n @if (EditMode) {\n <div class=\"result-actions\">\n <button class=\"result-edit-btn\" (click)=\"editResultCode(code); $event.stopPropagation()\" title=\"Edit result code\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n <button class=\"result-delete-btn\" (click)=\"deleteResultCode(code); $event.stopPropagation()\" title=\"Delete result code\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Execution & Monitoring Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel SectionKey=\"execution\" SectionTitle=\"Execution &amp; Monitoring\" SectionIcon=\"fa-solid fa-chart-line\"\n [Expanded]=\"expandedSections.execution\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-chart-line\" style=\"color: var(--mj-text-muted);\"></i>\n Execution &amp; Monitoring\n </span>\n </ng-template>\n \n <div class=\"phone-flush-x\" style=\"padding: 16px;\">\n @if (isLoadingExecutions) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading executions...\n </div>\n } @else if (recentExecutions.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-chart-line\"\n Title=\"No executions yet\" />\n } @else {\n <div class=\"execution-stats-row\">\n <div class=\"stat-box\">\n <i class=\"fa-solid fa-tachometer-alt\"></i>\n <div class=\"stat-info\">\n <div class=\"stat-label\" style=\"color: var(--mj-text-primary);\">Avg Duration</div>\n <div class=\"stat-value\" style=\"color: var(--mj-text-primary);\">{{ formatDuration(executionStats.avgDuration) }}</div>\n </div>\n </div>\n <div class=\"stat-box\">\n <i class=\"fa-solid fa-check-circle\" [style.color]=\"getSuccessRateColor()\"></i>\n <div class=\"stat-info\">\n <div class=\"stat-label\" style=\"color: var(--mj-text-primary);\">Success Rate</div>\n <div class=\"stat-value\" [style.color]=\"getSuccessRateColor()\" style=\"font-weight: 600;\">{{ executionStats.successRate.toFixed(0) }}%</div>\n </div>\n </div>\n <div class=\"stat-box\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <div class=\"stat-info\">\n <div class=\"stat-label\" style=\"color: var(--mj-text-primary);\">Total Runs</div>\n <div class=\"stat-value\" style=\"color: var(--mj-text-primary);\">{{ executionStats.totalRuns }}</div>\n </div>\n </div>\n </div>\n\n <h3 style=\"margin-top: 24px;\"><i class=\"fa-solid fa-history\"></i> Recent Executions</h3>\n <div class=\"executions-table\">\n <table>\n <thead>\n <tr>\n <th>Started</th>\n <th>Duration</th>\n <th>User</th>\n <th>Result</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (execution of recentExecutions; track execution.ID) {\n <tr class=\"execution-row\" [class.success]=\"isExecutionSuccess(execution)\">\n <td>{{ execution.StartedAt | date:'short' }}</td>\n <td>\n @if (execution.EndedAt) {\n {{ formatDuration(getExecutionDuration(execution)) }}\n } @else {\n <span class=\"running\">Running...</span>\n }\n </td>\n <td>{{ execution.User }}</td>\n <td>\n <span class=\"result-code\" \n [class.success]=\"isExecutionSuccess(execution)\"\n [class.failure]=\"!isExecutionSuccess(execution)\">\n {{ execution.ResultCode }}\n </span>\n </td>\n <td>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"navigateToExecution(execution.ID)\">\n <i class=\"fa-solid fa-external-link\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Related Configuration Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel SectionKey=\"related\" SectionTitle=\"Related Configuration\" SectionIcon=\"fa-solid fa-cogs\"\n [Expanded]=\"expandedSections.configuration\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: var(--mj-text-muted);\"></i>\n Related Configuration\n </span>\n </ng-template>\n \n <div class=\"phone-flush-x\" style=\"padding: 16px;\">\n <!-- Libraries -->\n <div class=\"config-subsection\">\n <h3><i class=\"fa-solid fa-book\"></i> Libraries</h3>\n @if (isLoadingLibraries) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading libraries...\n </div>\n } @else if (actionLibraries.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-book\"\n Title=\"No libraries configured\" />\n } @else {\n <div class=\"library-cards\">\n @for (lib of libraries; track lib.ID; let i = $index) {\n <div class=\"library-card\" (click)=\"navigateToLibrary(lib.ID)\">\n <i class=\"fa-solid fa-book\"></i>\n <div class=\"library-info\">\n <div class=\"library-name\">{{ lib.Name }}</div>\n @if (actionLibraries[i].ItemsUsed) {\n <div class=\"library-items\">{{ actionLibraries[i].ItemsUsed }}</div>\n }\n </div>\n <i class=\"fa-solid fa-external-link\"></i>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Other Related Entities -->\n <div class=\"related-entities-grid\">\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-shield-alt\"></i>\n <span>Authorizations</span>\n <span class=\"entity-count\">View</span>\n </div>\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Contexts</span>\n <span class=\"entity-count\">View</span>\n </div>\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-calendar\"></i>\n <span>Scheduled Actions</span>\n <span class=\"entity-count\">View</span>\n </div>\n <div class=\"related-entity-link\">\n <i class=\"fa-solid fa-cube\"></i>\n <span>Entity Actions</span>\n <span class=\"entity-count\">View</span>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n }\n </mj-accordion-sections>\n </div>\n </div>\n </form>\n</mj-record-form-container>\n}\n\n<!-- Action Test Harness Dialog -->\n<mj-action-test-harness-dialog\n [Action]=\"record\"\n [ActionParams]=\"actionParams\"\n [IsOpen]=\"showTestHarness\"\n (Close)=\"onTestHarnessVisibilityChanged(false)\">\n</mj-action-test-harness-dialog>", styles: ["/* Enable flex layout for full-height scrolling */\n:host {\n display: block;\n height: 100%;\n}\n\n/* positions the Runtime-action approval alert (mj-alert is margin-less but for bottom) */\n.approval-required-alert { margin-top: 16px; }\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n min-height: 0 !important;\n}\n\n/* Hero Header Section */\n.action-hero-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 32px;\n margin: -20px -20px 24px -20px;\n border-radius: 0 0 var(--mj-radius-lg) var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-md);\n}\n\n.hero-content {\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.action-identity {\n display: flex;\n align-items: flex-start;\n gap: 24px;\n margin-bottom: 24px;\n}\n\n.action-icon-wrapper {\n width: 80px;\n height: 80px;\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n}\n\n.action-icon-wrapper i {\n font-size: var(--mj-text-4xl);\n}\n\n.action-info {\n flex: 1;\n min-width: 0;\n}\n\n.action-title-row {\n display: flex;\n align-items: center;\n gap: 16px;\n margin-bottom: 12px;\n flex-wrap: wrap;\n}\n\n.action-title {\n margin: 0;\n font-size: 2em;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-inverse);\n}\n\n.action-name-input {\n font-size: 1.8em;\n font-weight: var(--mj-font-semibold);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n min-width: 400px;\n}\n\n.action-name-input::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n.action-badges {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.status-badge, .type-badge, .approval-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n}\n\n.action-category {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 0.95em;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n margin-bottom: 12px;\n}\n\n.action-category:hover {\n color: var(--mj-text-inverse);\n transform: translateX(4px);\n}\n\n.action-description {\n color: color-mix(in srgb, var(--mj-text-inverse) 90%, transparent);\n font-size: 1.05em;\n line-height: var(--mj-leading-relaxed);\n margin: 0;\n}\n\n.action-description-input {\n width: 100%;\n max-width: 600px;\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border: 2px solid color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n color: var(--mj-text-inverse);\n border-radius: var(--mj-radius-md);\n}\n\n.action-description-input::placeholder {\n color: color-mix(in srgb, var(--mj-text-inverse) 60%, transparent);\n}\n\n/* Quick Stats */\n.action-stats {\n display: flex;\n gap: 24px;\n margin-bottom: 24px;\n flex-wrap: wrap;\n}\n\n.stat-card {\n background: color-mix(in srgb, var(--mj-text-inverse) 10%, transparent);\n backdrop-filter: blur(10px);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border-radius: var(--mj-radius-lg);\n padding: 16px 24px;\n display: flex;\n align-items: center;\n gap: 16px;\n min-width: 160px;\n}\n\n.stat-card i {\n font-size: var(--mj-text-2xl);\n color: color-mix(in srgb, var(--mj-text-inverse) 80%, transparent);\n}\n\n.stat-content {\n display: flex;\n flex-direction: column;\n}\n\n.stat-value {\n font-size: 1.4em;\n font-weight: var(--mj-font-bold);\n color: var(--mj-text-inverse);\n}\n\n.stat-label {\n font-size: var(--mj-text-sm);\n color: color-mix(in srgb, var(--mj-text-inverse) 70%, transparent);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Hero Actions */\n.hero-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.hero-actions button {\n backdrop-filter: blur(10px);\n}\n\n/* Main Content Sections */\n.action-content {\n padding: 0 20px 20px;\n}\n\n.content-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n margin-bottom: 20px;\n overflow: hidden;\n transition: all var(--mj-transition-base);\n}\n\n.content-section:hover {\n box-shadow: var(--mj-shadow-md);\n}\n\n.section-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n background: var(--mj-bg-surface-elevated);\n cursor: pointer;\n user-select: none;\n transition: background var(--mj-transition-base);\n}\n\n.section-header:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 1.3em;\n color: var(--mj-text-primary);\n flex: 1;\n}\n\n.section-header i:first-child {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.section-count {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n}\n\n.toggle-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s;\n}\n\n.toggle-icon.rotated {\n transform: rotate(-90deg);\n}\n\n.section-content {\n padding: 24px;\n animation: slideDown 0.3s ease;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n}\n\n.overview-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.overview-field label {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.required {\n color: var(--mj-status-error);\n}\n\n.full-width {\n width: 100%;\n}\n\n.overview-display {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 24px;\n}\n\n.display-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.display-field label {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.display-value {\n font-size: 1.1em;\n color: var(--mj-text-primary);\n}\n\n.display-value.code {\n font-family: 'Courier New', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.approval-date {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-left: 8px;\n}\n\n/* Code Section */\n.generation-panel {\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.generation-panel h3 {\n margin: 0 0 16px 0;\n color: var(--mj-color-indigo-500);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.prompt-section, .comments-section {\n margin-bottom: 16px;\n}\n\n.prompt-section label, .comments-section label {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n}\n\n.generation-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.code-locked-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.code-editor-section {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n}\n\n.code-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.code-toolbar h3 {\n margin: 0;\n font-size: 1.1em;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-actions {\n display: flex;\n gap: 8px;\n}\n\n.code-comments {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin-top: 16px;\n}\n\n.code-comments h4 {\n margin: 0 0 8px 0;\n color: var(--mj-status-info);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.code-comments p {\n margin: 0;\n color: var(--mj-text-secondary);\n line-height: var(--mj-leading-relaxed);\n}\n\n.approval-comments {\n margin-top: 16px;\n}\n\n.approval-comments label {\n display: block;\n margin-bottom: 8px;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-status-error);\n}\n\n/* Parameters Section */\n.params-section {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-lg);\n padding: 20px;\n}\n\n.params-section.params-section-compact {\n padding: 12px 20px;\n}\n\n.params-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.params-header h3 {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.params-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n.param-card {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n transition: all var(--mj-transition-base);\n}\n\n.param-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.param-card.required {\n border-color: var(--mj-status-warning);\n}\n\n.param-card.clickable {\n cursor: pointer;\n}\n\n.param-card.clickable:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n}\n\n.param-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.param-name {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.param-badges {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.param-edit-btn,\n.param-delete-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-sm);\n transition: all var(--mj-transition-base);\n}\n\n.param-edit-btn:hover {\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n color: var(--mj-status-info);\n}\n\n.param-delete-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.param-details {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.required-badge {\n background: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.array-badge {\n background: var(--mj-color-indigo-500);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-medium);\n}\n\n.param-type {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n margin-bottom: 8px;\n}\n\n.param-description {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n margin-bottom: 8px;\n}\n\n.param-default {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.default-label {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n}\n\n.param-default code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: var(--mj-radius-sm);\n font-family: 'Courier New', monospace;\n color: var(--mj-color-error-400);\n}\n\n\n/* Result Codes Section */\n.result-codes-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n}\n\n/* Phone: one full-width column, so a card can never be wider than the form. */\n@media (max-width: 768px) {\n .result-codes-grid {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n.result-code-card {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 16px;\n border: 2px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n transition: all var(--mj-transition-base);\n position: relative;\n}\n\n.result-code-card.clickable {\n cursor: pointer;\n}\n\n.result-code-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.result-code-card.success {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-code-card.failure {\n border-color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity var(--mj-transition-base);\n}\n\n.result-code-card:hover .result-actions {\n opacity: 1;\n}\n\n.result-edit-btn,\n.result-delete-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n padding: 4px 8px;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n font-size: var(--mj-text-sm);\n}\n\n.result-edit-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.result-delete-btn:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-error);\n}\n\n.result-icon {\n font-size: 1.5em;\n flex-shrink: 0;\n}\n\n.result-code-card.success .result-icon {\n color: var(--mj-status-success);\n}\n\n.result-code-card.failure .result-icon {\n color: var(--mj-status-error);\n}\n\n.result-content {\n flex: 1;\n min-width: 0;\n}\n\n.result-code {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n font-family: 'Courier New', monospace;\n}\n\n.result-description {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n/* Execution Section */\n.execution-stats-row {\n display: flex;\n gap: 20px;\n margin-bottom: 32px;\n flex-wrap: wrap;\n}\n\n.stat-box {\n flex: 1;\n min-width: 200px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 20px;\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.stat-box i {\n font-size: 2em;\n color: var(--mj-text-muted);\n}\n\n.stat-info {\n flex: 1;\n}\n\n.executions-table {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n}\n\n.executions-table table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.executions-table th {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n text-align: left;\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.executions-table td {\n padding: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.execution-row {\n transition: background var(--mj-transition-base);\n}\n\n.execution-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.execution-row.success {\n background: color-mix(in srgb, var(--mj-status-success) 5%, transparent);\n}\n\n.running {\n color: var(--mj-status-warning);\n font-style: italic;\n}\n\n.result-code {\n display: inline-block;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n font-family: 'Courier New', monospace;\n}\n\n.result-code.success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.result-code.failure {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Configuration Section */\n.config-subsection {\n margin-bottom: 32px;\n}\n\n.config-subsection h3 {\n margin: 0 0 16px 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.library-cards {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.library-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.library-card:hover {\n background: var(--mj-bg-surface-hover);\n transform: translateX(4px);\n}\n\n.library-card i:first-child {\n font-size: 1.5em;\n color: var(--mj-text-muted);\n}\n\n.library-info {\n flex: 1;\n min-width: 0;\n}\n\n.library-name {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.library-items {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n font-family: 'Courier New', monospace;\n}\n\n.related-entities-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.related-entity-link {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n\n.related-entity-link:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n}\n\n.related-entity-link i {\n font-size: 1.2em;\n color: var(--mj-text-muted);\n}\n\n.related-entity-link span:first-of-type {\n flex: 1;\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.entity-count {\n color: var(--mj-brand-primary);\n font-size: var(--mj-text-sm);\n}\n\n/* Common States */\n.loading-state {\n text-align: center;\n padding: 60px;\n color: var(--mj-text-muted);\n}\n\n.loading-state i {\n font-size: 2em;\n margin-bottom: 12px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .action-hero-header {\n padding: 20px;\n }\n\n .action-identity {\n flex-direction: column;\n text-align: center;\n }\n\n .action-icon-wrapper {\n margin: 0 auto;\n }\n\n .action-title-row {\n justify-content: center;\n }\n\n .action-stats {\n justify-content: center;\n }\n\n .params-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Hero header row: title block left, actions right; on a phone the actions drop under the title. */\n.hero-header-row {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.action-buttons {\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: flex-end;\n}\n\n@media (max-width: 768px) {\n .hero-header-row {\n flex-direction: column;\n }\n\n .action-buttons {\n width: 100%;\n align-items: stretch;\n }\n\n .action-buttons > div {\n display: flex;\n gap: 8px;\n }\n\n .action-buttons > div > button {\n flex: 1;\n }\n}\n\n/* Phone: sections sit on the page's 12px gutter, so the container and the inline-padded body\n wrappers drop their side padding (they would indent every section twice). */\n@media (max-width: 768px) {\n .configuration-sections {\n padding: 12px 0 !important;\n border-top: 0 !important;\n background: transparent !important;\n }\n\n .phone-flush-x {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n}\n", "/* ============================================\n PHONE HERO (design call 6A), shared by the custom forms that own a hero.\n Under 768px the hero keeps icon, name, status and the primary action. Anything tagged\n .phone-hero-detail hides while the hero is compact and comes back when the summary line is\n tapped. Edit mode is untouched: the host only gets .hero-compact / .hero-view in view mode.\n Host: .phone-hero [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\"\n Tags: .phone-hero-detail hidden while compact\n .phone-hero-hide hidden in view mode (said elsewhere on the phone hero)\n .phone-hero-only shown only on phones\n .phone-hero-top a title + action row that stacks\n .phone-hero-actions / .phone-hero-run the primary action, full width at 44px\n .phone-hero-stats a metric row that reflows to a 2-up grid when the hero is expanded\n .phone-hero-status a status chip in the identity row (with .phone-hero-only)\n ============================================ */\n.phone-hero-summary,\n.phone-hero-only {\n display: none;\n}\n\n@media (max-width: 768px) {\n .phone-hero {\n padding: 12px !important;\n }\n\n /* !important: several heroes carry inline display/padding styles on these rows */\n .phone-hero.hero-compact .phone-hero-detail,\n .phone-hero.hero-view .phone-hero-hide {\n display: none !important;\n }\n\n .phone-hero-only {\n display: inline-flex;\n }\n\n /* Lower specificity than the compact rule above, so a compact hero still hides it */\n .phone-hero .phone-hero-stats {\n display: grid !important;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n }\n\n .phone-hero-status {\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n vertical-align: middle;\n white-space: nowrap;\n }\n\n /* data-status comes from RunStatusKind(); the -text / -bg pairs keep contrast in both themes */\n .phone-hero-status[data-status=\"running\"] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n .phone-hero-status[data-status=\"success\"] { color: var(--mj-status-success-text); background: var(--mj-status-success-bg); }\n .phone-hero-status[data-status=\"error\"] { color: var(--mj-status-error-text); background: var(--mj-status-error-bg); }\n .phone-hero-status[data-status=\"info\"] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n\n .phone-hero-top {\n flex-direction: column;\n align-items: stretch;\n gap: 10px;\n }\n\n .phone-hero-actions {\n width: 100%;\n }\n\n .phone-hero .phone-hero-run {\n width: 100%;\n min-height: 44px;\n justify-content: center;\n }\n\n /* Inherits the hero's text colour, so it reads on light heroes and on the brand-blue\n Queries hero alike; a muted token would be grey on blue. */\n .phone-hero-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 44px;\n margin-top: 8px;\n padding: 0 4px;\n border: 0;\n border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent);\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-sm);\n text-align: left;\n cursor: pointer;\n opacity: 0.85;\n }\n\n .phone-hero-summary:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n }\n\n .phone-hero-summary-text {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .phone-hero-summary > i {\n flex-shrink: 0;\n transition: transform 0.15s ease;\n }\n\n .phone-hero-summary[aria-expanded=\"true\"] > i {\n transform: rotate(180deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .phone-hero-summary > i {\n transition: none;\n }\n}\n"] }]
2582
2631
  }], null, null); })();
2583
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJActionFormComponentExtended, { className: "MJActionFormComponentExtended", filePath: "src/lib/custom/Actions/action-form.component.ts", lineNumber: 18 }); })();
2632
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJActionFormComponentExtended, { className: "MJActionFormComponentExtended", filePath: "src/lib/custom/Actions/action-form.component.ts", lineNumber: 20 }); })();
2584
2633
  //# sourceMappingURL=action-form.component.js.map