@memberjunction/ng-core-entity-forms 5.12.0 → 5.14.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.
@@ -94,14 +94,14 @@ let MJEntityActionFormComponentExtended = class MJEntityActionFormComponentExten
94
94
  return this.currentTab === tabName;
95
95
  }
96
96
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJEntityActionFormComponentExtended_BaseFactory; return function MJEntityActionFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJEntityActionFormComponentExtended_BaseFactory || (ɵMJEntityActionFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJEntityActionFormComponentExtended)))(__ngFactoryType__ || MJEntityActionFormComponentExtended); }; })(); }
97
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJEntityActionFormComponentExtended, selectors: [["mj-custom-entity-action-extended-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], ["topArea", ""], [1, "record-form-container"], [1, "record-form"], [3, "Form"], [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) {
97
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJEntityActionFormComponentExtended, selectors: [["mj-custom-entity-action-extended-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], ["topArea", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "Form"], [1, "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) {
98
98
  i0.ɵɵelementStart(0, "div", 2);
99
99
  i0.ɵɵconditionalCreate(1, MJEntityActionFormComponentExtended_Conditional_1_Template, 22, 35, "form", 3);
100
100
  i0.ɵɵelementEnd();
101
101
  } if (rf & 2) {
102
102
  i0.ɵɵadvance();
103
103
  i0.ɵɵconditional(ctx.record ? 1 : -1);
104
- } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatusGroup, i1.NgForm, i2.JoinGridComponent, i3.MjFormToolbarComponent, 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}"] }); }
104
+ } }, dependencies: [i1.ɵNgNoValidate, i1.NgControlStatusGroup, i1.NgForm, i2.JoinGridComponent, i3.MjFormToolbarComponent, 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}"] }); }
105
105
  };
106
106
  MJEntityActionFormComponentExtended = __decorate([
107
107
  RegisterClass(BaseFormComponent, 'MJ: Entity Actions')
@@ -109,7 +109,7 @@ MJEntityActionFormComponentExtended = __decorate([
109
109
  export { MJEntityActionFormComponentExtended };
110
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJEntityActionFormComponentExtended, [{
111
111
  type: Component,
112
- args: [{ standalone: false, selector: 'mj-custom-entity-action-extended-form', template: "<div class=\"record-form-container\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" >\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n <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 }\n</div>\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"] }]
112
+ args: [{ standalone: false, selector: 'mj-custom-entity-action-extended-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n <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 }\n</div>\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
113
  }], null, null); })();
114
114
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJEntityActionFormComponentExtended, { className: "MJEntityActionFormComponentExtended", filePath: "src/lib/custom/EntityActions/entityaction.form.component.ts", lineNumber: 16 }); })();
115
115
  //# 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,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uEAAuE,CAAC;;;;;;;;;;;;;ICHhH,kCAA2C;IAEzC,AADA,qCAAiD,gBAE3C;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;IAGrC,AADE,AADE,iBAAc,EACF,EACT;;;IAhFY,eAAa;IAAb,6BAAa;IAWxB,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;;ADhE1B,IAAM,mCAAmC,GAAzC,MAAM,mCAAoC,SAAQ,2BAA2B;IAA7E;;QAEK,kBAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,eAAU,GAAkB,IAAI,CAAC;KAuB5C;IArBG;;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;gUAzBQ,mCAAmC,yBAAnC,mCAAmC;oEAAnC,mCAAmC;YCfhD,8BAAmC;YACjC,wGAAc;YAoFhB,iBAAM;;YApFJ,cAmFC;YAnFD,qCAmFC;;;ADrEU,mCAAmC;IAP/C,aAAa,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;GAO1C,mCAAmC,CA0B/C;;iFA1BY,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 } 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']\n})\nexport class MJEntityActionFormComponentExtended extends MJEntityActionFormComponent {\n public record!: MJEntityActionEntity;\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","<div class=\"record-form-container\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" >\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n <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 }\n</div>\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,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uEAAuE,CAAC;;;;;;;;;;;;;ICHhH,kCAAwH;IAEtH,AADA,qCAAiD,gBAE3C;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;IAGrC,AADE,AADE,iBAAc,EACF,EACT;;;IAhFY,eAAa;IAAb,6BAAa;IAWxB,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;;ADhE1B,IAAM,mCAAmC,GAAzC,MAAM,mCAAoC,SAAQ,2BAA2B;IAA7E;;QAEK,kBAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,eAAU,GAAkB,IAAI,CAAC;KAuB5C;IArBG;;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;gUAzBQ,mCAAmC,yBAAnC,mCAAmC;oEAAnC,mCAAmC;YCfhD,8BAAgG;YAC9F,wGAAc;YAoFhB,iBAAM;;YApFJ,cAmFC;YAnFD,qCAmFC;;;ADrEU,mCAAmC;IAP/C,aAAa,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;GAO1C,mCAAmC,CA0B/C;;iFA1BY,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 } 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 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","<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n <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 }\n</div>\n"]}