@memberjunction/ng-core-entity-forms 6.1.0-edge.0 → 6.1.0-edge.1

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 (122) hide show
  1. package/dist/lib/custom/EntityActions/entityaction.form.component.js +9 -9
  2. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  3. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +30 -2
  4. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  5. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +293 -181
  6. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  7. package/dist/lib/custom/custom-forms.module.d.ts +14 -13
  8. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  9. package/dist/lib/custom/custom-forms.module.js +4 -0
  10. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  11. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  12. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +59 -41
  13. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  14. package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.d.ts +10 -0
  15. package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.d.ts.map +1 -0
  16. package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.js +78 -0
  17. package/dist/lib/generated/Entities/MJAIAgentCredential/mjaiagentcredential.form.component.js.map +1 -0
  18. package/dist/lib/generated/Entities/MJAIAgentHarness/mjaiagentharness.form.component.d.ts +10 -0
  19. package/dist/lib/generated/Entities/{MJReportSnapshot/mjreportsnapshot.form.component.d.ts.map → MJAIAgentHarness/mjaiagentharness.form.component.d.ts.map} +1 -1
  20. package/dist/lib/generated/Entities/MJAIAgentHarness/mjaiagentharness.form.component.js +90 -0
  21. package/dist/lib/generated/Entities/MJAIAgentHarness/mjaiagentharness.form.component.js.map +1 -0
  22. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  23. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +105 -83
  24. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  25. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
  26. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +48 -30
  27. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  28. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.d.ts.map +1 -1
  29. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +31 -13
  30. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  31. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  32. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +39 -57
  33. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  34. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.d.ts.map +1 -1
  35. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js +5 -23
  36. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js.map +1 -1
  37. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +2 -2
  38. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  40. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +31 -49
  41. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  42. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  43. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +38 -56
  44. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  45. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  46. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +31 -13
  47. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.d.ts.map +1 -1
  49. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js +7 -25
  50. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +3 -3
  52. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  53. package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js +12 -10
  54. package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js.map +1 -1
  55. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
  56. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +15 -33
  57. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
  58. package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.d.ts.map +1 -1
  59. package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.js +6 -25
  60. package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.js.map +1 -1
  61. package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.d.ts.map +1 -1
  62. package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.js +6 -25
  63. package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.js.map +1 -1
  64. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.d.ts.map +1 -1
  65. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +45 -25
  66. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
  67. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
  68. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +43 -25
  69. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
  70. package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.js +8 -6
  71. package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.js.map +1 -1
  72. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  73. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +372 -462
  74. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  75. package/dist/lib/generated/generated-forms.module.d.ts +375 -389
  76. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  77. package/dist/lib/generated/generated-forms.module.js +158 -215
  78. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  79. package/package.json +43 -42
  80. package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.d.ts +0 -10
  81. package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.d.ts.map +0 -1
  82. package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.js +0 -83
  83. package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.js.map +0 -1
  84. package/dist/lib/generated/Entities/MJReport/mjreport.form.component.d.ts +0 -10
  85. package/dist/lib/generated/Entities/MJReport/mjreport.form.component.d.ts.map +0 -1
  86. package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js +0 -161
  87. package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js.map +0 -1
  88. package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.d.ts +0 -10
  89. package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.d.ts.map +0 -1
  90. package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.js +0 -113
  91. package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.js.map +0 -1
  92. package/dist/lib/generated/Entities/MJReportSnapshot/mjreportsnapshot.form.component.d.ts +0 -10
  93. package/dist/lib/generated/Entities/MJReportSnapshot/mjreportsnapshot.form.component.js +0 -72
  94. package/dist/lib/generated/Entities/MJReportSnapshot/mjreportsnapshot.form.component.js.map +0 -1
  95. package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.d.ts +0 -10
  96. package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.d.ts.map +0 -1
  97. package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.js +0 -72
  98. package/dist/lib/generated/Entities/MJReportUserState/mjreportuserstate.form.component.js.map +0 -1
  99. package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.d.ts +0 -10
  100. package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.d.ts.map +0 -1
  101. package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.js +0 -78
  102. package/dist/lib/generated/Entities/MJReportVersion/mjreportversion.form.component.js.map +0 -1
  103. package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.d.ts +0 -10
  104. package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.d.ts.map +0 -1
  105. package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js +0 -135
  106. package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js.map +0 -1
  107. package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.d.ts +0 -10
  108. package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.d.ts.map +0 -1
  109. package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.js +0 -76
  110. package/dist/lib/generated/Entities/MJScheduledActionParam/mjscheduledactionparam.form.component.js.map +0 -1
  111. package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.d.ts +0 -10
  112. package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.d.ts.map +0 -1
  113. package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.js +0 -121
  114. package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.js.map +0 -1
  115. package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.d.ts +0 -10
  116. package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.d.ts.map +0 -1
  117. package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.js +0 -87
  118. package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.js.map +0 -1
  119. package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.d.ts +0 -10
  120. package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.d.ts.map +0 -1
  121. package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.js +0 -80
  122. package/dist/lib/generated/Entities/MJWorkflowRun/mjworkflowrun.form.component.js.map +0 -1
@@ -57,17 +57,17 @@ function MJEntityActionFormComponentExtended_Conditional_0_Template(rf, ctx) { i
57
57
  i0.ɵɵadvance(9);
58
58
  i0.ɵɵproperty("record", ctx_r1.record)("EditMode", ctx_r1.EditMode);
59
59
  i0.ɵɵadvance();
60
- i0.ɵɵproperty("Visible", ctx_r1.record.IsSaved)("Props", i0.ɵɵpureFunction0(29, _c0));
60
+ i0.ɵɵproperty("Visible", ctx_r1.record.IsSaved)("Props", i0.ɵɵpureFunction0(30, _c0));
61
61
  i0.ɵɵadvance(3);
62
- i0.ɵɵproperty("ShowSaveButton", false)("ShowCancelButton", false)("EditMode", ctx_r1.GridEditMode())("RowsExtraFilter", "ActionID=" + ctx_r1.record.ActionID)("JoinEntityExtraFilter", "EntityActionID=" + ctx_r1.record.ID)("JoinEntityDisplayColumns", i0.ɵɵpureFunction0(30, _c1))("NewRecordDefaultValues", i0.ɵɵpureFunction1(31, _c2, ctx_r1.record.ID));
62
+ i0.ɵɵproperty("ShowSaveButton", false)("ShowCancelButton", false)("EditMode", ctx_r1.GridEditMode())("RowsExtraFilter", "ActionID=" + ctx_r1.record.ActionID)("JoinEntityExtraFilter", "EntityActionID=" + ctx_r1.record.ID)("JoinEntityDisplayColumns", i0.ɵɵpureFunction0(31, _c1))("NewRecordDefaultValues", i0.ɵɵpureFunction1(32, _c2, ctx_r1.record.ID));
63
63
  i0.ɵɵadvance();
64
- i0.ɵɵproperty("Visible", ctx_r1.record.IsSaved)("Props", i0.ɵɵpureFunction0(33, _c0));
64
+ i0.ɵɵproperty("Visible", ctx_r1.record.IsSaved)("Props", i0.ɵɵpureFunction0(34, _c0));
65
65
  i0.ɵɵadvance(3);
66
- i0.ɵɵproperty("ShowSaveButton", false)("ShowCancelButton", false)("EditMode", ctx_r1.GridEditMode())("JoinEntityExtraFilter", "EntityActionID=" + ctx_r1.record.ID)("JoinEntityDisplayColumns", i0.ɵɵpureFunction0(34, _c3))("NewRecordDefaultValues", i0.ɵɵpureFunction1(35, _c2, ctx_r1.record.ID));
66
+ i0.ɵɵproperty("ShowSaveButton", false)("ShowCancelButton", false)("EditMode", ctx_r1.GridEditMode())("JoinEntityExtraFilter", "EntityActionID=" + ctx_r1.record.ID)("JoinEntityDisplayColumns", i0.ɵɵpureFunction0(35, _c3))("NewRecordDefaultValues", i0.ɵɵpureFunction1(36, _c2, ctx_r1.record.ID));
67
67
  i0.ɵɵadvance();
68
- i0.ɵɵproperty("Visible", ctx_r1.record.IsSaved)("Props", i0.ɵɵpureFunction0(37, _c4));
68
+ i0.ɵɵproperty("Visible", ctx_r1.record.IsSaved)("Props", i0.ɵɵpureFunction0(38, _c4));
69
69
  i0.ɵɵadvance(3);
70
- i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: Entity Action Filters"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: Entity Action Filters"))("AllowLoad", ctx_r1.IsCurrentTab("MJ: Entity Action Filters"))("ShowToolbar", false);
70
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: Entity Action Filters"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: Entity Action Filters"))("AllowLoad", ctx_r1.IsCurrentTab("MJ: Entity Action Filters"))("Height", 600)("ShowToolbar", false);
71
71
  } }
72
72
  let MJEntityActionFormComponentExtended = class MJEntityActionFormComponentExtended extends MJEntityActionFormComponent {
73
73
  constructor() {
@@ -98,8 +98,8 @@ let MJEntityActionFormComponentExtended = class MJEntityActionFormComponentExten
98
98
  return this.currentTab === tabName;
99
99
  }
100
100
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJEntityActionFormComponentExtended_BaseFactory; return function MJEntityActionFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJEntityActionFormComponentExtended_BaseFactory || (ɵMJEntityActionFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJEntityActionFormComponentExtended)))(__ngFactoryType__ || MJEntityActionFormComponentExtended); }; })(); }
101
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJEntityActionFormComponentExtended, selectors: [["mj-custom-entity-action-extended-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["form", "ngForm"], ["topArea", ""], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "record-form-group"], [3, "TabSelected", "ResizeContainer"], ["Name", "Details"], ["Entity", "MJ: Entity Actions", "Section", "details", 3, "record", "EditMode"], ["Name", "MJ: Entity Action Params", 3, "Visible", "Props"], ["RowsEntityName", "MJ: Action Params", "RowsEntityDisplayField", "Name", "RowsEntityDataSource", "FullEntity", "RowsOrderBy", "ID", "RowsEntityDisplayName", "Action Param", "ColumnsMode", "Fields", "JoinEntityName", "MJ: Entity Action Params", "JoinEntityRowForeignKey", "ActionParamID", 3, "ShowSaveButton", "ShowCancelButton", "EditMode", "RowsExtraFilter", "JoinEntityExtraFilter", "JoinEntityDisplayColumns", "NewRecordDefaultValues"], ["Name", "MJ: Entity Action Invocations", 3, "Visible", "Props"], ["RowsEntityName", "MJ: Entity Action Invocation Types", "RowsEntityDisplayField", "Name", "RowsEntityDataSource", "FullEntity", "RowsOrderBy", "Name", "RowsEntityDisplayName", "Type", "ColumnsMode", "Fields", "JoinEntityName", "MJ: Entity Action Invocations", "JoinEntityRowForeignKey", "InvocationTypeID", "CheckBoxValueMode", "RecordExists", 2, "height", "500px", "width", "800px", 3, "ShowSaveButton", "ShowCancelButton", "EditMode", "JoinEntityExtraFilter", "JoinEntityDisplayColumns", "NewRecordDefaultValues"], ["Name", "MJ: Entity Action Filters", 3, "Visible", "Props"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function MJEntityActionFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵconditionalCreate(0, MJEntityActionFormComponentExtended_Conditional_0_Template, 22, 38, "mj-record-form-container", 2);
101
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJEntityActionFormComponentExtended, selectors: [["mj-custom-entity-action-extended-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["form", "ngForm"], ["topArea", ""], [3, "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "record-form-group"], [3, "TabSelected", "ResizeContainer"], ["Name", "Details"], ["Entity", "MJ: Entity Actions", "Section", "details", 3, "record", "EditMode"], ["Name", "MJ: Entity Action Params", 3, "Visible", "Props"], ["RowsEntityName", "MJ: Action Params", "RowsEntityDisplayField", "Name", "RowsEntityDataSource", "FullEntity", "RowsOrderBy", "ID", "RowsEntityDisplayName", "Action Param", "ColumnsMode", "Fields", "JoinEntityName", "MJ: Entity Action Params", "JoinEntityRowForeignKey", "ActionParamID", 3, "ShowSaveButton", "ShowCancelButton", "EditMode", "RowsExtraFilter", "JoinEntityExtraFilter", "JoinEntityDisplayColumns", "NewRecordDefaultValues"], ["Name", "MJ: Entity Action Invocations", 3, "Visible", "Props"], ["RowsEntityName", "MJ: Entity Action Invocation Types", "RowsEntityDisplayField", "Name", "RowsEntityDataSource", "FullEntity", "RowsOrderBy", "Name", "RowsEntityDisplayName", "Type", "ColumnsMode", "Fields", "JoinEntityName", "MJ: Entity Action Invocations", "JoinEntityRowForeignKey", "InvocationTypeID", "CheckBoxValueMode", "RecordExists", 2, "height", "500px", "width", "800px", 3, "ShowSaveButton", "ShowCancelButton", "EditMode", "JoinEntityExtraFilter", "JoinEntityDisplayColumns", "NewRecordDefaultValues"], ["Name", "MJ: Entity Action Filters", 3, "Visible", "Props"], [3, "Params", "NewRecordValues", "AllowLoad", "Height", "ShowToolbar"]], template: function MJEntityActionFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵconditionalCreate(0, MJEntityActionFormComponentExtended_Conditional_0_Template, 22, 39, "mj-record-form-container", 2);
103
103
  } if (rf & 2) {
104
104
  i0.ɵɵconditional(ctx.record ? 0 : -1);
105
105
  } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatusGroup, i1.NgForm, i2.JoinGridComponent, i3.MjRecordFormContainerComponent, i3.SectionLoaderComponent, i3.ExplorerEntityDataGridComponent, i4.MJTabStripComponent, i4.MJTabBodyComponent, i4.MJTabComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}"] }); }
@@ -110,7 +110,7 @@ MJEntityActionFormComponentExtended = __decorate([
110
110
  export { MJEntityActionFormComponentExtended };
111
111
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJEntityActionFormComponentExtended, [{
112
112
  type: Component,
113
- args: [{ standalone: false, selector: 'mj-custom-entity-action-extended-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <div #topArea class=\"record-form-group\">\n </div>\n <mj-tabstrip (TabSelected)=\"onTabSelect($event)\" (ResizeContainer)=\"InvokeManualResize()\">\n <mj-tab Name=\"Details\">\n Details\n </mj-tab>\n <mj-tab-body>\n <mj-form-section\n Entity=\"MJ: Entity Actions\"\n Section=\"details\"\n [record]=\"record\"\n [EditMode]=\"EditMode\">\n </mj-form-section>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Params\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Params\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Action Params\"\n [RowsExtraFilter]=\"'ActionID=' + record.ActionID\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"ID\"\n RowsEntityDisplayName=\"Action Param\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Params\"\n JoinEntityRowForeignKey=\"ActionParamID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['ValueType', 'Value','Comments']\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Invocations\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Invocations\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Entity Action Invocation Types\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"Name\"\n RowsEntityDisplayName=\"Type\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Invocations\"\n JoinEntityRowForeignKey=\"InvocationTypeID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['Status']\"\n CheckBoxValueMode=\"RecordExists\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n style=\"height: 500px; width: 800px;\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Filters\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 248}\">\n Filters\n </mj-tab>\n <mj-tab-body>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Action Filters')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Action Filters')\"\n [AllowLoad]=\"IsCurrentTab('MJ: Entity Action Filters')\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </mj-tab-body>\n </mj-tabstrip>\n </form>\n</mj-record-form-container>\n}\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* EntityAction Form - Scrolling Layout Fixes */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n"] }]
113
+ args: [{ standalone: false, selector: 'mj-custom-entity-action-extended-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <div #topArea class=\"record-form-group\">\n </div>\n <mj-tabstrip (TabSelected)=\"onTabSelect($event)\" (ResizeContainer)=\"InvokeManualResize()\">\n <mj-tab Name=\"Details\">\n Details\n </mj-tab>\n <mj-tab-body>\n <mj-form-section\n Entity=\"MJ: Entity Actions\"\n Section=\"details\"\n [record]=\"record\"\n [EditMode]=\"EditMode\">\n </mj-form-section>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Params\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Params\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Action Params\"\n [RowsExtraFilter]=\"'ActionID=' + record.ActionID\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"ID\"\n RowsEntityDisplayName=\"Action Param\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Params\"\n JoinEntityRowForeignKey=\"ActionParamID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['ValueType', 'Value','Comments']\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Invocations\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Invocations\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Entity Action Invocation Types\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"Name\"\n RowsEntityDisplayName=\"Type\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Invocations\"\n JoinEntityRowForeignKey=\"InvocationTypeID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['Status']\"\n CheckBoxValueMode=\"RecordExists\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n style=\"height: 500px; width: 800px;\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Filters\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 248}\">\n Filters\n </mj-tab>\n <mj-tab-body>\n <!-- Explicit Height: the default 'auto' resolves to height:100%, which needs a definite\n ancestor \u2014 the tab body used to hardcode viewport height and provide one, but it now\n sizes to content (the host owns region sizing), so 100% would resolve to nothing and\n the grid loses its internal scroll. 600px \u2248 the region the old viewport math yielded. -->\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Action Filters')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Action Filters')\"\n [AllowLoad]=\"IsCurrentTab('MJ: Entity Action Filters')\"\n [Height]=\"600\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </mj-tab-body>\n </mj-tabstrip>\n </form>\n</mj-record-form-container>\n}\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* EntityAction Form - Scrolling Layout Fixes */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0 !important;\n overflow: hidden;\n}\n"] }]
114
114
  }], null, null); })();
115
115
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJEntityActionFormComponentExtended, { className: "MJEntityActionFormComponentExtended", filePath: "src/lib/custom/EntityActions/entityaction.form.component.ts", lineNumber: 16 }); })();
116
116
  //# sourceMappingURL=entityaction.form.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entityaction.form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/EntityActions/entityaction.form.component.ts","../../../../src/lib/custom/EntityActions/entityaction.form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uEAAuE,CAAC;;;;;;;;;;;;;ICJpH,mDAO4D;IAAxD,AADA,AADA,AADA,AADA,qOAAY,6BAAsB,KAAC,gOAChB,0BAAmB,KAAC,gOACpB,0BAAmB,KAAC,kOACnB,2BAAoB,KAAC,gPACd,kCAA2B,KAAC;IACvD,kCAAwH;IACtH,4BACM;IACN,sCAA2F;IAAzC,AAArC,8NAAe,0BAAmB,KAAC,mNAAqB,2BAAoB,KAAC;IACxF,iCAAuB;IACrB,yBACF;IAAA,iBAAS;IACT,mCAAa;IACX,qCAKkB;IACpB,iBAAc;IACd,kCAEwC;IACtC,yBACF;IAAA,iBAAS;IACT,oCAAa;IACX,oCAiBe;IACjB,iBAAc;IACd,mCAEwC;IACtC,8BACF;IAAA,iBAAS;IACT,oCAAa;IACX,oCAkBe;IACjB,iBAAc;IACd,mCAEwC;IACtC,0BACF;IAAA,iBAAS;IACT,oCAAa;IACX,oDAK+B;IAIzC,AADI,AADE,AADE,iBAAc,EACF,EACT,EACgB;;;IAvFvB,AADA,AADwC,AAAlB,sCAAiB,yBAAuB,uCAC/B,2BACL;IAiBlB,eAAiB;IACjB,AADA,sCAAiB,6BACI;IAIvB,cAA0B;IAC1B,AADA,+CAA0B,sCACW;IAKnC,eAAwB;IAcxB,AADgB,AADA,AARA,AAFhB,AADA,AADA,sCAAwB,2BACE,mCACC,yDAEsC,+DAQM,yDACO,yEACxB;IAKxD,cAA0B;IAC1B,AADA,+CAA0B,sCACW;IAKnC,eAAwB;IAcxB,AAFgB,AADA,AAThB,AADA,AADA,sCAAwB,2BACE,mCACC,+DAS4C,yDAChB,yEAED;IAMxD,cAA0B;IAC1B,AADA,+CAA0B,sCACW;IAKnC,eAA+E;IAG/E,AADA,AADA,AADA,oGAA+E,wEACf,+DACT,sBAClC;;ADtE1B,IAAM,mCAAmC,GAAzC,MAAM,mCAAoC,SAAQ,2BAA2B;IAA7E;;QAEa,kBAAa,GAAG,4BAA4B,CAAC;QAIrD,kBAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,eAAU,GAAkB,IAAI,CAAC;KAuB5C;IA1BG,4EAA4E;IAC5D,uBAAuB,KAAgC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7F;;OAEG;IACI,kBAAkB,CAAC,KAAc;QACpC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,CAAW;QAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC;IACvC,CAAC;gUA7BQ,mCAAmC,yBAAnC,mCAAmC;oEAAnC,mCAAmC;YCfhD,4HAAc;;YAAd,qCA2FC;;;AD5EY,mCAAmC;IAP/C,aAAa,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;GAO1C,mCAAmC,CA8B/C;;iFA9BY,mCAAmC;cAN/C,SAAS;6BACI,KAAK,YACL,uCAAuC;;kFAIxC,mCAAmC","sourcesContent":["import { Component, inject } from '@angular/core';\nimport { MJEntityActionEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent, CUSTOM_LAYOUT_TOOLBAR_CONFIG } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { MJEntityActionFormComponent } from '../../generated/Entities/MJEntityAction/mjentityaction.form.component';\nimport { TabEvent } from '@memberjunction/ng-tabstrip';\n\n@RegisterClass(BaseFormComponent, 'MJ: Entity Actions')\n@Component({\n standalone: false,\n selector: 'mj-custom-entity-action-extended-form',\n templateUrl: './entityaction.form.component.html',\n styleUrls: ['../../../shared/form-styles.css', './entityaction.form.component.css']\n})\nexport class MJEntityActionFormComponentExtended extends MJEntityActionFormComponent {\n public record!: MJEntityActionEntity;\n public readonly toolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;\n\n /** Custom-layout Entity Action form looks best full-width on first open. */\n public override getDefaultFormWidthMode(): 'centered' | 'full-width' { return 'full-width'; }\n private sharedService = inject(SharedService);\n private currentTab: string | null = null;\n\n /**\n * Convenience method to resize application container when required\n */\n public InvokeManualResize(delay?: number) {\n this.sharedService.InvokeManualResize(delay);\n }\n\n /**\n * Handle tab selection events\n */\n public onTabSelect(e: TabEvent) {\n this.currentTab = e.tab?.Name || null;\n this.sharedService.InvokeManualResize();\n }\n\n /**\n * Check if a tab is currently active\n */\n public IsCurrentTab(tabName: string): boolean {\n return this.currentTab === tabName;\n }\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <div #topArea class=\"record-form-group\">\n </div>\n <mj-tabstrip (TabSelected)=\"onTabSelect($event)\" (ResizeContainer)=\"InvokeManualResize()\">\n <mj-tab Name=\"Details\">\n Details\n </mj-tab>\n <mj-tab-body>\n <mj-form-section\n Entity=\"MJ: Entity Actions\"\n Section=\"details\"\n [record]=\"record\"\n [EditMode]=\"EditMode\">\n </mj-form-section>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Params\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Params\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Action Params\"\n [RowsExtraFilter]=\"'ActionID=' + record.ActionID\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"ID\"\n RowsEntityDisplayName=\"Action Param\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Params\"\n JoinEntityRowForeignKey=\"ActionParamID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['ValueType', 'Value','Comments']\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Invocations\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Invocations\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Entity Action Invocation Types\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"Name\"\n RowsEntityDisplayName=\"Type\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Invocations\"\n JoinEntityRowForeignKey=\"InvocationTypeID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['Status']\"\n CheckBoxValueMode=\"RecordExists\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n style=\"height: 500px; width: 800px;\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Filters\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 248}\">\n Filters\n </mj-tab>\n <mj-tab-body>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Action Filters')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Action Filters')\"\n [AllowLoad]=\"IsCurrentTab('MJ: Entity Action Filters')\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </mj-tab-body>\n </mj-tabstrip>\n </form>\n</mj-record-form-container>\n}\n"]}
1
+ {"version":3,"file":"entityaction.form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/EntityActions/entityaction.form.component.ts","../../../../src/lib/custom/EntityActions/entityaction.form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uEAAuE,CAAC;;;;;;;;;;;;;ICJpH,mDAO4D;IAAxD,AADA,AADA,AADA,AADA,qOAAY,6BAAsB,KAAC,gOAChB,0BAAmB,KAAC,gOACpB,0BAAmB,KAAC,kOACnB,2BAAoB,KAAC,gPACd,kCAA2B,KAAC;IACvD,kCAAwH;IACtH,4BACM;IACN,sCAA2F;IAAzC,AAArC,8NAAe,0BAAmB,KAAC,mNAAqB,2BAAoB,KAAC;IACxF,iCAAuB;IACrB,yBACF;IAAA,iBAAS;IACT,mCAAa;IACX,qCAKkB;IACpB,iBAAc;IACd,kCAEwC;IACtC,yBACF;IAAA,iBAAS;IACT,oCAAa;IACX,oCAiBe;IACjB,iBAAc;IACd,mCAEwC;IACtC,8BACF;IAAA,iBAAS;IACT,oCAAa;IACX,oCAkBe;IACjB,iBAAc;IACd,mCAEwC;IACtC,0BACF;IAAA,iBAAS;IACT,oCAAa;IAKX,oDAM+B;IAIzC,AADI,AADE,AADE,iBAAc,EACF,EACT,EACgB;;;IA5FvB,AADA,AADwC,AAAlB,sCAAiB,yBAAuB,uCAC/B,2BACL;IAiBlB,eAAiB;IACjB,AADA,sCAAiB,6BACI;IAIvB,cAA0B;IAC1B,AADA,+CAA0B,sCACW;IAKnC,eAAwB;IAcxB,AADgB,AADA,AARA,AAFhB,AADA,AADA,sCAAwB,2BACE,mCACC,yDAEsC,+DAQM,yDACO,yEACxB;IAKxD,cAA0B;IAC1B,AADA,+CAA0B,sCACW;IAKnC,eAAwB;IAcxB,AAFgB,AADA,AAThB,AADA,AADA,sCAAwB,2BACE,mCACC,+DAS4C,yDAChB,yEAED;IAMxD,cAA0B;IAC1B,AADA,+CAA0B,sCACW;IASnC,eAA+E;IAI/E,AADA,AADA,AADA,AADA,oGAA+E,wEACf,+DACT,eACzC,sBACO;;AD3E1B,IAAM,mCAAmC,GAAzC,MAAM,mCAAoC,SAAQ,2BAA2B;IAA7E;;QAEa,kBAAa,GAAG,4BAA4B,CAAC;QAIrD,kBAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,eAAU,GAAkB,IAAI,CAAC;KAuB5C;IA1BG,4EAA4E;IAC5D,uBAAuB,KAAgC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7F;;OAEG;IACI,kBAAkB,CAAC,KAAc;QACpC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,CAAW;QAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC;IACvC,CAAC;gUA7BQ,mCAAmC,yBAAnC,mCAAmC;oEAAnC,mCAAmC;YCfhD,4HAAc;;YAAd,qCAgGC;;;ADjFY,mCAAmC;IAP/C,aAAa,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;GAO1C,mCAAmC,CA8B/C;;iFA9BY,mCAAmC;cAN/C,SAAS;6BACI,KAAK,YACL,uCAAuC;;kFAIxC,mCAAmC","sourcesContent":["import { Component, inject } from '@angular/core';\nimport { MJEntityActionEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent, CUSTOM_LAYOUT_TOOLBAR_CONFIG } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { MJEntityActionFormComponent } from '../../generated/Entities/MJEntityAction/mjentityaction.form.component';\nimport { TabEvent } from '@memberjunction/ng-tabstrip';\n\n@RegisterClass(BaseFormComponent, 'MJ: Entity Actions')\n@Component({\n standalone: false,\n selector: 'mj-custom-entity-action-extended-form',\n templateUrl: './entityaction.form.component.html',\n styleUrls: ['../../../shared/form-styles.css', './entityaction.form.component.css']\n})\nexport class MJEntityActionFormComponentExtended extends MJEntityActionFormComponent {\n public record!: MJEntityActionEntity;\n public readonly toolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;\n\n /** Custom-layout Entity Action form looks best full-width on first open. */\n public override getDefaultFormWidthMode(): 'centered' | 'full-width' { return 'full-width'; }\n private sharedService = inject(SharedService);\n private currentTab: string | null = null;\n\n /**\n * Convenience method to resize application container when required\n */\n public InvokeManualResize(delay?: number) {\n this.sharedService.InvokeManualResize(delay);\n }\n\n /**\n * Handle tab selection events\n */\n public onTabSelect(e: TabEvent) {\n this.currentTab = e.tab?.Name || null;\n this.sharedService.InvokeManualResize();\n }\n\n /**\n * Check if a tab is currently active\n */\n public IsCurrentTab(tabName: string): boolean {\n return this.currentTab === tabName;\n }\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <div #topArea class=\"record-form-group\">\n </div>\n <mj-tabstrip (TabSelected)=\"onTabSelect($event)\" (ResizeContainer)=\"InvokeManualResize()\">\n <mj-tab Name=\"Details\">\n Details\n </mj-tab>\n <mj-tab-body>\n <mj-form-section\n Entity=\"MJ: Entity Actions\"\n Section=\"details\"\n [record]=\"record\"\n [EditMode]=\"EditMode\">\n </mj-form-section>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Params\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Params\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Action Params\"\n [RowsExtraFilter]=\"'ActionID=' + record.ActionID\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"ID\"\n RowsEntityDisplayName=\"Action Param\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Params\"\n JoinEntityRowForeignKey=\"ActionParamID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['ValueType', 'Value','Comments']\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Invocations\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 247}\">\n Invocations\n </mj-tab>\n <mj-tab-body>\n <mj-join-grid\n [ShowSaveButton]=\"false\"\n [ShowCancelButton]=\"false\"\n [EditMode]=\"GridEditMode()\"\n RowsEntityName=\"MJ: Entity Action Invocation Types\"\n RowsEntityDisplayField=\"Name\"\n RowsEntityDataSource=\"FullEntity\"\n RowsOrderBy=\"Name\"\n RowsEntityDisplayName=\"Type\"\n ColumnsMode=\"Fields\"\n JoinEntityName=\"MJ: Entity Action Invocations\"\n JoinEntityRowForeignKey=\"InvocationTypeID\"\n [JoinEntityExtraFilter]=\"'EntityActionID=' + record.ID\"\n [JoinEntityDisplayColumns]=\"['Status']\"\n CheckBoxValueMode=\"RecordExists\"\n [NewRecordDefaultValues]=\"{EntityActionID: record.ID}\"\n style=\"height: 500px; width: 800px;\"\n >\n </mj-join-grid>\n </mj-tab-body>\n <mj-tab Name=\"MJ: Entity Action Filters\"\n [Visible]=\"record.IsSaved\"\n [Props]=\"{EntityRelationshipID: 248}\">\n Filters\n </mj-tab>\n <mj-tab-body>\n <!-- Explicit Height: the default 'auto' resolves to height:100%, which needs a definite\n ancestor — the tab body used to hardcode viewport height and provide one, but it now\n sizes to content (the host owns region sizing), so 100% would resolve to nothing and\n the grid loses its internal scroll. 600px ≈ the region the old viewport math yielded. -->\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Action Filters')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Action Filters')\"\n [AllowLoad]=\"IsCurrentTab('MJ: Entity Action Filters')\"\n [Height]=\"600\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </mj-tab-body>\n </mj-tabstrip>\n </form>\n</mj-record-form-container>\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import { EventEmitter, ChangeDetectorRef } from '@angular/core';
2
2
  import { TimelineItem } from './ai-agent-run-timeline.component';
3
3
  import { MJAIAgentRunStepEntity_AgentSkillInvocation } from '@memberjunction/core-entities';
4
+ import type { TaskGraphSpec } from '@memberjunction/ai-core-plus';
4
5
  import * as i0 from "@angular/core";
5
6
  interface ScratchpadSnapshotView {
6
7
  notes: string;
@@ -17,8 +18,16 @@ export declare class AIAgentRunStepDetailComponent {
17
18
  closePanel: EventEmitter<void>;
18
19
  navigateToActionLog: EventEmitter<string>;
19
20
  copyToClipboard: EventEmitter<string>;
21
+ /**
22
+ * The user asked to promote this run's graph into a reusable workflow (D17).
23
+ *
24
+ * Intent only — this component renders a run, it does not persist agents. The host performs the
25
+ * conversion and the `AgentSpecSync` write, which keeps the one place that writes an agent the
26
+ * one place that writes an agent.
27
+ */
28
+ saveAsWorkflowRequested: EventEmitter<TaskGraphSpec>;
20
29
  selectedItemJsonString: string;
21
- detailPaneTab: 'json' | 'diff' | 'scratchpad' | 'skills';
30
+ detailPaneTab: 'json' | 'diff' | 'scratchpad' | 'skills' | 'graph';
22
31
  scratchpadSubTab: 'input' | 'output' | 'diff';
23
32
  constructor(cdr: ChangeDetectorRef);
24
33
  ngOnChanges(): void;
@@ -51,6 +60,25 @@ export declare class AIAgentRunStepDetailComponent {
51
60
  get stepSkillInvocations(): MJAIAgentRunStepEntity_AgentSkillInvocation[];
52
61
  /** Human-readable label for an invocation's activation type. */
53
62
  GetActivationTypeLabel(inv: MJAIAgentRunStepEntity_AgentSkillInvocation): string;
63
+ /**
64
+ * Whether the Workflow tab should be shown — true for a `TaskGraph` step that carries a spec.
65
+ *
66
+ * Phase 3 writes this step for EVERY emitted graph, dispatched or constant-folded, so a folded
67
+ * single-node graph is just as promotable as a dispatched one. That was the point of recording
68
+ * the fold rather than letting it vanish.
69
+ */
70
+ get showGraphTab(): boolean;
71
+ /**
72
+ * The `TaskGraphSpec` recorded on a `TaskGraph` step, or null.
73
+ *
74
+ * Read from InputData, falling back to OutputData: the step records the spec on the way in, and
75
+ * a malformed or absent payload simply means no tab rather than a broken panel.
76
+ */
77
+ get stepTaskGraph(): TaskGraphSpec | null;
78
+ /** True when the recorded graph was constant-folded rather than dispatched (D9). */
79
+ get stepTaskGraphWasFolded(): boolean;
80
+ /** Asks the host to save this run's graph as a reusable workflow. */
81
+ RequestSaveAsWorkflow(): void;
54
82
  /**
55
83
  * Whether the scratchpad tab should be shown (step has scratchpad data in InputData or OutputData)
56
84
  */
@@ -69,7 +97,7 @@ export declare class AIAgentRunStepDetailComponent {
69
97
  get scratchpadTaskChangeCount(): number;
70
98
  private extractScratchpadFromField;
71
99
  static ɵfac: i0.ɵɵFactoryDeclaration<AIAgentRunStepDetailComponent, never>;
72
- static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentRunStepDetailComponent, "mj-ai-agent-run-step-detail", never, { "selectedTimelineItem": { "alias": "selectedTimelineItem"; "required": false; }; }, { "closePanel": "closePanel"; "navigateToActionLog": "navigateToActionLog"; "copyToClipboard": "copyToClipboard"; }, never, never, false, never>;
100
+ static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentRunStepDetailComponent, "mj-ai-agent-run-step-detail", never, { "selectedTimelineItem": { "alias": "selectedTimelineItem"; "required": false; }; }, { "closePanel": "closePanel"; "navigateToActionLog": "navigateToActionLog"; "copyToClipboard": "copyToClipboard"; "saveAsWorkflowRequested": "saveAsWorkflowRequested"; }, never, never, false, never>;
73
101
  }
74
102
  export {};
75
103
  //# sourceMappingURL=ai-agent-run-step-detail.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent-run-step-detail.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAA0B,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;;AAGpH,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,qBAMa,6BAA6B;IAU5B,OAAO,CAAC,GAAG;IATd,oBAAoB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAChD,UAAU,qBAA4B;IACtC,mBAAmB,uBAA8B;IACjD,eAAe,uBAA8B;IAEvD,sBAAsB,SAAQ;IAC9B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAU;IAClE,gBAAgB,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAU;gBAEnC,GAAG,EAAE,iBAAiB;IAE1C,WAAW;IAqBX,mBAAmB,IAAI,MAAM;IAuB7B;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAYjC;IAED;;OAEG;IACH,IAAI,wBAAwB,IAAI,GAAG,CA4BlC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,GAAG,CA4BhC;IAED,YAAY;IAIZ,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAInC,iBAAiB;IAIjB;;;;OAIG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,oBAAoB,IAAI,2CAA2C,EAAE,CAYxE;IAED,gEAAgE;IACzD,sBAAsB,CAAC,GAAG,EAAE,2CAA2C,GAAG,MAAM;IAIvF;;OAEG;IACH,IAAI,iBAAiB,IAAI,OAAO,CAK/B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,sBAAsB,GAAG,IAAI,CAEvD;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,sBAAsB,GAAG,IAAI,CAExD;IAED;;OAEG;IACH,IAAI,yBAAyB,IAAI,MAAM,CAqBtC;IAED,OAAO,CAAC,0BAA0B;yCAzOvB,6BAA6B;2CAA7B,6BAA6B;CAiQzC"}
1
+ {"version":3,"file":"ai-agent-run-step-detail.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAA0B,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AACpH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;;AAGlE,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,qBAMa,6BAA6B;IAkB5B,OAAO,CAAC,GAAG;IAjBd,oBAAoB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAChD,UAAU,qBAA4B;IACtC,mBAAmB,uBAA8B;IACjD,eAAe,uBAA8B;IACvD;;;;;;OAMG;IACO,uBAAuB,8BAAqC;IAEtE,sBAAsB,SAAQ;IAC9B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAU;IAC5E,gBAAgB,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAU;gBAEnC,GAAG,EAAE,iBAAiB;IAE1C,WAAW;IAyBX,mBAAmB,IAAI,MAAM;IAuB7B;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAYjC;IAED;;OAEG;IACH,IAAI,wBAAwB,IAAI,GAAG,CA4BlC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,GAAG,CA4BhC;IAED,YAAY;IAIZ,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAInC,iBAAiB;IAIjB;;;;OAIG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,oBAAoB,IAAI,2CAA2C,EAAE,CAYxE;IAED,gEAAgE;IACzD,sBAAsB,CAAC,GAAG,EAAE,2CAA2C,GAAG,MAAM;IAIvF;;;;;;OAMG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;OAKG;IACH,IAAI,aAAa,IAAI,aAAa,GAAG,IAAI,CAgBxC;IAED,oFAAoF;IACpF,IAAI,sBAAsB,IAAI,OAAO,CAUpC;IAED,qEAAqE;IAC9D,qBAAqB,IAAI,IAAI;IAKpC;;OAEG;IACH,IAAI,iBAAiB,IAAI,OAAO,CAK/B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,sBAAsB,GAAG,IAAI,CAEvD;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,sBAAsB,GAAG,IAAI,CAExD;IAED;;OAEG;IACH,IAAI,yBAAyB,IAAI,MAAM,CAqBtC;IAED,OAAO,CAAC,0BAA0B;yCA3SvB,6BAA6B;2CAA7B,6BAA6B;CAmUzC"}