@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
@@ -10,6 +10,8 @@ import { BaseFormComponent } from '@memberjunction/ng-base-forms';
10
10
  import { SharedService } from '@memberjunction/ng-shared';
11
11
  import { CompositeKey } from '@memberjunction/core';
12
12
  import { MJActionExecutionLogFormComponent } from '../../generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component';
13
+ import { JoinHeroSummary } from '../../shared/phone-hero';
14
+ import { PhoneSectionsState } from '../../shared/phone-sections-state';
13
15
  import * as i0 from "@angular/core";
14
16
  import * as i1 from "@angular/common";
15
17
  import * as i2 from "@angular/forms";
@@ -51,10 +53,10 @@ function MJActionExecutionLogFormComponentExtended_Conditional_30_Template(rf, c
51
53
  i0.ɵɵelementStart(0, "div", 18)(1, "span", 19);
52
54
  i0.ɵɵtext(2, "Action");
53
55
  i0.ɵɵelementEnd();
54
- i0.ɵɵelementStart(3, "span", 20)(4, "button", 29);
56
+ i0.ɵɵelementStart(3, "span", 20)(4, "button", 34);
55
57
  i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToAction()); });
56
58
  i0.ɵɵtext(5);
57
- i0.ɵɵelement(6, "i", 30);
59
+ i0.ɵɵelement(6, "i", 35);
58
60
  i0.ɵɵelementEnd()()();
59
61
  } if (rf & 2) {
60
62
  const ctx_r0 = i0.ɵɵnextContext();
@@ -66,24 +68,39 @@ function MJActionExecutionLogFormComponentExtended_Conditional_31_Template(rf, c
66
68
  i0.ɵɵelementStart(0, "div", 18)(1, "span", 19);
67
69
  i0.ɵɵtext(2, "User");
68
70
  i0.ɵɵelementEnd();
69
- i0.ɵɵelementStart(3, "span", 20)(4, "button", 29);
71
+ i0.ɵɵelementStart(3, "span", 20)(4, "button", 34);
70
72
  i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_31_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.navigateToUser()); });
71
73
  i0.ɵɵtext(5);
72
- i0.ɵɵelement(6, "i", 30);
74
+ i0.ɵɵelement(6, "i", 35);
73
75
  i0.ɵɵelementEnd()()();
74
76
  } if (rf & 2) {
75
77
  const ctx_r0 = i0.ɵɵnextContext();
76
78
  i0.ɵɵadvance(5);
77
79
  i0.ɵɵtextInterpolate1(" ", ctx_r0.user.Name, " ");
78
80
  } }
79
- function MJActionExecutionLogFormComponentExtended_ng_template_35_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵelement(0, "i", 31);
81
+ function MJActionExecutionLogFormComponentExtended_Conditional_32_Template(rf, ctx) { if (rf & 1) {
82
+ const _r4 = i0.ɵɵgetCurrentView();
83
+ i0.ɵɵelementStart(0, "button", 36);
84
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ToggleHeroDetails()); });
85
+ i0.ɵɵelementStart(1, "span", 37);
86
+ i0.ɵɵtext(2);
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵelement(3, "i", 38);
89
+ i0.ɵɵelementEnd();
90
+ } if (rf & 2) {
91
+ const ctx_r0 = i0.ɵɵnextContext();
92
+ i0.ɵɵattribute("aria-expanded", ctx_r0.HeroDetailsOpen);
93
+ i0.ɵɵadvance(2);
94
+ i0.ɵɵtextInterpolate(ctx_r0.HeroSummary);
95
+ } }
96
+ function MJActionExecutionLogFormComponentExtended_ng_template_37_Template(rf, ctx) { if (rf & 1) {
97
+ i0.ɵɵelement(0, "i", 39);
81
98
  i0.ɵɵtext(1, " Execution Details ");
82
99
  } }
83
- function MJActionExecutionLogFormComponentExtended_Conditional_69_ng_template_1_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelement(0, "i", 54);
100
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_ng_template_1_Template(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵelement(0, "i", 62);
85
102
  i0.ɵɵtext(1, " Parameters ");
86
- i0.ɵɵelementStart(2, "span", 55);
103
+ i0.ɵɵelementStart(2, "span", 63);
87
104
  i0.ɵɵtext(3);
88
105
  i0.ɵɵelementEnd();
89
106
  } if (rf & 2) {
@@ -91,36 +108,36 @@ function MJActionExecutionLogFormComponentExtended_Conditional_69_ng_template_1_
91
108
  i0.ɵɵadvance(3);
92
109
  i0.ɵɵtextInterpolate(ctx_r0.paramCounts.All);
93
110
  } }
94
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_28_Template(rf, ctx) { if (rf & 1) {
95
- const _r5 = i0.ɵɵgetCurrentView();
96
- i0.ɵɵelementStart(0, "button", 56);
97
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.searchText = ""); });
98
- i0.ɵɵelement(1, "i", 57);
111
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_28_Template(rf, ctx) { if (rf & 1) {
112
+ const _r6 = i0.ɵɵgetCurrentView();
113
+ i0.ɵɵelementStart(0, "button", 64);
114
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.searchText = ""); });
115
+ i0.ɵɵelement(1, "i", 65);
99
116
  i0.ɵɵelementEnd();
100
117
  } }
101
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_32_Template(rf, ctx) { if (rf & 1) {
118
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_32_Template(rf, ctx) { if (rf & 1) {
102
119
  i0.ɵɵelement(0, "i", 14);
103
120
  } if (rf & 2) {
104
121
  const ctx_r0 = i0.ɵɵnextContext(2);
105
122
  i0.ɵɵproperty("ngClass", ctx_r0.sortDir === "asc" ? "fa-arrow-down-short-wide" : "fa-arrow-up-wide-short");
106
123
  } }
107
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_35_Template(rf, ctx) { if (rf & 1) {
124
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_35_Template(rf, ctx) { if (rf & 1) {
108
125
  i0.ɵɵelement(0, "i", 14);
109
126
  } if (rf & 2) {
110
127
  const ctx_r0 = i0.ɵɵnextContext(2);
111
128
  i0.ɵɵproperty("ngClass", ctx_r0.sortDir === "asc" ? "fa-arrow-down-a-z" : "fa-arrow-up-z-a");
112
129
  } }
113
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_39_Template(rf, ctx) { if (rf & 1) {
114
- const _r6 = i0.ɵɵgetCurrentView();
115
- i0.ɵɵelementStart(0, "div", 53)(1, "div", 58)(2, "span", 59);
130
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_39_Template(rf, ctx) { if (rf & 1) {
131
+ const _r7 = i0.ɵɵgetCurrentView();
132
+ i0.ɵɵelementStart(0, "div", 61)(1, "div", 66)(2, "span", 67);
116
133
  i0.ɵɵtext(3, "Raw JSON");
117
134
  i0.ɵɵelementEnd();
118
- i0.ɵɵelementStart(4, "button", 60);
119
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_39_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.copyToClipboard(ctx_r0.formattedParams)); });
120
- i0.ɵɵelement(5, "i", 61);
135
+ i0.ɵɵelementStart(4, "button", 68);
136
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_39_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.copyToClipboard(ctx_r0.formattedParams)); });
137
+ i0.ɵɵelement(5, "i", 69);
121
138
  i0.ɵɵelementEnd()();
122
- i0.ɵɵelementStart(6, "mj-code-editor", 62);
123
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_39_Template_mj_code_editor_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.formattedParams, $event) || (ctx_r0.formattedParams = $event); return i0.ɵɵresetView($event); });
139
+ i0.ɵɵelementStart(6, "mj-code-editor", 70);
140
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_39_Template_mj_code_editor_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.formattedParams, $event) || (ctx_r0.formattedParams = $event); return i0.ɵɵresetView($event); });
124
141
  i0.ɵɵelementEnd()();
125
142
  } if (rf & 2) {
126
143
  const ctx_r0 = i0.ɵɵnextContext(2);
@@ -128,169 +145,169 @@ function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_39
128
145
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.formattedParams);
129
146
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
130
147
  } }
131
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_0_Template(rf, ctx) { if (rf & 1) {
132
- const _r7 = i0.ɵɵgetCurrentView();
133
- i0.ɵɵelementStart(0, "mj-empty-state", 65);
134
- i0.ɵɵlistener("Action", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_0_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.clearFilters()); });
148
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_0_Template(rf, ctx) { if (rf & 1) {
149
+ const _r8 = i0.ɵɵgetCurrentView();
150
+ i0.ɵɵelementStart(0, "mj-empty-state", 73);
151
+ i0.ɵɵlistener("Action", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_0_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.clearFilters()); });
135
152
  i0.ɵɵelementEnd();
136
153
  } }
137
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
138
- i0.ɵɵelement(0, "i", 38);
154
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
155
+ i0.ɵɵelement(0, "i", 46);
139
156
  } }
140
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
141
- i0.ɵɵelement(0, "i", 42);
157
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
158
+ i0.ɵɵelement(0, "i", 50);
142
159
  } }
143
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
144
- i0.ɵɵelement(0, "i", 40);
160
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
161
+ i0.ɵɵelement(0, "i", 48);
145
162
  } }
146
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
147
- const _r9 = i0.ɵɵgetCurrentView();
148
- i0.ɵɵelementStart(0, "button", 77);
149
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const p_r10 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleExpanded(p_r10)); });
163
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
164
+ const _r10 = i0.ɵɵgetCurrentView();
165
+ i0.ɵɵelementStart(0, "button", 85);
166
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const p_r11 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleExpanded(p_r11)); });
150
167
  i0.ɵɵelement(1, "i", 14);
151
168
  i0.ɵɵelementEnd();
152
169
  } if (rf & 2) {
153
- const p_r10 = i0.ɵɵnextContext().$implicit;
154
- i0.ɵɵclassProp("is-expanded", p_r10.Expanded);
155
- i0.ɵɵproperty("title", p_r10.Expanded ? "Collapse" : "Expand");
170
+ const p_r11 = i0.ɵɵnextContext().$implicit;
171
+ i0.ɵɵclassProp("is-expanded", p_r11.Expanded);
172
+ i0.ɵɵproperty("title", p_r11.Expanded ? "Collapse" : "Expand");
156
173
  i0.ɵɵadvance();
157
- i0.ɵɵproperty("ngClass", p_r10.Expanded ? "fa-chevron-up" : "fa-chevron-down");
174
+ i0.ɵɵproperty("ngClass", p_r11.Expanded ? "fa-chevron-up" : "fa-chevron-down");
158
175
  } }
159
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
160
- const _r11 = i0.ɵɵgetCurrentView();
161
- i0.ɵɵelementStart(0, "div", 76)(1, "mj-code-editor", 78);
162
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_19_Template_mj_code_editor_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r11); const p_r10 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(p_r10.FormattedValue, $event) || (p_r10.FormattedValue = $event); return i0.ɵɵresetView($event); });
176
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
177
+ const _r12 = i0.ɵɵgetCurrentView();
178
+ i0.ɵɵelementStart(0, "div", 84)(1, "mj-code-editor", 86);
179
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_19_Template_mj_code_editor_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r12); const p_r11 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(p_r11.FormattedValue, $event) || (p_r11.FormattedValue = $event); return i0.ɵɵresetView($event); });
163
180
  i0.ɵɵelementEnd()();
164
181
  } if (rf & 2) {
165
- const p_r10 = i0.ɵɵnextContext().$implicit;
182
+ const p_r11 = i0.ɵɵnextContext().$implicit;
166
183
  i0.ɵɵadvance();
167
- i0.ɵɵtwoWayProperty("ngModel", p_r10.FormattedValue);
168
- i0.ɵɵproperty("name", "param-" + p_r10.Name)("readonly", true)("language", "json")("lineWrapping", true);
184
+ i0.ɵɵtwoWayProperty("ngModel", p_r11.FormattedValue);
185
+ i0.ɵɵproperty("name", "param-" + p_r11.Name)("readonly", true)("language", "json")("lineWrapping", true);
169
186
  } }
170
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
171
- const _r8 = i0.ɵɵgetCurrentView();
172
- i0.ɵɵelementStart(0, "li", 66)(1, "div", 67)(2, "span", 68);
173
- i0.ɵɵconditionalCreate(3, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_3_Template, 1, 0, "i", 38)(4, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_4_Template, 1, 0, "i", 42)(5, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_5_Template, 1, 0, "i", 40);
187
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
188
+ const _r9 = i0.ɵɵgetCurrentView();
189
+ i0.ɵɵelementStart(0, "li", 74)(1, "div", 75)(2, "span", 76);
190
+ i0.ɵɵconditionalCreate(3, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_3_Template, 1, 0, "i", 46)(4, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_4_Template, 1, 0, "i", 50)(5, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_5_Template, 1, 0, "i", 48);
174
191
  i0.ɵɵtext(6);
175
192
  i0.ɵɵelementEnd();
176
- i0.ɵɵelementStart(7, "div", 69)(8, "span", 70);
193
+ i0.ɵɵelementStart(7, "div", 77)(8, "span", 78);
177
194
  i0.ɵɵtext(9);
178
195
  i0.ɵɵelementEnd();
179
- i0.ɵɵelementStart(10, "span", 71);
196
+ i0.ɵɵelementStart(10, "span", 79);
180
197
  i0.ɵɵelement(11, "i", 14);
181
198
  i0.ɵɵtext(12);
182
199
  i0.ɵɵelementEnd()();
183
- i0.ɵɵelementStart(13, "div", 72);
184
- i0.ɵɵconditionalCreate(14, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_14_Template, 2, 4, "button", 73);
185
- i0.ɵɵelementStart(15, "button", 74);
186
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Template_button_click_15_listener() { const p_r10 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.copyParamValue(p_r10)); });
187
- i0.ɵɵelement(16, "i", 61);
200
+ i0.ɵɵelementStart(13, "div", 80);
201
+ i0.ɵɵconditionalCreate(14, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_14_Template, 2, 4, "button", 81);
202
+ i0.ɵɵelementStart(15, "button", 82);
203
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Template_button_click_15_listener() { const p_r11 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.copyParamValue(p_r11)); });
204
+ i0.ɵɵelement(16, "i", 69);
188
205
  i0.ɵɵelementEnd()()();
189
- i0.ɵɵelementStart(17, "div", 75);
206
+ i0.ɵɵelementStart(17, "div", 83);
190
207
  i0.ɵɵtext(18);
191
208
  i0.ɵɵelementEnd();
192
- i0.ɵɵconditionalCreate(19, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Conditional_19_Template, 2, 5, "div", 76);
209
+ i0.ɵɵconditionalCreate(19, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Conditional_19_Template, 2, 5, "div", 84);
193
210
  i0.ɵɵelementEnd();
194
211
  } if (rf & 2) {
195
- const p_r10 = ctx.$implicit;
212
+ const p_r11 = ctx.$implicit;
196
213
  const ctx_r0 = i0.ɵɵnextContext(4);
197
- i0.ɵɵattribute("data-type", p_r10.Type);
214
+ i0.ɵɵattribute("data-type", p_r11.Type);
198
215
  i0.ɵɵadvance(2);
199
- i0.ɵɵattribute("data-type", p_r10.Type);
216
+ i0.ɵɵattribute("data-type", p_r11.Type);
200
217
  i0.ɵɵadvance();
201
- i0.ɵɵconditional(p_r10.Type === "Input" ? 3 : p_r10.Type === "Output" ? 4 : 5);
218
+ i0.ɵɵconditional(p_r11.Type === "Input" ? 3 : p_r11.Type === "Output" ? 4 : 5);
202
219
  i0.ɵɵadvance(3);
203
- i0.ɵɵtextInterpolate1(" ", ctx_r0.getTypeLabel(p_r10.Type), " ");
220
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.getTypeLabel(p_r11.Type), " ");
204
221
  i0.ɵɵadvance(3);
205
- i0.ɵɵtextInterpolate(p_r10.Name);
222
+ i0.ɵɵtextInterpolate(p_r11.Name);
206
223
  i0.ɵɵadvance();
207
- i0.ɵɵattribute("data-kind", p_r10.ValueKind);
224
+ i0.ɵɵattribute("data-kind", p_r11.ValueKind);
208
225
  i0.ɵɵadvance();
209
- i0.ɵɵproperty("ngClass", ctx_r0.getValueKindIcon(p_r10.ValueKind));
226
+ i0.ɵɵproperty("ngClass", ctx_r0.getValueKindIcon(p_r11.ValueKind));
210
227
  i0.ɵɵadvance();
211
- i0.ɵɵtextInterpolate1(" ", p_r10.ValueKind, " ");
228
+ i0.ɵɵtextInterpolate1(" ", p_r11.ValueKind, " ");
212
229
  i0.ɵɵadvance(2);
213
- i0.ɵɵconditional(p_r10.IsExpandable ? 14 : -1);
230
+ i0.ɵɵconditional(p_r11.IsExpandable ? 14 : -1);
214
231
  i0.ɵɵadvance(3);
215
- i0.ɵɵattribute("data-kind", p_r10.ValueKind);
232
+ i0.ɵɵattribute("data-kind", p_r11.ValueKind);
216
233
  i0.ɵɵadvance();
217
- i0.ɵɵtextInterpolate(p_r10.Preview);
234
+ i0.ɵɵtextInterpolate(p_r11.Preview);
218
235
  i0.ɵɵadvance();
219
- i0.ɵɵconditional(p_r10.IsExpandable && p_r10.Expanded ? 19 : -1);
236
+ i0.ɵɵconditional(p_r11.IsExpandable && p_r11.Expanded ? 19 : -1);
220
237
  } }
221
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_Template(rf, ctx) { if (rf & 1) {
222
- i0.ɵɵelementStart(0, "ul", 64);
223
- i0.ɵɵrepeaterCreate(1, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_For_2_Template, 20, 12, "li", 66, i0.ɵɵcomponentInstance().trackParam, true);
238
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_Template(rf, ctx) { if (rf & 1) {
239
+ i0.ɵɵelementStart(0, "ul", 72);
240
+ i0.ɵɵrepeaterCreate(1, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_For_2_Template, 20, 12, "li", 74, i0.ɵɵcomponentInstance().trackParam, true);
224
241
  i0.ɵɵelementEnd();
225
242
  } if (rf & 2) {
226
243
  const ctx_r0 = i0.ɵɵnextContext(3);
227
244
  i0.ɵɵadvance();
228
245
  i0.ɵɵrepeater(ctx_r0.filteredParameters);
229
246
  } }
230
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵconditionalCreate(0, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_0_Template, 1, 0, "mj-empty-state", 63)(1, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Conditional_1_Template, 3, 0, "ul", 64);
247
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Template(rf, ctx) { if (rf & 1) {
248
+ i0.ɵɵconditionalCreate(0, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_0_Template, 1, 0, "mj-empty-state", 71)(1, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Conditional_1_Template, 3, 0, "ul", 72);
232
249
  } if (rf & 2) {
233
250
  const ctx_r0 = i0.ɵɵnextContext(2);
234
251
  i0.ɵɵconditional(ctx_r0.filteredParameters.length === 0 ? 0 : 1);
235
252
  } }
236
- function MJActionExecutionLogFormComponentExtended_Conditional_69_Template(rf, ctx) { if (rf & 1) {
237
- const _r4 = i0.ɵɵgetCurrentView();
238
- i0.ɵɵelementStart(0, "mj-accordion-panel", 23);
239
- i0.ɵɵtemplate(1, MJActionExecutionLogFormComponentExtended_Conditional_69_ng_template_1_Template, 4, 1, "ng-template", 24);
240
- i0.ɵɵelementStart(2, "div", 32)(3, "div", 33)(4, "div", 34)(5, "button", 35);
241
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("All")); });
253
+ function MJActionExecutionLogFormComponentExtended_Conditional_71_Template(rf, ctx) { if (rf & 1) {
254
+ const _r5 = i0.ɵɵgetCurrentView();
255
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 31);
256
+ i0.ɵɵtemplate(1, MJActionExecutionLogFormComponentExtended_Conditional_71_ng_template_1_Template, 4, 1, "ng-template", 26);
257
+ i0.ɵɵelementStart(2, "div", 40)(3, "div", 41)(4, "div", 42)(5, "button", 43);
258
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("All")); });
242
259
  i0.ɵɵtext(6, " All ");
243
- i0.ɵɵelementStart(7, "span", 36);
260
+ i0.ɵɵelementStart(7, "span", 44);
244
261
  i0.ɵɵtext(8);
245
262
  i0.ɵɵelementEnd()();
246
- i0.ɵɵelementStart(9, "button", 37);
247
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("Input")); });
248
- i0.ɵɵelement(10, "i", 38);
263
+ i0.ɵɵelementStart(9, "button", 45);
264
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("Input")); });
265
+ i0.ɵɵelement(10, "i", 46);
249
266
  i0.ɵɵtext(11, " Input ");
250
- i0.ɵɵelementStart(12, "span", 36);
267
+ i0.ɵɵelementStart(12, "span", 44);
251
268
  i0.ɵɵtext(13);
252
269
  i0.ɵɵelementEnd()();
253
- i0.ɵɵelementStart(14, "button", 39);
254
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("Both")); });
255
- i0.ɵɵelement(15, "i", 40);
270
+ i0.ɵɵelementStart(14, "button", 47);
271
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("Both")); });
272
+ i0.ɵɵelement(15, "i", 48);
256
273
  i0.ɵɵtext(16, " In/Out ");
257
- i0.ɵɵelementStart(17, "span", 36);
274
+ i0.ɵɵelementStart(17, "span", 44);
258
275
  i0.ɵɵtext(18);
259
276
  i0.ɵɵelementEnd()();
260
- i0.ɵɵelementStart(19, "button", 41);
261
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("Output")); });
262
- i0.ɵɵelement(20, "i", 42);
277
+ i0.ɵɵelementStart(19, "button", 49);
278
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setTypeFilter("Output")); });
279
+ i0.ɵɵelement(20, "i", 50);
263
280
  i0.ɵɵtext(21, " Output ");
264
- i0.ɵɵelementStart(22, "span", 36);
281
+ i0.ɵɵelementStart(22, "span", 44);
265
282
  i0.ɵɵtext(23);
266
283
  i0.ɵɵelementEnd()()();
267
- i0.ɵɵelementStart(24, "div", 43)(25, "div", 44);
268
- i0.ɵɵelement(26, "i", 45);
269
- i0.ɵɵelementStart(27, "input", 46);
270
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_input_ngModelChange_27_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.searchText, $event) || (ctx_r0.searchText = $event); return i0.ɵɵresetView($event); });
284
+ i0.ɵɵelementStart(24, "div", 51)(25, "div", 52);
285
+ i0.ɵɵelement(26, "i", 53);
286
+ i0.ɵɵelementStart(27, "input", 54);
287
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_input_ngModelChange_27_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.searchText, $event) || (ctx_r0.searchText = $event); return i0.ɵɵresetView($event); });
271
288
  i0.ɵɵelementEnd();
272
- i0.ɵɵconditionalCreate(28, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_28_Template, 2, 0, "button", 47);
289
+ i0.ɵɵconditionalCreate(28, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_28_Template, 2, 0, "button", 55);
273
290
  i0.ɵɵelementEnd();
274
- i0.ɵɵelementStart(29, "div", 48)(30, "button", 49);
275
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleSort("type")); });
291
+ i0.ɵɵelementStart(29, "div", 56)(30, "button", 57);
292
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleSort("type")); });
276
293
  i0.ɵɵtext(31, " Type ");
277
- i0.ɵɵconditionalCreate(32, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_32_Template, 1, 1, "i", 14);
294
+ i0.ɵɵconditionalCreate(32, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_32_Template, 1, 1, "i", 14);
278
295
  i0.ɵɵelementEnd();
279
- i0.ɵɵelementStart(33, "button", 50);
280
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleSort("name")); });
296
+ i0.ɵɵelementStart(33, "button", 58);
297
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleSort("name")); });
281
298
  i0.ɵɵtext(34, " Name ");
282
- i0.ɵɵconditionalCreate(35, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_35_Template, 1, 1, "i", 14);
299
+ i0.ɵɵconditionalCreate(35, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_35_Template, 1, 1, "i", 14);
283
300
  i0.ɵɵelementEnd()();
284
- i0.ɵɵelementStart(36, "button", 51);
285
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_69_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleRawJson()); });
286
- i0.ɵɵelement(37, "i", 52);
301
+ i0.ɵɵelementStart(36, "button", 59);
302
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_71_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleRawJson()); });
303
+ i0.ɵɵelement(37, "i", 60);
287
304
  i0.ɵɵtext(38, " Raw ");
288
305
  i0.ɵɵelementEnd()()();
289
- i0.ɵɵconditionalCreate(39, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_39_Template, 7, 4, "div", 53)(40, MJActionExecutionLogFormComponentExtended_Conditional_69_Conditional_40_Template, 2, 1);
306
+ i0.ɵɵconditionalCreate(39, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_39_Template, 7, 4, "div", 61)(40, MJActionExecutionLogFormComponentExtended_Conditional_71_Conditional_40_Template, 2, 1);
290
307
  i0.ɵɵelementEnd()();
291
308
  } if (rf & 2) {
292
309
  const ctx_r0 = i0.ɵɵnextContext();
293
- i0.ɵɵproperty("Expanded", true);
310
+ i0.ɵɵproperty("SectionCount", ctx_r0.paramCounts.All)("Expanded", true);
294
311
  i0.ɵɵadvance(5);
295
312
  i0.ɵɵclassProp("active", ctx_r0.typeFilter === "All");
296
313
  i0.ɵɵadvance(3);
@@ -327,23 +344,23 @@ function MJActionExecutionLogFormComponentExtended_Conditional_69_Template(rf, c
327
344
  i0.ɵɵadvance(3);
328
345
  i0.ɵɵconditional(ctx_r0.showRawJson ? 39 : 40);
329
346
  } }
330
- function MJActionExecutionLogFormComponentExtended_Conditional_70_ng_template_1_Template(rf, ctx) { if (rf & 1) {
331
- i0.ɵɵelement(0, "i", 81);
347
+ function MJActionExecutionLogFormComponentExtended_Conditional_72_ng_template_1_Template(rf, ctx) { if (rf & 1) {
348
+ i0.ɵɵelement(0, "i", 89);
332
349
  i0.ɵɵtext(1, " Output Message ");
333
350
  } }
334
- function MJActionExecutionLogFormComponentExtended_Conditional_70_Template(rf, ctx) { if (rf & 1) {
335
- const _r12 = i0.ɵɵgetCurrentView();
336
- i0.ɵɵelementStart(0, "mj-accordion-panel", 23);
337
- i0.ɵɵtemplate(1, MJActionExecutionLogFormComponentExtended_Conditional_70_ng_template_1_Template, 2, 0, "ng-template", 24);
338
- i0.ɵɵelementStart(2, "div", 79)(3, "div", 58)(4, "span", 59);
351
+ function MJActionExecutionLogFormComponentExtended_Conditional_72_Template(rf, ctx) { if (rf & 1) {
352
+ const _r13 = i0.ɵɵgetCurrentView();
353
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 32);
354
+ i0.ɵɵtemplate(1, MJActionExecutionLogFormComponentExtended_Conditional_72_ng_template_1_Template, 2, 0, "ng-template", 26);
355
+ i0.ɵɵelementStart(2, "div", 87)(3, "div", 66)(4, "span", 67);
339
356
  i0.ɵɵtext(5, "JSON");
340
357
  i0.ɵɵelementEnd();
341
- i0.ɵɵelementStart(6, "button", 60);
342
- i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_70_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyToClipboard(ctx_r0.formattedMessage)); });
343
- i0.ɵɵelement(7, "i", 61);
358
+ i0.ɵɵelementStart(6, "button", 68);
359
+ i0.ɵɵlistener("click", function MJActionExecutionLogFormComponentExtended_Conditional_72_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.copyToClipboard(ctx_r0.formattedMessage)); });
360
+ i0.ɵɵelement(7, "i", 69);
344
361
  i0.ɵɵelementEnd()();
345
- i0.ɵɵelementStart(8, "mj-code-editor", 80);
346
- i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_70_Template_mj_code_editor_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.formattedMessage, $event) || (ctx_r0.formattedMessage = $event); return i0.ɵɵresetView($event); });
362
+ i0.ɵɵelementStart(8, "mj-code-editor", 88);
363
+ i0.ɵɵtwoWayListener("ngModelChange", function MJActionExecutionLogFormComponentExtended_Conditional_72_Template_mj_code_editor_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.formattedMessage, $event) || (ctx_r0.formattedMessage = $event); return i0.ɵɵresetView($event); });
347
364
  i0.ɵɵelementEnd()()();
348
365
  } if (rf & 2) {
349
366
  const ctx_r0 = i0.ɵɵnextContext();
@@ -352,14 +369,14 @@ function MJActionExecutionLogFormComponentExtended_Conditional_70_Template(rf, c
352
369
  i0.ɵɵtwoWayProperty("ngModel", ctx_r0.formattedMessage);
353
370
  i0.ɵɵproperty("readonly", true)("language", "json")("lineWrapping", true);
354
371
  } }
355
- function MJActionExecutionLogFormComponentExtended_Conditional_71_ng_template_1_Template(rf, ctx) { if (rf & 1) {
356
- i0.ɵɵelement(0, "i", 83);
372
+ function MJActionExecutionLogFormComponentExtended_Conditional_73_ng_template_1_Template(rf, ctx) { if (rf & 1) {
373
+ i0.ɵɵelement(0, "i", 91);
357
374
  i0.ɵɵtext(1, " Execution Data ");
358
375
  } }
359
- function MJActionExecutionLogFormComponentExtended_Conditional_71_Template(rf, ctx) { if (rf & 1) {
360
- i0.ɵɵelementStart(0, "mj-accordion-panel", 23);
361
- i0.ɵɵtemplate(1, MJActionExecutionLogFormComponentExtended_Conditional_71_ng_template_1_Template, 2, 0, "ng-template", 24);
362
- i0.ɵɵelement(2, "mj-empty-state", 82);
376
+ function MJActionExecutionLogFormComponentExtended_Conditional_73_Template(rf, ctx) { if (rf & 1) {
377
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 33);
378
+ i0.ɵɵtemplate(1, MJActionExecutionLogFormComponentExtended_Conditional_73_ng_template_1_Template, 2, 0, "ng-template", 26);
379
+ i0.ɵɵelement(2, "mj-empty-state", 90);
363
380
  i0.ɵɵelementEnd();
364
381
  } if (rf & 2) {
365
382
  i0.ɵɵproperty("Expanded", true);
@@ -367,6 +384,10 @@ function MJActionExecutionLogFormComponentExtended_Conditional_71_Template(rf, c
367
384
  let MJActionExecutionLogFormComponentExtended = class MJActionExecutionLogFormComponentExtended extends MJActionExecutionLogFormComponent {
368
385
  constructor() {
369
386
  super(...arguments);
387
+ /** Phone width shows the stacked accordions as sections behind one picker (design call 7A). */
388
+ this.Phone = new PhoneSectionsState(() => this.cdr.markForCheck());
389
+ /** Phone hero (6A): whether the summary line is expanded to show the rest of the hero. */
390
+ this.HeroDetailsOpen = false;
370
391
  // Related entities
371
392
  this.Action = null;
372
393
  this.User = null;
@@ -387,6 +408,23 @@ let MJActionExecutionLogFormComponentExtended = class MJActionExecutionLogFormCo
387
408
  this.SortDir = 'asc';
388
409
  this.ShowRawJson = false;
389
410
  }
411
+ ngOnDestroy() {
412
+ super.ngOnDestroy();
413
+ this.Phone.Stop();
414
+ }
415
+ /** Toggles the phone hero between its compact identity row and the full hero. */
416
+ ToggleHeroDetails() {
417
+ this.HeroDetailsOpen = !this.HeroDetailsOpen;
418
+ this.cdr.markForCheck();
419
+ }
420
+ /** The phone hero's one-line summary of what the compact hero leaves out. */
421
+ get HeroSummary() {
422
+ return JoinHeroSummary([
423
+ this.Action?.Name,
424
+ this.formatDuration(this.getExecutionDuration()),
425
+ this.User?.Name,
426
+ ]);
427
+ }
390
428
  /** @deprecated Use {@link Action}. */
391
429
  get action() {
392
430
  return this.Action;
@@ -898,7 +936,7 @@ let MJActionExecutionLogFormComponentExtended = class MJActionExecutionLogFormCo
898
936
  return this.CopyToClipboard(text);
899
937
  }
900
938
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJActionExecutionLogFormComponentExtended_BaseFactory; return function MJActionExecutionLogFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJActionExecutionLogFormComponentExtended_BaseFactory || (ɵMJActionExecutionLogFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJActionExecutionLogFormComponentExtended)))(__ngFactoryType__ || MJActionExecutionLogFormComponentExtended); }; })(); }
901
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJActionExecutionLogFormComponentExtended, selectors: [["mj-action-execution-log-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 72, vars: 29, consts: [[1, "record-form-container", "action-execution-log-form", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "header"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [3, "ngClass"], [1, "fas", "fa-terminal"], [1, "header-info"], [1, "meta-info"], [1, "action-name"], [1, "log-id"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "execution-time"], [1, "fas", "fa-clock"], [1, "header-stats"], [1, "stat"], [1, "label"], [1, "value"], [1, "content-area"], [1, "accordion-container"], [3, "Expanded"], ["mjAccordionTitle", ""], [1, "details-grid"], [1, "detail-item"], [1, "monospace"], [1, "detail-value"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "fas", "fa-info-circle"], [1, "params-panel"], [1, "params-toolbar"], [1, "filter-chips"], ["type", "button", 1, "chip", 3, "click"], [1, "chip-count"], ["type", "button", 1, "chip", "chip-input", 3, "click", "disabled"], [1, "fas", "fa-sign-in-alt"], ["type", "button", 1, "chip", "chip-both", 3, "click", "disabled"], [1, "fas", "fa-exchange-alt"], ["type", "button", 1, "chip", "chip-output", 3, "click", "disabled"], [1, "fas", "fa-sign-out-alt"], [1, "toolbar-right"], [1, "search-wrapper"], [1, "fas", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search name or value\u2026", "name", "paramSearch", 1, "mj-input", "params-search", 3, "ngModelChange", "ngModel"], ["type", "button", "title", "Clear search", 1, "search-clear"], ["role", "group", "aria-label", "Sort parameters", 1, "sort-group"], ["type", "button", "title", "Sort by type", 1, "sort-btn", 3, "click"], ["type", "button", "title", "Sort by name", 1, "sort-btn", 3, "click"], ["type", "button", "title", "Toggle raw JSON view", 1, "raw-toggle", 3, "click"], [1, "fas", "fa-code"], [1, "json-viewer", "raw-json-viewer"], [1, "fas", "fa-sliders-h"], [1, "mj-accordion-badge", "mj-accordion-badge--right"], ["type", "button", "title", "Clear search", 1, "search-clear", 3, "click"], [1, "fas", "fa-times"], [1, "json-toolbar"], [1, "json-label"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], ["name", "formattedParamsRaw", 2, "height", "360px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["Variant", "no-results", "Size", "compact", "Icon", "fa-solid fa-filter-circle-xmark", "Title", "No parameters match the current filter.", "ActionText", "Clear filters", "ActionIcon", "fa-solid fa-rotate-left", "ActionVariant", "flat"], [1, "params-list"], ["Variant", "no-results", "Size", "compact", "Icon", "fa-solid fa-filter-circle-xmark", "Title", "No parameters match the current filter.", "ActionText", "Clear filters", "ActionIcon", "fa-solid fa-rotate-left", "ActionVariant", "flat", 3, "Action"], [1, "param-row"], [1, "param-header"], [1, "type-badge"], [1, "param-name-wrap"], [1, "param-name"], [1, "value-kind-chip"], [1, "param-actions"], ["type", "button", 1, "btn-icon", "param-expand", 3, "is-expanded", "title"], ["type", "button", "title", "Copy value", 1, "btn-icon", 3, "click"], [1, "param-preview"], [1, "param-expanded"], ["type", "button", 1, "btn-icon", "param-expand", 3, "click", "title"], [2, "height", "240px", "width", "100%", 3, "ngModelChange", "ngModel", "name", "readonly", "language", "lineWrapping"], [1, "json-viewer"], ["name", "formattedMessage", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fas", "fa-comment-alt"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No execution data recorded"], [1, "fas", "fa-database"]], template: function MJActionExecutionLogFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
939
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJActionExecutionLogFormComponentExtended, selectors: [["mj-action-execution-log-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 74, vars: 36, consts: [[1, "record-form-container", "action-execution-log-form", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "header", "phone-hero"], [1, "header-content"], [1, "header-left"], [1, "icon-wrapper"], [3, "ngClass"], [1, "fas", "fa-terminal"], [1, "header-info"], [1, "meta-info", "phone-hero-detail"], [1, "action-name"], [1, "log-id"], [1, "header-right"], [1, "status-badge"], [1, "fas", 3, "ngClass"], [1, "execution-time", "phone-hero-detail"], [1, "fas", "fa-clock"], [1, "header-stats", "phone-hero-detail", "phone-hero-stats"], [1, "stat"], [1, "label"], [1, "value"], ["type", "button", 1, "phone-hero-summary"], [1, "content-area"], [1, "accordion-container"], [3, "ActiveKeyChange", "Enabled", "ActiveKey"], ["SectionKey", "details", "SectionTitle", "Execution Details", "SectionIcon", "fas fa-info-circle", 3, "Expanded"], ["mjAccordionTitle", ""], [1, "details-grid"], [1, "detail-item"], [1, "monospace"], [1, "detail-value"], ["SectionKey", "parameters", "SectionTitle", "Parameters", "SectionIcon", "fas fa-sliders-h", 3, "SectionCount", "Expanded"], ["SectionKey", "message", "SectionTitle", "Output Message", "SectionIcon", "fas fa-comment-alt", 3, "Expanded"], ["SectionKey", "data", "SectionTitle", "Execution Data", "SectionIcon", "fas fa-database", 3, "Expanded"], [1, "btn-link", 3, "click"], [1, "fas", "fa-external-link-alt"], ["type", "button", 1, "phone-hero-summary", 3, "click"], [1, "phone-hero-summary-text"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], [1, "fas", "fa-info-circle"], [1, "params-panel"], [1, "params-toolbar"], [1, "filter-chips"], ["type", "button", 1, "chip", 3, "click"], [1, "chip-count"], ["type", "button", 1, "chip", "chip-input", 3, "click", "disabled"], [1, "fas", "fa-sign-in-alt"], ["type", "button", 1, "chip", "chip-both", 3, "click", "disabled"], [1, "fas", "fa-exchange-alt"], ["type", "button", 1, "chip", "chip-output", 3, "click", "disabled"], [1, "fas", "fa-sign-out-alt"], [1, "toolbar-right"], [1, "search-wrapper"], [1, "fas", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search name or value\u2026", "name", "paramSearch", 1, "mj-input", "params-search", 3, "ngModelChange", "ngModel"], ["type", "button", "title", "Clear search", 1, "search-clear"], ["role", "group", "aria-label", "Sort parameters", 1, "sort-group"], ["type", "button", "title", "Sort by type", 1, "sort-btn", 3, "click"], ["type", "button", "title", "Sort by name", 1, "sort-btn", 3, "click"], ["type", "button", "title", "Toggle raw JSON view", 1, "raw-toggle", 3, "click"], [1, "fas", "fa-code"], [1, "json-viewer", "raw-json-viewer"], [1, "fas", "fa-sliders-h"], [1, "mj-accordion-badge", "mj-accordion-badge--right"], ["type", "button", "title", "Clear search", 1, "search-clear", 3, "click"], [1, "fas", "fa-times"], [1, "json-toolbar"], [1, "json-label"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], ["name", "formattedParamsRaw", 2, "height", "360px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], ["Variant", "no-results", "Size", "compact", "Icon", "fa-solid fa-filter-circle-xmark", "Title", "No parameters match the current filter.", "ActionText", "Clear filters", "ActionIcon", "fa-solid fa-rotate-left", "ActionVariant", "flat"], [1, "params-list"], ["Variant", "no-results", "Size", "compact", "Icon", "fa-solid fa-filter-circle-xmark", "Title", "No parameters match the current filter.", "ActionText", "Clear filters", "ActionIcon", "fa-solid fa-rotate-left", "ActionVariant", "flat", 3, "Action"], [1, "param-row"], [1, "param-header"], [1, "type-badge"], [1, "param-name-wrap"], [1, "param-name"], [1, "value-kind-chip"], [1, "param-actions"], ["type", "button", 1, "btn-icon", "param-expand", 3, "is-expanded", "title"], ["type", "button", "title", "Copy value", 1, "btn-icon", 3, "click"], [1, "param-preview"], [1, "param-expanded"], ["type", "button", 1, "btn-icon", "param-expand", 3, "click", "title"], [2, "height", "240px", "width", "100%", 3, "ngModelChange", "ngModel", "name", "readonly", "language", "lineWrapping"], [1, "json-viewer"], ["name", "formattedMessage", 2, "height", "300px", "width", "100%", 3, "ngModelChange", "ngModel", "readonly", "language", "lineWrapping"], [1, "fas", "fa-comment-alt"], ["Size", "compact", "Icon", "fa-solid fa-inbox", "Title", "No execution data recorded"], [1, "fas", "fa-database"]], template: function MJActionExecutionLogFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
902
940
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "div", 4)(5, "div", 5);
903
941
  i0.ɵɵconditionalCreate(6, MJActionExecutionLogFormComponentExtended_Conditional_6_Template, 1, 1, "i", 6)(7, MJActionExecutionLogFormComponentExtended_Conditional_7_Template, 1, 0, "i", 7);
904
942
  i0.ɵɵelementEnd();
@@ -928,53 +966,59 @@ let MJActionExecutionLogFormComponentExtended = class MJActionExecutionLogFormCo
928
966
  i0.ɵɵconditionalCreate(29, MJActionExecutionLogFormComponentExtended_Conditional_29_Template, 6, 4, "div", 18);
929
967
  i0.ɵɵconditionalCreate(30, MJActionExecutionLogFormComponentExtended_Conditional_30_Template, 7, 1, "div", 18);
930
968
  i0.ɵɵconditionalCreate(31, MJActionExecutionLogFormComponentExtended_Conditional_31_Template, 7, 1, "div", 18);
931
- i0.ɵɵelementEnd()();
932
- i0.ɵɵelementStart(32, "div", 21)(33, "div", 22)(34, "mj-accordion-panel", 23);
933
- i0.ɵɵtemplate(35, MJActionExecutionLogFormComponentExtended_ng_template_35_Template, 2, 0, "ng-template", 24);
934
- i0.ɵɵelementStart(36, "div", 25)(37, "div", 26)(38, "label");
935
- i0.ɵɵtext(39, "Execution ID");
936
969
  i0.ɵɵelementEnd();
937
- i0.ɵɵelementStart(40, "span", 27);
938
- i0.ɵɵtext(41);
970
+ i0.ɵɵconditionalCreate(32, MJActionExecutionLogFormComponentExtended_Conditional_32_Template, 4, 2, "button", 21);
971
+ i0.ɵɵelementEnd();
972
+ i0.ɵɵelementStart(33, "div", 22)(34, "div", 23)(35, "mj-accordion-sections", 24);
973
+ i0.ɵɵlistener("ActiveKeyChange", function MJActionExecutionLogFormComponentExtended_Template_mj_accordion_sections_ActiveKeyChange_35_listener($event) { return ctx.Phone.Pick($event); });
974
+ i0.ɵɵelementStart(36, "mj-accordion-panel", 25);
975
+ i0.ɵɵtemplate(37, MJActionExecutionLogFormComponentExtended_ng_template_37_Template, 2, 0, "ng-template", 26);
976
+ i0.ɵɵelementStart(38, "div", 27)(39, "div", 28)(40, "label");
977
+ i0.ɵɵtext(41, "Execution ID");
978
+ i0.ɵɵelementEnd();
979
+ i0.ɵɵelementStart(42, "span", 29);
980
+ i0.ɵɵtext(43);
939
981
  i0.ɵɵelementEnd()();
940
- i0.ɵɵelementStart(42, "div", 26)(43, "label");
941
- i0.ɵɵtext(44, "Action ID");
982
+ i0.ɵɵelementStart(44, "div", 28)(45, "label");
983
+ i0.ɵɵtext(46, "Action ID");
942
984
  i0.ɵɵelementEnd();
943
- i0.ɵɵelementStart(45, "span", 27);
944
- i0.ɵɵtext(46);
985
+ i0.ɵɵelementStart(47, "span", 29);
986
+ i0.ɵɵtext(48);
945
987
  i0.ɵɵelementEnd()();
946
- i0.ɵɵelementStart(47, "div", 26)(48, "label");
947
- i0.ɵɵtext(49, "User ID");
988
+ i0.ɵɵelementStart(49, "div", 28)(50, "label");
989
+ i0.ɵɵtext(51, "User ID");
948
990
  i0.ɵɵelementEnd();
949
- i0.ɵɵelementStart(50, "span", 27);
950
- i0.ɵɵtext(51);
991
+ i0.ɵɵelementStart(52, "span", 29);
992
+ i0.ɵɵtext(53);
951
993
  i0.ɵɵelementEnd()();
952
- i0.ɵɵelementStart(52, "div", 26)(53, "label");
953
- i0.ɵɵtext(54, "Result Code");
994
+ i0.ɵɵelementStart(54, "div", 28)(55, "label");
995
+ i0.ɵɵtext(56, "Result Code");
954
996
  i0.ɵɵelementEnd();
955
- i0.ɵɵelementStart(55, "span", 28);
956
- i0.ɵɵelement(56, "i", 14);
957
- i0.ɵɵelementStart(57, "span");
958
- i0.ɵɵtext(58);
997
+ i0.ɵɵelementStart(57, "span", 30);
998
+ i0.ɵɵelement(58, "i", 14);
999
+ i0.ɵɵelementStart(59, "span");
1000
+ i0.ɵɵtext(60);
959
1001
  i0.ɵɵelementEnd()()();
960
- i0.ɵɵelementStart(59, "div", 26)(60, "label");
961
- i0.ɵɵtext(61, "Duration");
1002
+ i0.ɵɵelementStart(61, "div", 28)(62, "label");
1003
+ i0.ɵɵtext(63, "Duration");
962
1004
  i0.ɵɵelementEnd();
963
- i0.ɵɵelementStart(62, "span");
964
- i0.ɵɵtext(63);
1005
+ i0.ɵɵelementStart(64, "span");
1006
+ i0.ɵɵtext(65);
965
1007
  i0.ɵɵelementEnd()();
966
- i0.ɵɵelementStart(64, "div", 26)(65, "label");
967
- i0.ɵɵtext(66, "Retention Period");
1008
+ i0.ɵɵelementStart(66, "div", 28)(67, "label");
1009
+ i0.ɵɵtext(68, "Retention Period");
968
1010
  i0.ɵɵelementEnd();
969
- i0.ɵɵelementStart(67, "span");
970
- i0.ɵɵtext(68);
971
- i0.ɵɵelementEnd()()()();
972
- i0.ɵɵconditionalCreate(69, MJActionExecutionLogFormComponentExtended_Conditional_69_Template, 41, 27, "mj-accordion-panel", 23);
973
- i0.ɵɵconditionalCreate(70, MJActionExecutionLogFormComponentExtended_Conditional_70_Template, 9, 5, "mj-accordion-panel", 23);
974
- i0.ɵɵconditionalCreate(71, MJActionExecutionLogFormComponentExtended_Conditional_71_Template, 3, 1, "mj-accordion-panel", 23);
1011
+ i0.ɵɵelementStart(69, "span");
1012
+ i0.ɵɵtext(70);
975
1013
  i0.ɵɵelementEnd()()()();
1014
+ i0.ɵɵconditionalCreate(71, MJActionExecutionLogFormComponentExtended_Conditional_71_Template, 41, 28, "mj-accordion-panel", 31);
1015
+ i0.ɵɵconditionalCreate(72, MJActionExecutionLogFormComponentExtended_Conditional_72_Template, 9, 5, "mj-accordion-panel", 32);
1016
+ i0.ɵɵconditionalCreate(73, MJActionExecutionLogFormComponentExtended_Conditional_73_Template, 3, 1, "mj-accordion-panel", 33);
1017
+ i0.ɵɵelementEnd()()()()();
976
1018
  } if (rf & 2) {
977
- i0.ɵɵadvance(6);
1019
+ i0.ɵɵadvance(2);
1020
+ i0.ɵɵclassProp("hero-view", !ctx.EditMode)("hero-compact", !ctx.EditMode && !ctx.HeroDetailsOpen);
1021
+ i0.ɵɵadvance(4);
978
1022
  i0.ɵɵconditional(ctx.action && ctx.action.IconClass ? 6 : 7);
979
1023
  i0.ɵɵadvance(6);
980
1024
  i0.ɵɵconditional(ctx.action ? 12 : -1);
@@ -989,14 +1033,18 @@ let MJActionExecutionLogFormComponentExtended = class MJActionExecutionLogFormCo
989
1033
  i0.ɵɵadvance(3);
990
1034
  i0.ɵɵtextInterpolate1(" ", ctx.formatDuration(ctx.getExecutionDuration()), " ");
991
1035
  i0.ɵɵadvance(6);
992
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(28, 26, ctx.record.StartedAt, "short"));
1036
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(28, 33, ctx.record.StartedAt, "short"));
993
1037
  i0.ɵɵadvance(2);
994
1038
  i0.ɵɵconditional(ctx.record.EndedAt ? 29 : -1);
995
1039
  i0.ɵɵadvance();
996
1040
  i0.ɵɵconditional(ctx.action ? 30 : -1);
997
1041
  i0.ɵɵadvance();
998
1042
  i0.ɵɵconditional(ctx.user ? 31 : -1);
1043
+ i0.ɵɵadvance();
1044
+ i0.ɵɵconditional(!ctx.EditMode && ctx.HeroSummary ? 32 : -1);
999
1045
  i0.ɵɵadvance(3);
1046
+ i0.ɵɵproperty("Enabled", ctx.Phone.IsPhone)("ActiveKey", ctx.Phone.Section);
1047
+ i0.ɵɵadvance();
1000
1048
  i0.ɵɵproperty("Expanded", true);
1001
1049
  i0.ɵɵadvance(7);
1002
1050
  i0.ɵɵtextInterpolate(ctx.record.ID);
@@ -1016,12 +1064,12 @@ let MJActionExecutionLogFormComponentExtended = class MJActionExecutionLogFormCo
1016
1064
  i0.ɵɵadvance(5);
1017
1065
  i0.ɵɵtextInterpolate(ctx.record.RetentionPeriod ? ctx.record.RetentionPeriod + " days" : "Indefinite");
1018
1066
  i0.ɵɵadvance();
1019
- i0.ɵɵconditional(ctx.hasAnyParameters ? 69 : -1);
1067
+ i0.ɵɵconditional(ctx.hasAnyParameters ? 71 : -1);
1020
1068
  i0.ɵɵadvance();
1021
- i0.ɵɵconditional(ctx.record.Message ? 70 : -1);
1069
+ i0.ɵɵconditional(ctx.record.Message ? 72 : -1);
1022
1070
  i0.ɵɵadvance();
1023
- i0.ɵɵconditional(!ctx.record.Params && !ctx.record.Message && !ctx.hasAnyParameters ? 71 : -1);
1024
- } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i4.CodeEditorComponent, i1.DatePipe], styles: ["\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.action-execution-log-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n}\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-status-info);\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: var(--mj-text-xl);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-2xl);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.action-name[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.log-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: var(--mj-text-xs);\n opacity: 0.7;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-text-inverse);\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: var(--mj-font-semibold);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-primary);\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: var(--mj-text-sm);\n padding: 4px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-xs);\n}\n\n\n.json-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n margin-bottom: 20px;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.json-label[_ngcontent-%COMP%] {\n background: var(--mj-status-info);\n color: var(--mj-text-inverse);\n padding: 4px 12px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n\n.status-badge[data-status=\"success\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"ok\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"completed\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"200\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"error\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"failed\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"failure\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"warning\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n}\n\n.status-badge[data-status=\"info\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"running\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-info);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[_ngcontent-%COMP%] {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.monospace[_ngcontent-%COMP%] {\n font-family: 'Courier New', Courier, monospace;\n font-size: var(--mj-text-xs);\n}\n\n\n\n\n\n.params-panel[_ngcontent-%COMP%] {\n padding: 18px 20px 22px;\n}\n\n\n.params-toolbar[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 14px;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n margin-bottom: 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n}\n\n.filter-chips[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 6px 13px;\n border-radius: var(--mj-radius-full);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.chip[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n.chip[_ngcontent-%COMP%]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.chip[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 18px;\n padding: 0 6px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n}\n.chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n.chip.active[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-inverse) 25%, transparent);\n color: var(--mj-text-inverse);\n}\n\n\n.chip.chip-input.active[_ngcontent-%COMP%] {\n background: var(--mj-status-info);\n border-color: var(--mj-status-info);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n}\n.chip.chip-output.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 22%, transparent);\n}\n.chip.chip-both.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.search-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.params-search[_ngcontent-%COMP%] {\n min-width: 220px;\n padding: 7px 30px 7px 30px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n}\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n width: 22px;\n height: 22px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.search-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.sort-group[_ngcontent-%COMP%] {\n display: inline-flex;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.sort-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n background: transparent;\n border: none;\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: background var(--mj-transition-base);\n}\n.sort-btn[_ngcontent-%COMP%] + .sort-btn[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-default);\n}\n.sort-btn[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.sort-btn.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.sort-btn.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.raw-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.raw-toggle[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.raw-toggle.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n\n.params-list[_ngcontent-%COMP%] {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-row[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-left: 3px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px 14px;\n transition: border-color var(--mj-transition-base), box-shadow var(--mj-transition-base);\n}\n.param-row[_ngcontent-%COMP%]:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.param-row[data-type=\"Input\"][_ngcontent-%COMP%] { border-left-color: var(--mj-status-info); }\n.param-row[data-type=\"Output\"][_ngcontent-%COMP%] { border-left-color: var(--mj-status-success); }\n.param-row[data-type=\"Both\"][_ngcontent-%COMP%] { border-left-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%); }\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n flex-shrink: 0;\n}\n.type-badge[data-type=\"Input\"][_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n}\n.type-badge[data-type=\"Output\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n.type-badge[data-type=\"Both\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.param-name-wrap[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n.param-name[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.value-kind-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 10px;\n font-weight: var(--mj-font-medium);\n text-transform: lowercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n.value-kind-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9px; }\n.value-kind-chip[data-kind=\"number\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n.value-kind-chip[data-kind=\"boolean\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n.value-kind-chip[data-kind=\"array\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"object\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"null\"][_ngcontent-%COMP%], \n.value-kind-chip[data-kind=\"undefined\"][_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n}\n\n.param-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n.param-actions[_ngcontent-%COMP%] .btn-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n}\n.param-expand.is-expanded[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n.param-preview[_ngcontent-%COMP%] {\n margin-top: 8px;\n padding-left: calc(64px + 12px); \n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n word-break: break-word;\n line-height: 1.55;\n}\n.param-preview[data-kind=\"string\"][_ngcontent-%COMP%] { color: var(--mj-status-success-text); }\n.param-preview[data-kind=\"number\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); }\n.param-preview[data-kind=\"boolean\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); }\n.param-preview[data-kind=\"null\"][_ngcontent-%COMP%], \n.param-preview[data-kind=\"undefined\"][_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-style: italic; }\n.param-preview[data-kind=\"array\"][_ngcontent-%COMP%], \n.param-preview[data-kind=\"object\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.param-expanded[_ngcontent-%COMP%] {\n margin-top: 10px;\n margin-left: calc(64px + 12px);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface-sunken);\n}\n\n.raw-json-viewer[_ngcontent-%COMP%] { margin-top: 4px; }\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .details-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .params-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n .params-search[_ngcontent-%COMP%] { min-width: 0; width: 100%; }\n .search-wrapper[_ngcontent-%COMP%] { flex: 1; }\n\n .param-preview[_ngcontent-%COMP%], \n .param-expanded[_ngcontent-%COMP%] {\n padding-left: 0;\n margin-left: 0;\n }\n}"] }); }
1071
+ i0.ɵɵconditional(!ctx.record.Params && !ctx.record.Message && !ctx.hasAnyParameters ? 73 : -1);
1072
+ } }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJEmptyStateComponent, i3.MJAccordionSectionsComponent, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i4.CodeEditorComponent, i1.DatePipe], styles: ["\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.action-execution-log-form[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n}\n\n\n.header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n background: var(--mj-status-info);\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: var(--mj-text-xl);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-info[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-2xl);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.meta-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.action-name[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.log-id[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: var(--mj-text-xs);\n opacity: 0.7;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n padding: 6px 16px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-text-inverse);\n}\n\n.execution-time[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 20px;\n}\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: var(--mj-font-semibold);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-primary);\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: var(--mj-text-sm);\n padding: 4px;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-xs);\n}\n\n\n.json-viewer[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n margin-bottom: 20px;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.json-label[_ngcontent-%COMP%] {\n background: var(--mj-status-info);\n color: var(--mj-text-inverse);\n padding: 4px 12px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n color: var(--mj-text-muted);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n\n.status-badge[data-status=\"success\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"ok\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"completed\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"200\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"error\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"failed\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"failure\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"warning\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n}\n\n.status-badge[data-status=\"info\"][_ngcontent-%COMP%], \n.status-badge[data-status=\"running\"][_ngcontent-%COMP%] {\n background-color: var(--mj-status-info);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[_ngcontent-%COMP%] {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.monospace[_ngcontent-%COMP%] {\n font-family: 'Courier New', Courier, monospace;\n font-size: var(--mj-text-xs);\n}\n\n\n\n\n\n.params-panel[_ngcontent-%COMP%] {\n padding: 18px 20px 22px;\n}\n\n\n.params-toolbar[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 14px;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n margin-bottom: 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n}\n\n.filter-chips[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 6px 13px;\n border-radius: var(--mj-radius-full);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.chip[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n.chip[_ngcontent-%COMP%]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.chip[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 18px;\n padding: 0 6px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n}\n.chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n.chip.active[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-inverse) 25%, transparent);\n color: var(--mj-text-inverse);\n}\n\n\n.chip.chip-input.active[_ngcontent-%COMP%] {\n background: var(--mj-status-info);\n border-color: var(--mj-status-info);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n}\n.chip.chip-output.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 22%, transparent);\n}\n.chip.chip-both.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.search-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.params-search[_ngcontent-%COMP%] {\n min-width: 220px;\n padding: 7px 30px 7px 30px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n}\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n width: 22px;\n height: 22px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.search-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.sort-group[_ngcontent-%COMP%] {\n display: inline-flex;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.sort-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n background: transparent;\n border: none;\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: background var(--mj-transition-base);\n}\n.sort-btn[_ngcontent-%COMP%] + .sort-btn[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-default);\n}\n.sort-btn[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.sort-btn.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.sort-btn.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.raw-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.raw-toggle[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.raw-toggle.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n\n.params-list[_ngcontent-%COMP%] {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-row[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-left: 3px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px 14px;\n transition: border-color var(--mj-transition-base), box-shadow var(--mj-transition-base);\n}\n.param-row[_ngcontent-%COMP%]:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.param-row[data-type=\"Input\"][_ngcontent-%COMP%] { border-left-color: var(--mj-status-info); }\n.param-row[data-type=\"Output\"][_ngcontent-%COMP%] { border-left-color: var(--mj-status-success); }\n.param-row[data-type=\"Both\"][_ngcontent-%COMP%] { border-left-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%); }\n\n.param-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n flex-shrink: 0;\n}\n.type-badge[data-type=\"Input\"][_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n}\n.type-badge[data-type=\"Output\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n.type-badge[data-type=\"Both\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.param-name-wrap[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n.param-name[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.value-kind-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 10px;\n font-weight: var(--mj-font-medium);\n text-transform: lowercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n.value-kind-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9px; }\n.value-kind-chip[data-kind=\"number\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n.value-kind-chip[data-kind=\"boolean\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n.value-kind-chip[data-kind=\"array\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"object\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"null\"][_ngcontent-%COMP%], \n.value-kind-chip[data-kind=\"undefined\"][_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n}\n\n.param-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n.param-actions[_ngcontent-%COMP%] .btn-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n}\n.param-expand.is-expanded[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n.param-preview[_ngcontent-%COMP%] {\n margin-top: 8px;\n padding-left: calc(64px + 12px); \n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n word-break: break-word;\n line-height: 1.55;\n}\n.param-preview[data-kind=\"string\"][_ngcontent-%COMP%] { color: var(--mj-status-success-text); }\n.param-preview[data-kind=\"number\"][_ngcontent-%COMP%] { color: var(--mj-status-info-text); }\n.param-preview[data-kind=\"boolean\"][_ngcontent-%COMP%] { color: var(--mj-status-warning-text); }\n.param-preview[data-kind=\"null\"][_ngcontent-%COMP%], \n.param-preview[data-kind=\"undefined\"][_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-style: italic; }\n.param-preview[data-kind=\"array\"][_ngcontent-%COMP%], \n.param-preview[data-kind=\"object\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.param-expanded[_ngcontent-%COMP%] {\n margin-top: 10px;\n margin-left: calc(64px + 12px);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface-sunken);\n}\n\n.raw-json-viewer[_ngcontent-%COMP%] { margin-top: 4px; }\n\n\n@media (max-width: 768px) {\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .details-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .params-toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n .params-search[_ngcontent-%COMP%] { min-width: 0; width: 100%; }\n .search-wrapper[_ngcontent-%COMP%] { flex: 1; }\n\n .param-preview[_ngcontent-%COMP%], \n .param-expanded[_ngcontent-%COMP%] {\n padding-left: 0;\n margin-left: 0;\n }\n}\n\n\n\n\n@media (max-width: 768px) {\n .content-area[_ngcontent-%COMP%] {\n padding: 12px;\n }\n\n .params-panel[_ngcontent-%COMP%] {\n padding-left: 0;\n padding-right: 0;\n }\n\n .param-header[_ngcontent-%COMP%], \n .param-name[_ngcontent-%COMP%] {\n min-width: 0;\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}"] }); }
1025
1073
  };
1026
1074
  MJActionExecutionLogFormComponentExtended = __decorate([
1027
1075
  RegisterClass(BaseFormComponent, 'MJ: Action Execution Logs')
@@ -1029,7 +1077,7 @@ MJActionExecutionLogFormComponentExtended = __decorate([
1029
1077
  export { MJActionExecutionLogFormComponentExtended };
1030
1078
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJActionExecutionLogFormComponentExtended, [{
1031
1079
  type: Component,
1032
- args: [{ standalone: false, selector: 'mj-action-execution-log-form', template: "<div class=\"record-form-container action-execution-log-form\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <div class=\"record-form\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <!-- The action's own icon when it has one, matching how the same action is\n drawn in the run timeline. `fa-terminal` stays as the fallback: it is\n what this form has always shown, and it is the honest answer for an\n action whose metadata names no icon. -->\n @if (action && action.IconClass) {\n <i [ngClass]=\"action.IconClass\"></i>\n } @else {\n <i class=\"fas fa-terminal\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>Action Execution Log</h2>\n <div class=\"meta-info\">\n @if (action) {\n <span class=\"action-name\">{{ action.Name }}</span>\n }\n <span class=\"log-id\">{{ record.ID }}</span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.ResultCode?.toLowerCase()\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\"></i>\n {{ record.ResultCode || 'UNKNOWN' }}\n </div>\n <div class=\"execution-time\">\n <i class=\"fas fa-clock\"></i>\n {{ formatDuration(getExecutionDuration()) }}\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'short' }}</span>\n </div>\n @if (record.EndedAt) {\n <div class=\"stat\">\n <span class=\"label\">Ended</span>\n <span class=\"value\">{{ record.EndedAt | date:'short' }}</span>\n </div>\n }\n @if (action) {\n <div class=\"stat\">\n <span class=\"label\">Action</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToAction()\">\n {{ action.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n @if (user) {\n <div class=\"stat\">\n <span class=\"label\">User</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToUser()\">\n {{ user.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- Content Area -->\n <div class=\"content-area\">\n <div class=\"accordion-container\">\n <!-- Execution Details -->\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> Execution Details\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Execution ID</label>\n <span class=\"monospace\">{{ record.ID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Action ID</label>\n <span class=\"monospace\">{{ record.ActionID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>User ID</label>\n <span class=\"monospace\">{{ record.UserID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Result Code</label>\n <span class=\"detail-value\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\" [style.color]=\"getResultCodeColor()\"></i>\n <span [style.color]=\"getResultCodeColor()\">{{ record.ResultCode || 'N/A' }}</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Duration</label>\n <span>{{ formatDuration(getExecutionDuration()) }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Retention Period</label>\n <span>{{ record.RetentionPeriod ? record.RetentionPeriod + ' days' : 'Indefinite' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Unified Parameters section -->\n @if (hasAnyParameters) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n <span class=\"mj-accordion-badge mj-accordion-badge--right\">{{ paramCounts.All }}</span>\n </ng-template>\n <div class=\"params-panel\">\n <!-- Toolbar: filter chips, search, sort, raw toggle -->\n <div class=\"params-toolbar\">\n <div class=\"filter-chips\">\n <button\n type=\"button\"\n class=\"chip\"\n [class.active]=\"typeFilter === 'All'\"\n (click)=\"setTypeFilter('All')\">\n All <span class=\"chip-count\">{{ paramCounts.All }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-input\"\n [class.active]=\"typeFilter === 'Input'\"\n [disabled]=\"paramCounts.Input === 0\"\n (click)=\"setTypeFilter('Input')\">\n <i class=\"fas fa-sign-in-alt\"></i>\n Input <span class=\"chip-count\">{{ paramCounts.Input }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-both\"\n [class.active]=\"typeFilter === 'Both'\"\n [disabled]=\"paramCounts.Both === 0\"\n (click)=\"setTypeFilter('Both')\">\n <i class=\"fas fa-exchange-alt\"></i>\n In/Out <span class=\"chip-count\">{{ paramCounts.Both }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-output\"\n [class.active]=\"typeFilter === 'Output'\"\n [disabled]=\"paramCounts.Output === 0\"\n (click)=\"setTypeFilter('Output')\">\n <i class=\"fas fa-sign-out-alt\"></i>\n Output <span class=\"chip-count\">{{ paramCounts.Output }}</span>\n </button>\n </div>\n\n <div class=\"toolbar-right\">\n <div class=\"search-wrapper\">\n <i class=\"fas fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"mj-input params-search\"\n placeholder=\"Search name or value\u2026\"\n [(ngModel)]=\"searchText\"\n name=\"paramSearch\" />\n @if (searchText) {\n <button type=\"button\" class=\"search-clear\" (click)=\"searchText = ''\" title=\"Clear search\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n\n <div class=\"sort-group\" role=\"group\" aria-label=\"Sort parameters\">\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'type'\"\n (click)=\"toggleSort('type')\"\n title=\"Sort by type\">\n Type\n @if (sortKey === 'type') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-short-wide' : 'fa-arrow-up-wide-short'\"></i>\n }\n </button>\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'name'\"\n (click)=\"toggleSort('name')\"\n title=\"Sort by name\">\n Name\n @if (sortKey === 'name') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-a-z' : 'fa-arrow-up-z-a'\"></i>\n }\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"raw-toggle\"\n [class.active]=\"showRawJson\"\n (click)=\"toggleRawJson()\"\n title=\"Toggle raw JSON view\">\n <i class=\"fas fa-code\"></i>\n Raw\n </button>\n </div>\n </div>\n\n @if (showRawJson) {\n <div class=\"json-viewer raw-json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">Raw JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedParams)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"formattedParams\"\n name=\"formattedParamsRaw\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 360px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <!-- Rich param list -->\n @if (filteredParameters.length === 0) {\n <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n Icon=\"fa-solid fa-filter-circle-xmark\"\n Title=\"No parameters match the current filter.\"\n ActionText=\"Clear filters\"\n ActionIcon=\"fa-solid fa-rotate-left\"\n ActionVariant=\"flat\"\n (Action)=\"clearFilters()\" />\n } @else {\n <ul class=\"params-list\">\n @for (p of filteredParameters; track trackParam($index, p)) {\n <li class=\"param-row\" [attr.data-type]=\"p.Type\">\n <div class=\"param-header\">\n <span class=\"type-badge\" [attr.data-type]=\"p.Type\">\n @if (p.Type === 'Input') {\n <i class=\"fas fa-sign-in-alt\"></i>\n } @else if (p.Type === 'Output') {\n <i class=\"fas fa-sign-out-alt\"></i>\n } @else {\n <i class=\"fas fa-exchange-alt\"></i>\n }\n {{ getTypeLabel(p.Type) }}\n </span>\n <div class=\"param-name-wrap\">\n <span class=\"param-name\">{{ p.Name }}</span>\n <span class=\"value-kind-chip\" [attr.data-kind]=\"p.ValueKind\">\n <i class=\"fas\" [ngClass]=\"getValueKindIcon(p.ValueKind)\"></i>\n {{ p.ValueKind }}\n </span>\n </div>\n <div class=\"param-actions\">\n @if (p.IsExpandable) {\n <button type=\"button\" class=\"btn-icon param-expand\" [class.is-expanded]=\"p.Expanded\" (click)=\"toggleExpanded(p)\" [title]=\"p.Expanded ? 'Collapse' : 'Expand'\">\n <i class=\"fas\" [ngClass]=\"p.Expanded ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n }\n <button type=\"button\" class=\"btn-icon\" (click)=\"copyParamValue(p)\" title=\"Copy value\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n </div>\n <div class=\"param-preview\" [attr.data-kind]=\"p.ValueKind\">{{ p.Preview }}</div>\n @if (p.IsExpandable && p.Expanded) {\n <div class=\"param-expanded\">\n <mj-code-editor\n [(ngModel)]=\"p.FormattedValue\"\n [name]=\"'param-' + p.Name\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 240px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </li>\n }\n </ul>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Output Message -->\n @if (record.Message) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-comment-alt\"></i> Output Message\n </ng-template>\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedMessage)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessage\"\n name=\"formattedMessage\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Empty States for missing data -->\n @if (!record.Params && !record.Message && !hasAnyParameters) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No execution data recorded\" />\n </mj-accordion-panel>\n }\n </div>\n </div>\n </div>\n</div>", styles: ["/* Action Execution Log Form Styles */\n:host {\n display: block;\n height: 100%;\n}\n\n.action-execution-log-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n}\n\n/* Header Styles */\n.header {\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-status-info);\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: var(--mj-text-xl);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-info h2 {\n margin: 0;\n font-size: var(--mj-text-2xl);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.action-name {\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.log-id {\n font-family: monospace;\n font-size: var(--mj-text-xs);\n opacity: 0.7;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-text-inverse);\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* Content Area */\n.content-area {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Details Grid */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: var(--mj-font-semibold);\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-primary);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: var(--mj-text-sm);\n padding: 4px;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.loading {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-xs);\n}\n\n/* JSON Viewer */\n.json-viewer {\n padding: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n margin-bottom: 20px;\n}\n\n.json-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.json-label {\n background: var(--mj-status-info);\n color: var(--mj-text-inverse);\n padding: 4px 12px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.btn-icon {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n/* Status badge colors based on data-status attribute */\n.status-badge[data-status=\"success\"],\n.status-badge[data-status=\"ok\"],\n.status-badge[data-status=\"completed\"],\n.status-badge[data-status=\"200\"] {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"error\"],\n.status-badge[data-status=\"failed\"],\n.status-badge[data-status=\"failure\"] {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"warning\"],\n.status-badge[data-status=\"pending\"] {\n background-color: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n}\n\n.status-badge[data-status=\"info\"],\n.status-badge[data-status=\"running\"] {\n background-color: var(--mj-status-info);\n color: var(--mj-text-inverse);\n}\n\n.status-badge {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.monospace {\n font-family: 'Courier New', Courier, monospace;\n font-size: var(--mj-text-xs);\n}\n\n/* ============================================================\n Unified Parameters Panel\n ============================================================ */\n\n.params-panel {\n padding: 18px 20px 22px;\n}\n\n/* Toolbar --------------------------------------------------------------- */\n.params-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: 14px;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n margin-bottom: 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n}\n\n.filter-chips {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 6px 13px;\n border-radius: var(--mj-radius-full);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.chip:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n.chip:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.chip .chip-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 18px;\n padding: 0 6px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n}\n.chip i {\n font-size: 11px;\n}\n\n.chip.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n.chip.active .chip-count {\n background: color-mix(in srgb, var(--mj-text-inverse) 25%, transparent);\n color: var(--mj-text-inverse);\n}\n\n/* Chip type flavors (active state tints per Input/Output/Both). */\n.chip.chip-input.active {\n background: var(--mj-status-info);\n border-color: var(--mj-status-info);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n}\n.chip.chip-output.active {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 22%, transparent);\n}\n.chip.chip-both.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.toolbar-right {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.search-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n.search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.params-search {\n min-width: 220px;\n padding: 7px 30px 7px 30px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n}\n.search-clear {\n position: absolute;\n right: 6px;\n width: 22px;\n height: 22px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.search-clear:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.sort-group {\n display: inline-flex;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.sort-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n background: transparent;\n border: none;\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: background var(--mj-transition-base);\n}\n.sort-btn + .sort-btn {\n border-left: 1px solid var(--mj-border-default);\n}\n.sort-btn:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.sort-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.sort-btn.active i { color: var(--mj-brand-primary); }\n\n.raw-toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.raw-toggle:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.raw-toggle.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n/* Param list rows -------------------------------------------------------- */\n.params-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-row {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-left: 3px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px 14px;\n transition: border-color var(--mj-transition-base), box-shadow var(--mj-transition-base);\n}\n.param-row:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.param-row[data-type=\"Input\"] { border-left-color: var(--mj-status-info); }\n.param-row[data-type=\"Output\"] { border-left-color: var(--mj-status-success); }\n.param-row[data-type=\"Both\"] { border-left-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%); }\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n flex-shrink: 0;\n}\n.type-badge[data-type=\"Input\"] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n}\n.type-badge[data-type=\"Output\"] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n.type-badge[data-type=\"Both\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.param-name-wrap {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n.param-name {\n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.value-kind-chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 10px;\n font-weight: var(--mj-font-medium);\n text-transform: lowercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n.value-kind-chip i { font-size: 9px; }\n.value-kind-chip[data-kind=\"number\"] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n.value-kind-chip[data-kind=\"boolean\"] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n.value-kind-chip[data-kind=\"array\"] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"object\"] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"null\"],\n.value-kind-chip[data-kind=\"undefined\"] {\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n}\n\n.param-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n.param-actions .btn-icon {\n width: 28px;\n height: 28px;\n}\n.param-expand.is-expanded {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n.param-preview {\n margin-top: 8px;\n padding-left: calc(64px + 12px); /* align under param name (after type badge) */\n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n word-break: break-word;\n line-height: 1.55;\n}\n.param-preview[data-kind=\"string\"] { color: var(--mj-status-success-text); }\n.param-preview[data-kind=\"number\"] { color: var(--mj-status-info-text); }\n.param-preview[data-kind=\"boolean\"] { color: var(--mj-status-warning-text); }\n.param-preview[data-kind=\"null\"],\n.param-preview[data-kind=\"undefined\"] { color: var(--mj-text-disabled); font-style: italic; }\n.param-preview[data-kind=\"array\"],\n.param-preview[data-kind=\"object\"] { color: var(--mj-brand-primary); }\n\n.param-expanded {\n margin-top: 10px;\n margin-left: calc(64px + 12px);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface-sunken);\n}\n\n.raw-json-viewer { margin-top: 4px; }\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-stats {\n flex-wrap: wrap;\n }\n\n .details-grid {\n grid-template-columns: 1fr;\n }\n\n .params-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right {\n justify-content: space-between;\n }\n .params-search { min-width: 0; width: 100%; }\n .search-wrapper { flex: 1; }\n\n .param-preview,\n .param-expanded {\n padding-left: 0;\n margin-left: 0;\n }\n}\n"] }]
1080
+ args: [{ standalone: false, selector: 'mj-action-execution-log-form', template: "<div class=\"record-form-container action-execution-log-form\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <div class=\"record-form\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <!-- Header -->\n <div class=\"header phone-hero\" [class.hero-view]=\"!EditMode\" [class.hero-compact]=\"!EditMode && !HeroDetailsOpen\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <!-- The action's own icon when it has one, matching how the same action is\n drawn in the run timeline. `fa-terminal` stays as the fallback: it is\n what this form has always shown, and it is the honest answer for an\n action whose metadata names no icon. -->\n @if (action && action.IconClass) {\n <i [ngClass]=\"action.IconClass\"></i>\n } @else {\n <i class=\"fas fa-terminal\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>Action Execution Log</h2>\n <div class=\"meta-info phone-hero-detail\">\n @if (action) {\n <span class=\"action-name\">{{ action.Name }}</span>\n }\n <span class=\"log-id\">{{ record.ID }}</span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.ResultCode?.toLowerCase()\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\"></i>\n {{ record.ResultCode || 'UNKNOWN' }}\n </div>\n <div class=\"execution-time phone-hero-detail\">\n <i class=\"fas fa-clock\"></i>\n {{ formatDuration(getExecutionDuration()) }}\n </div>\n </div>\n </div>\n <div class=\"header-stats phone-hero-detail phone-hero-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'short' }}</span>\n </div>\n @if (record.EndedAt) {\n <div class=\"stat\">\n <span class=\"label\">Ended</span>\n <span class=\"value\">{{ record.EndedAt | date:'short' }}</span>\n </div>\n }\n @if (action) {\n <div class=\"stat\">\n <span class=\"label\">Action</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToAction()\">\n {{ action.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n @if (user) {\n <div class=\"stat\">\n <span class=\"label\">User</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToUser()\">\n {{ user.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\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 <!-- Content Area -->\n <div class=\"content-area\">\n <div class=\"accordion-container\">\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 <!-- Execution Details -->\n <mj-accordion-panel SectionKey=\"details\" SectionTitle=\"Execution Details\" SectionIcon=\"fas fa-info-circle\" [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> Execution Details\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Execution ID</label>\n <span class=\"monospace\">{{ record.ID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Action ID</label>\n <span class=\"monospace\">{{ record.ActionID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>User ID</label>\n <span class=\"monospace\">{{ record.UserID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Result Code</label>\n <span class=\"detail-value\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\" [style.color]=\"getResultCodeColor()\"></i>\n <span [style.color]=\"getResultCodeColor()\">{{ record.ResultCode || 'N/A' }}</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Duration</label>\n <span>{{ formatDuration(getExecutionDuration()) }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Retention Period</label>\n <span>{{ record.RetentionPeriod ? record.RetentionPeriod + ' days' : 'Indefinite' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Unified Parameters section -->\n @if (hasAnyParameters) {\n <mj-accordion-panel SectionKey=\"parameters\" SectionTitle=\"Parameters\" SectionIcon=\"fas fa-sliders-h\" [SectionCount]=\"paramCounts.All\" [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n <span class=\"mj-accordion-badge mj-accordion-badge--right\">{{ paramCounts.All }}</span>\n </ng-template>\n <div class=\"params-panel\">\n <!-- Toolbar: filter chips, search, sort, raw toggle -->\n <div class=\"params-toolbar\">\n <div class=\"filter-chips\">\n <button\n type=\"button\"\n class=\"chip\"\n [class.active]=\"typeFilter === 'All'\"\n (click)=\"setTypeFilter('All')\">\n All <span class=\"chip-count\">{{ paramCounts.All }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-input\"\n [class.active]=\"typeFilter === 'Input'\"\n [disabled]=\"paramCounts.Input === 0\"\n (click)=\"setTypeFilter('Input')\">\n <i class=\"fas fa-sign-in-alt\"></i>\n Input <span class=\"chip-count\">{{ paramCounts.Input }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-both\"\n [class.active]=\"typeFilter === 'Both'\"\n [disabled]=\"paramCounts.Both === 0\"\n (click)=\"setTypeFilter('Both')\">\n <i class=\"fas fa-exchange-alt\"></i>\n In/Out <span class=\"chip-count\">{{ paramCounts.Both }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-output\"\n [class.active]=\"typeFilter === 'Output'\"\n [disabled]=\"paramCounts.Output === 0\"\n (click)=\"setTypeFilter('Output')\">\n <i class=\"fas fa-sign-out-alt\"></i>\n Output <span class=\"chip-count\">{{ paramCounts.Output }}</span>\n </button>\n </div>\n\n <div class=\"toolbar-right\">\n <div class=\"search-wrapper\">\n <i class=\"fas fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"mj-input params-search\"\n placeholder=\"Search name or value\u2026\"\n [(ngModel)]=\"searchText\"\n name=\"paramSearch\" />\n @if (searchText) {\n <button type=\"button\" class=\"search-clear\" (click)=\"searchText = ''\" title=\"Clear search\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n\n <div class=\"sort-group\" role=\"group\" aria-label=\"Sort parameters\">\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'type'\"\n (click)=\"toggleSort('type')\"\n title=\"Sort by type\">\n Type\n @if (sortKey === 'type') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-short-wide' : 'fa-arrow-up-wide-short'\"></i>\n }\n </button>\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'name'\"\n (click)=\"toggleSort('name')\"\n title=\"Sort by name\">\n Name\n @if (sortKey === 'name') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-a-z' : 'fa-arrow-up-z-a'\"></i>\n }\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"raw-toggle\"\n [class.active]=\"showRawJson\"\n (click)=\"toggleRawJson()\"\n title=\"Toggle raw JSON view\">\n <i class=\"fas fa-code\"></i>\n Raw\n </button>\n </div>\n </div>\n\n @if (showRawJson) {\n <div class=\"json-viewer raw-json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">Raw JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedParams)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"formattedParams\"\n name=\"formattedParamsRaw\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 360px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <!-- Rich param list -->\n @if (filteredParameters.length === 0) {\n <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n Icon=\"fa-solid fa-filter-circle-xmark\"\n Title=\"No parameters match the current filter.\"\n ActionText=\"Clear filters\"\n ActionIcon=\"fa-solid fa-rotate-left\"\n ActionVariant=\"flat\"\n (Action)=\"clearFilters()\" />\n } @else {\n <ul class=\"params-list\">\n @for (p of filteredParameters; track trackParam($index, p)) {\n <li class=\"param-row\" [attr.data-type]=\"p.Type\">\n <div class=\"param-header\">\n <span class=\"type-badge\" [attr.data-type]=\"p.Type\">\n @if (p.Type === 'Input') {\n <i class=\"fas fa-sign-in-alt\"></i>\n } @else if (p.Type === 'Output') {\n <i class=\"fas fa-sign-out-alt\"></i>\n } @else {\n <i class=\"fas fa-exchange-alt\"></i>\n }\n {{ getTypeLabel(p.Type) }}\n </span>\n <div class=\"param-name-wrap\">\n <span class=\"param-name\">{{ p.Name }}</span>\n <span class=\"value-kind-chip\" [attr.data-kind]=\"p.ValueKind\">\n <i class=\"fas\" [ngClass]=\"getValueKindIcon(p.ValueKind)\"></i>\n {{ p.ValueKind }}\n </span>\n </div>\n <div class=\"param-actions\">\n @if (p.IsExpandable) {\n <button type=\"button\" class=\"btn-icon param-expand\" [class.is-expanded]=\"p.Expanded\" (click)=\"toggleExpanded(p)\" [title]=\"p.Expanded ? 'Collapse' : 'Expand'\">\n <i class=\"fas\" [ngClass]=\"p.Expanded ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n }\n <button type=\"button\" class=\"btn-icon\" (click)=\"copyParamValue(p)\" title=\"Copy value\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n </div>\n <div class=\"param-preview\" [attr.data-kind]=\"p.ValueKind\">{{ p.Preview }}</div>\n @if (p.IsExpandable && p.Expanded) {\n <div class=\"param-expanded\">\n <mj-code-editor\n [(ngModel)]=\"p.FormattedValue\"\n [name]=\"'param-' + p.Name\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 240px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </li>\n }\n </ul>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Output Message -->\n @if (record.Message) {\n <mj-accordion-panel SectionKey=\"message\" SectionTitle=\"Output Message\" SectionIcon=\"fas fa-comment-alt\" [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-comment-alt\"></i> Output Message\n </ng-template>\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedMessage)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessage\"\n name=\"formattedMessage\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Empty States for missing data -->\n @if (!record.Params && !record.Message && !hasAnyParameters) {\n <mj-accordion-panel SectionKey=\"data\" SectionTitle=\"Execution Data\" SectionIcon=\"fas fa-database\" [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No execution data recorded\" />\n </mj-accordion-panel>\n }\n </mj-accordion-sections>\n </div>\n </div>\n </div>\n</div>", styles: ["/* Action Execution Log Form Styles */\n:host {\n display: block;\n height: 100%;\n}\n\n.action-execution-log-form {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n}\n\n/* Header Styles */\n.header {\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n padding: 20px;\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 16px;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.icon-wrapper {\n width: 48px;\n height: 48px;\n background: var(--mj-status-info);\n border-radius: var(--mj-radius-lg);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: var(--mj-text-xl);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.header-info h2 {\n margin: 0;\n font-size: var(--mj-text-2xl);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.meta-info {\n display: flex;\n gap: 12px;\n margin-top: 4px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.action-name {\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.log-id {\n font-family: monospace;\n font-size: var(--mj-text-xs);\n opacity: 0.7;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.status-badge {\n padding: 6px 16px;\n border-radius: var(--mj-radius-full);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--mj-text-inverse);\n}\n\n.execution-time {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-muted);\n}\n\n.header-stats {\n display: flex;\n gap: 24px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.stat .label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.stat .value {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-secondary);\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n/* Content Area */\n.content-area {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* Details Grid */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-item label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: var(--mj-font-semibold);\n}\n\n.detail-value {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-text-primary);\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: var(--mj-text-sm);\n padding: 4px;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.loading {\n color: var(--mj-text-muted);\n font-size: var(--mj-text-xs);\n}\n\n/* JSON Viewer */\n.json-viewer {\n padding: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-md);\n margin-bottom: 20px;\n}\n\n.json-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.json-label {\n background: var(--mj-status-info);\n color: var(--mj-text-inverse);\n padding: 4px 12px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.btn-icon {\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all var(--mj-transition-base);\n color: var(--mj-text-muted);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n}\n\n/* Status badge colors based on data-status attribute */\n.status-badge[data-status=\"success\"],\n.status-badge[data-status=\"ok\"],\n.status-badge[data-status=\"completed\"],\n.status-badge[data-status=\"200\"] {\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"error\"],\n.status-badge[data-status=\"failed\"],\n.status-badge[data-status=\"failure\"] {\n background-color: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.status-badge[data-status=\"warning\"],\n.status-badge[data-status=\"pending\"] {\n background-color: var(--mj-status-warning);\n color: var(--mj-color-warning-800);\n}\n\n.status-badge[data-status=\"info\"],\n.status-badge[data-status=\"running\"] {\n background-color: var(--mj-status-info);\n color: var(--mj-text-inverse);\n}\n\n.status-badge {\n background-color: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.monospace {\n font-family: 'Courier New', Courier, monospace;\n font-size: var(--mj-text-xs);\n}\n\n/* ============================================================\n Unified Parameters Panel\n ============================================================ */\n\n.params-panel {\n padding: 18px 20px 22px;\n}\n\n/* Toolbar --------------------------------------------------------------- */\n.params-toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: 14px;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n margin-bottom: 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n}\n\n.filter-chips {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 6px 13px;\n border-radius: var(--mj-radius-full);\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.chip:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n.chip:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n.chip .chip-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 18px;\n padding: 0 6px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n}\n.chip i {\n font-size: 11px;\n}\n\n.chip.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n.chip.active .chip-count {\n background: color-mix(in srgb, var(--mj-text-inverse) 25%, transparent);\n color: var(--mj-text-inverse);\n}\n\n/* Chip type flavors (active state tints per Input/Output/Both). */\n.chip.chip-input.active {\n background: var(--mj-status-info);\n border-color: var(--mj-status-info);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-info) 22%, transparent);\n}\n.chip.chip-output.active {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 22%, transparent);\n}\n.chip.chip-both.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n}\n\n.toolbar-right {\n display: flex;\n gap: 8px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.search-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n.search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n font-size: 12px;\n pointer-events: none;\n}\n.params-search {\n min-width: 220px;\n padding: 7px 30px 7px 30px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n}\n.search-clear {\n position: absolute;\n right: 6px;\n width: 22px;\n height: 22px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.search-clear:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n.sort-group {\n display: inline-flex;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.sort-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n background: transparent;\n border: none;\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: background var(--mj-transition-base);\n}\n.sort-btn + .sort-btn {\n border-left: 1px solid var(--mj-border-default);\n}\n.sort-btn:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.sort-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.sort-btn.active i { color: var(--mj-brand-primary); }\n\n.raw-toggle {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-medium);\n cursor: pointer;\n transition: all var(--mj-transition-base);\n}\n.raw-toggle:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n.raw-toggle.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n/* Param list rows -------------------------------------------------------- */\n.params-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-row {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-left: 3px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px 14px;\n transition: border-color var(--mj-transition-base), box-shadow var(--mj-transition-base);\n}\n.param-row:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.param-row[data-type=\"Input\"] { border-left-color: var(--mj-status-info); }\n.param-row[data-type=\"Output\"] { border-left-color: var(--mj-status-success); }\n.param-row[data-type=\"Both\"] { border-left-color: color-mix(in srgb, var(--mj-brand-primary) 75%, var(--mj-status-warning) 25%); }\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n font-weight: var(--mj-font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n flex-shrink: 0;\n}\n.type-badge[data-type=\"Input\"] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-info) 30%, transparent);\n}\n.type-badge[data-type=\"Output\"] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n.type-badge[data-type=\"Both\"] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.param-name-wrap {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n.param-name {\n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.value-kind-chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: var(--mj-radius-full);\n font-size: 10px;\n font-weight: var(--mj-font-medium);\n text-transform: lowercase;\n letter-spacing: 0.3px;\n flex-shrink: 0;\n}\n.value-kind-chip i { font-size: 9px; }\n.value-kind-chip[data-kind=\"number\"] { color: var(--mj-status-info-text); background: var(--mj-status-info-bg); }\n.value-kind-chip[data-kind=\"boolean\"] { color: var(--mj-status-warning-text); background: var(--mj-status-warning-bg); }\n.value-kind-chip[data-kind=\"array\"] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"object\"] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); }\n.value-kind-chip[data-kind=\"null\"],\n.value-kind-chip[data-kind=\"undefined\"] {\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n}\n\n.param-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n.param-actions .btn-icon {\n width: 28px;\n height: 28px;\n}\n.param-expand.is-expanded {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n}\n\n.param-preview {\n margin-top: 8px;\n padding-left: calc(64px + 12px); /* align under param name (after type badge) */\n font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n word-break: break-word;\n line-height: 1.55;\n}\n.param-preview[data-kind=\"string\"] { color: var(--mj-status-success-text); }\n.param-preview[data-kind=\"number\"] { color: var(--mj-status-info-text); }\n.param-preview[data-kind=\"boolean\"] { color: var(--mj-status-warning-text); }\n.param-preview[data-kind=\"null\"],\n.param-preview[data-kind=\"undefined\"] { color: var(--mj-text-disabled); font-style: italic; }\n.param-preview[data-kind=\"array\"],\n.param-preview[data-kind=\"object\"] { color: var(--mj-brand-primary); }\n\n.param-expanded {\n margin-top: 10px;\n margin-left: calc(64px + 12px);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface-sunken);\n}\n\n.raw-json-viewer { margin-top: 4px; }\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .header-content {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-stats {\n flex-wrap: wrap;\n }\n\n .details-grid {\n grid-template-columns: 1fr;\n }\n\n .params-toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n .toolbar-right {\n justify-content: space-between;\n }\n .params-search { min-width: 0; width: 100%; }\n .search-wrapper { flex: 1; }\n\n .param-preview,\n .param-expanded {\n padding-left: 0;\n margin-left: 0;\n }\n}\n\n/* Phone: sections sit on the page's 12px gutter instead of the desktop 20px content padding,\n and the params panel drops its own sides for the same reason. The param header can shrink,\n so a long name ellipses instead of widening the row. */\n@media (max-width: 768px) {\n .content-area {\n padding: 12px;\n }\n\n .params-panel {\n padding-left: 0;\n padding-right: 0;\n }\n\n .param-header,\n .param-name {\n min-width: 0;\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"] }]
1033
1081
  }], null, null); })();
1034
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJActionExecutionLogFormComponentExtended, { className: "MJActionExecutionLogFormComponentExtended", filePath: "src/lib/custom/Actions/action-execution-log-form.component.ts", lineNumber: 35 }); })();
1082
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJActionExecutionLogFormComponentExtended, { className: "MJActionExecutionLogFormComponentExtended", filePath: "src/lib/custom/Actions/action-execution-log-form.component.ts", lineNumber: 37 }); })();
1035
1083
  //# sourceMappingURL=action-execution-log-form.component.js.map