@memberjunction/ng-base-forms 5.30.1 → 5.31.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.
- package/dist/lib/__tests__/base-forms.test.js +21 -17
- package/dist/lib/__tests__/base-forms.test.js.map +1 -1
- package/dist/lib/base-form-component.d.ts.map +1 -1
- package/dist/lib/base-form-component.js +11 -9
- package/dist/lib/base-form-component.js.map +1 -1
- package/dist/lib/base-record-component.d.ts +5 -1
- package/dist/lib/base-record-component.d.ts.map +1 -1
- package/dist/lib/base-record-component.js +9 -1
- package/dist/lib/base-record-component.js.map +1 -1
- package/dist/lib/container/record-form-container.component.d.ts +2 -1
- package/dist/lib/container/record-form-container.component.d.ts.map +1 -1
- package/dist/lib/container/record-form-container.component.js +9 -8
- package/dist/lib/container/record-form-container.component.js.map +1 -1
- package/dist/lib/field/form-field.component.d.ts +2 -1
- package/dist/lib/field/form-field.component.d.ts.map +1 -1
- package/dist/lib/field/form-field.component.js +9 -8
- package/dist/lib/field/form-field.component.js.map +1 -1
- package/dist/lib/form-state.service.d.ts +7 -1
- package/dist/lib/form-state.service.d.ts.map +1 -1
- package/dist/lib/form-state.service.js +10 -1
- package/dist/lib/form-state.service.js.map +1 -1
- package/dist/lib/isa-related-panel/isa-hierarchy-utils.js +1 -1
- package/dist/lib/isa-related-panel/isa-hierarchy-utils.js.map +1 -1
- package/dist/lib/isa-related-panel/isa-related-card.component.d.ts +2 -1
- package/dist/lib/isa-related-panel/isa-related-card.component.d.ts.map +1 -1
- package/dist/lib/isa-related-panel/isa-related-card.component.js +7 -7
- package/dist/lib/isa-related-panel/isa-related-card.component.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-form-container.component.d.ts","sourceRoot":"","sources":["../../../src/lib/container/record-form-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACqB,YAAY,EAErB,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAExD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAgB,UAAU,EAAqB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"record-form-container.component.d.ts","sourceRoot":"","sources":["../../../src/lib/container/record-form-container.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACqB,YAAY,EAErB,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAExD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAgB,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAIrE,OAAO,EAAE,iBAAiB,EAA0B,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,iCAAiC,EAClC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAA0B,MAAM,mCAAmC,CAAC;;AAGhG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAQa,8BAA+B,SAAQ,oBAAqB,YAAW,gBAAgB,EAAE,SAAS;IAC7G,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,cAAc,CAAuB;IAI7C,8FAA8F;IAC3D,OAAO,CAAC,mBAAmB,CAAC,CAAyB;IAExF,mDAAmD;IACnD,iBAAiB,UAAS;IAE1B,wCAAwC;IACxC,aAAa,UAAS;IAEtB,iCAAiC;IACjC,cAAc,SAAK;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAwB;IAE9D,oCAAoC;IACpC,QAAQ,SAAK;IAEb,+DAA+D;IAC/D,YAAY,SAAK;IAEjB,oDAAoD;IACpD,kBAAkB,UAAS;IAE3B,oDAAoD;IACpD,kBAAkB,UAAS;IAI3B,+CAA+C;IACtC,MAAM,EAAG,UAAU,CAAC;IAE7B;;;;OAIG;IACM,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAI/C,UAAU,EAAE,UAAU,GAAG,IAAI,CAAQ;IACrC,QAAQ,UAAS;IACjB,WAAW,UAAS;IACpB,aAAa,UAAS;IACtB,UAAU,UAAS;IACnB,gBAAgB,UAAS;IACzB,OAAO,UAAS;IAChB,eAAe,EAAE,MAAM,EAAE,CAAM;IAC/B,SAAS,SAAK;IACd,QAAQ,UAAS;IACjB,aAAa,EAAE,iBAAiB,CAA0B;IAC1D,SAAS,EAAE,aAAa,CAAc;IAI/C,kFAAkF;IACxE,QAAQ,oCAA2C;IAE7D,sGAAsG;IAC5F,cAAc,wBAA+B;IAEvD,4EAA4E;IAClE,UAAU,oCAA2C;IAE/D,+DAA+D;IACrD,aAAa,qBAA4B;IAEnD,8EAA8E;IACpE,YAAY,sCAA6C;IAEnE,iEAAiE;IACvD,eAAe,qBAA4B;IAErD,8EAA8E;IACpE,YAAY,sCAA6C;IAEnE,0EAA0E;IAChE,eAAe,qBAA4B;IAErD,gDAAgD;IACtC,eAAe,qBAA4B;IAErD,oFAAoF;IAC1E,iBAAiB,2CAAkD;IAE7E,6CAA6C;IACnC,gBAAgB,qBAA4B;IAEtD,uFAAuF;IAC7E,oBAAoB,8CAAqD;IAEnF,gDAAgD;IACtC,uBAAuB,qBAA4B;IAE7D,6CAA6C;IACnC,oBAAoB,qBAA4B;IAE1D,sDAAsD;IAC5C,iBAAiB,kDAAyD;IAKpF,MAAM,EAAG,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAIhD,sDAAsD;IACtD,OAAO,KAAK,EAAE,GAEb;IAID,IAAI,eAAe,IAAI,UAAU,CAEhC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,oBAAoB,IAAI,OAAO,CAElC;IAED,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,IAAI,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAE3C;IAED,IAAI,gBAAgB,IAAI,OAAO,CAK9B;IAED,IAAI,wBAAwB,IAAI,MAAM,EAAE,CAKvC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,kBAAkB,IAAI,aAAa,CAKtC;IAED,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED,IAAI,wBAAwB,IAAI,OAAO,CAEtC;IAED,IAAI,8BAA8B,IAAI,OAAO,CAK5C;IAID,IAAI,iBAAiB,IAAI,MAAM,CAK9B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAMhC;IAED,IAAI,oBAAoB,IAAI,MAAM,CAMjC;IAID,qFAAqF;IACrF,IAAI,kBAAkB,IAAI,OAAO,CAmBhC;IAID,qFAAqF;IACrF,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAQ9C;IAED,oDAAoD;IACpD,IAAI,mBAAmB,IAAI,MAAM,EAAE,CAKlC;IAID,kBAAkB,IAAI,IAAI;IAoB1B,WAAW,IAAI,IAAI;IAOnB;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAgBtC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,eAAe;IAavB;;;OAGG;YACW,YAAY;IAmB1B;;;OAGG;YACW,gBAAgB;IAqB9B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAI5C;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAazC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,IAAI,IAAI;IAc1B,yBAAyB,IAAI,IAAI;IAcjC,kBAAkB,IAAI,IAAI;IAK1B,iBAAiB,IAAI,IAAI;IAWzB;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKtC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,oBAAoB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAY3E,qBAAqB,IAAI,IAAI;IAW7B;;;;;;;;;OASG;IACG,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CnE,sBAAsB,IAAI,IAAI;IAK9B,sBAAsB,IAAI,IAAI;IAU9B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOpC,WAAW,IAAI,IAAI;IAOnB,aAAa,IAAI,IAAI;IAOrB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAO5C,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAU5C,mBAAmB,IAAI,IAAI;IAS3B,gBAAgB,IAAI,IAAI;IAKxB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAO9C,qBAAqB,IAAI,IAAI;IAI7B,sBAAsB,IAAI,IAAI;yCA5rBnB,8BAA8B;2CAA9B,8BAA8B;CAgsB1C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject, NgZone, ContentChildren, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { CompositeKey,
|
|
2
|
+
import { CompositeKey, RunView } from '@memberjunction/core';
|
|
3
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
4
|
import { UserInfoEngine } from '@memberjunction/core-entities';
|
|
4
5
|
import { Subject } from 'rxjs';
|
|
5
6
|
import { takeUntil } from 'rxjs/operators';
|
|
@@ -103,7 +104,7 @@ function MjRecordFormContainerComponent_Conditional_11_Template(rf, ctx) { if (r
|
|
|
103
104
|
* </mj-record-form-container>
|
|
104
105
|
* ```
|
|
105
106
|
*/
|
|
106
|
-
export class MjRecordFormContainerComponent {
|
|
107
|
+
export class MjRecordFormContainerComponent extends BaseAngularComponent {
|
|
107
108
|
cdr = inject(ChangeDetectorRef);
|
|
108
109
|
ngZone = inject(NgZone);
|
|
109
110
|
notificationService = inject(MJNotificationService);
|
|
@@ -384,7 +385,7 @@ export class MjRecordFormContainerComponent {
|
|
|
384
385
|
*/
|
|
385
386
|
async LoadTagCount(record) {
|
|
386
387
|
try {
|
|
387
|
-
const rv =
|
|
388
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
388
389
|
// Don't narrow Fields — the server caches RunView results by entity+filter (ignoring Fields),
|
|
389
390
|
// so a narrow query here would poison the cache for the subsequent full-field load in the Tags panel.
|
|
390
391
|
const result = await rv.RunView({
|
|
@@ -409,7 +410,7 @@ export class MjRecordFormContainerComponent {
|
|
|
409
410
|
if (!record.EntityInfo.TrackRecordChanges)
|
|
410
411
|
return;
|
|
411
412
|
try {
|
|
412
|
-
const rv =
|
|
413
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
413
414
|
const result = await rv.RunView({
|
|
414
415
|
EntityName: 'MJ: Record Changes',
|
|
415
416
|
Fields: ['ID'],
|
|
@@ -561,7 +562,7 @@ export class MjRecordFormContainerComponent {
|
|
|
561
562
|
UserInfoEngine.Instance.SetSettingDebounced(MjRecordFormContainerComponent.TAGS_WIDTH_KEY, String(width));
|
|
562
563
|
}
|
|
563
564
|
OnTagsRecordNavigate(event) {
|
|
564
|
-
const md =
|
|
565
|
+
const md = this.ProviderToUse;
|
|
565
566
|
const entityInfo = md.Entities.find(e => e.Name === event.EntityName);
|
|
566
567
|
const pkey = new CompositeKey();
|
|
567
568
|
if (entityInfo) {
|
|
@@ -699,7 +700,7 @@ export class MjRecordFormContainerComponent {
|
|
|
699
700
|
this.ShowSectionManager = false;
|
|
700
701
|
this.cdr.markForCheck();
|
|
701
702
|
}
|
|
702
|
-
static ɵfac = function MjRecordFormContainerComponent_Factory(__ngFactoryType__) { return
|
|
703
|
+
static ɵfac = /*@__PURE__*/ (() => { let ɵMjRecordFormContainerComponent_BaseFactory; return function MjRecordFormContainerComponent_Factory(__ngFactoryType__) { return (ɵMjRecordFormContainerComponent_BaseFactory || (ɵMjRecordFormContainerComponent_BaseFactory = i0.ɵɵgetInheritedFactory(MjRecordFormContainerComponent)))(__ngFactoryType__ || MjRecordFormContainerComponent); }; })();
|
|
703
704
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjRecordFormContainerComponent, selectors: [["mj-record-form-container"]], contentQueries: function MjRecordFormContainerComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
704
705
|
i0.ɵɵcontentQuery(dirIndex, MjCollapsiblePanelComponent, 5);
|
|
705
706
|
} if (rf & 2) {
|
|
@@ -710,7 +711,7 @@ export class MjRecordFormContainerComponent {
|
|
|
710
711
|
} if (rf & 2) {
|
|
711
712
|
let _t;
|
|
712
713
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.recordChangesDrawer = _t.first);
|
|
713
|
-
} }, inputs: { Record: "Record", FormComponent: "FormComponent", EntityInfo: "EntityInfo", EditMode: "EditMode", UserCanEdit: "UserCanEdit", UserCanDelete: "UserCanDelete", IsFavorite: "IsFavorite", FavoriteInitDone: "FavoriteInitDone", IsDirty: "IsDirty", DirtyFieldNames: "DirtyFieldNames", ListCount: "ListCount", IsSaving: "IsSaving", ToolbarConfig: "ToolbarConfig", WidthMode: "WidthMode" }, outputs: { Navigate: "Navigate", EditModeChange: "EditModeChange", BeforeSave: "BeforeSave", SaveRequested: "SaveRequested", BeforeCancel: "BeforeCancel", CancelRequested: "CancelRequested", BeforeDelete: "BeforeDelete", DeleteRequested: "DeleteRequested", FavoriteToggled: "FavoriteToggled", BeforeHistoryView: "BeforeHistoryView", HistoryRequested: "HistoryRequested", BeforeListManagement: "BeforeListManagement", ListManagementRequested: "ListManagementRequested", ShowChangesRequested: "ShowChangesRequested", CustomButtonClick: "CustomButtonClick" }, standalone: false, ngContentSelectors: _c1, decls: 13, vars: 37, consts: [[3, "Navigate", "EditModeChange", "BeforeSave", "SaveRequested", "BeforeCancel", "CancelRequested", "BeforeDelete", "DeleteRequested", "FavoriteToggled", "BeforeHistoryView", "HistoryRequested", "BeforeListManagement", "ListManagementRequested", "ShowChangesRequested", "CustomButtonClick", "FilterChange", "ExpandAllRequested", "CollapseAllRequested", "ShowEmptyFieldsChange", "WidthModeChange", "ResetSectionOrderRequested", "ManageSectionsRequested", "TagsPanelToggled", "Record", "EditMode", "UserCanEdit", "UserCanDelete", "IsFavorite", "FavoriteInitDone", "IsDirty", "DirtyFieldNames", "ListCount", "TagCount", "VersionCount", "EntityInfo", "Config", "IsSaving", "VisibleSectionCount", "TotalSectionCount", "ExpandedSectionCount", "SearchFilter", "ShowEmptyFields", "WidthMode", "HasCustomSectionOrder"], [1, "mj-forms-scroll-area"], [1, "mj-forms-panels-container"], [1, "mj-forms-layout-row"], [1, "mj-forms-all-panels"], [1, "mj-forms-empty-search-state"], [3, "Navigate", "Record", "EditMode", "Collapsed"], [3, "record", "AllowRestore"], [3, "Record", "WidthPx"], [3, "visible", "config"], [3, "SectionOrderChange", "ResetRequested", "Closed", "Sections", "SectionOrder", "Visible"], [1, "mj-forms-empty-search-icon"], [1, "fa-solid", "fa-magnifying-glass"], [1, "mj-forms-empty-search-title"], [1, "mj-forms-empty-search-message"], ["href", "#", 1, "mj-forms-empty-search-link", 3, "click"], [3, "RestoreRequested", "dialogClosed", "record", "AllowRestore"], [3, "PanelClosed", "TagCountChanged", "RecordNavigate", "WidthChanged", "Record", "WidthPx"], [3, "complete", "cancel", "visible", "config"]], template: function MjRecordFormContainerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
714
|
+
} }, inputs: { Record: "Record", FormComponent: "FormComponent", EntityInfo: "EntityInfo", EditMode: "EditMode", UserCanEdit: "UserCanEdit", UserCanDelete: "UserCanDelete", IsFavorite: "IsFavorite", FavoriteInitDone: "FavoriteInitDone", IsDirty: "IsDirty", DirtyFieldNames: "DirtyFieldNames", ListCount: "ListCount", IsSaving: "IsSaving", ToolbarConfig: "ToolbarConfig", WidthMode: "WidthMode" }, outputs: { Navigate: "Navigate", EditModeChange: "EditModeChange", BeforeSave: "BeforeSave", SaveRequested: "SaveRequested", BeforeCancel: "BeforeCancel", CancelRequested: "CancelRequested", BeforeDelete: "BeforeDelete", DeleteRequested: "DeleteRequested", FavoriteToggled: "FavoriteToggled", BeforeHistoryView: "BeforeHistoryView", HistoryRequested: "HistoryRequested", BeforeListManagement: "BeforeListManagement", ListManagementRequested: "ListManagementRequested", ShowChangesRequested: "ShowChangesRequested", CustomButtonClick: "CustomButtonClick" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 13, vars: 37, consts: [[3, "Navigate", "EditModeChange", "BeforeSave", "SaveRequested", "BeforeCancel", "CancelRequested", "BeforeDelete", "DeleteRequested", "FavoriteToggled", "BeforeHistoryView", "HistoryRequested", "BeforeListManagement", "ListManagementRequested", "ShowChangesRequested", "CustomButtonClick", "FilterChange", "ExpandAllRequested", "CollapseAllRequested", "ShowEmptyFieldsChange", "WidthModeChange", "ResetSectionOrderRequested", "ManageSectionsRequested", "TagsPanelToggled", "Record", "EditMode", "UserCanEdit", "UserCanDelete", "IsFavorite", "FavoriteInitDone", "IsDirty", "DirtyFieldNames", "ListCount", "TagCount", "VersionCount", "EntityInfo", "Config", "IsSaving", "VisibleSectionCount", "TotalSectionCount", "ExpandedSectionCount", "SearchFilter", "ShowEmptyFields", "WidthMode", "HasCustomSectionOrder"], [1, "mj-forms-scroll-area"], [1, "mj-forms-panels-container"], [1, "mj-forms-layout-row"], [1, "mj-forms-all-panels"], [1, "mj-forms-empty-search-state"], [3, "Navigate", "Record", "EditMode", "Collapsed"], [3, "record", "AllowRestore"], [3, "Record", "WidthPx"], [3, "visible", "config"], [3, "SectionOrderChange", "ResetRequested", "Closed", "Sections", "SectionOrder", "Visible"], [1, "mj-forms-empty-search-icon"], [1, "fa-solid", "fa-magnifying-glass"], [1, "mj-forms-empty-search-title"], [1, "mj-forms-empty-search-message"], ["href", "#", 1, "mj-forms-empty-search-link", 3, "click"], [3, "RestoreRequested", "dialogClosed", "record", "AllowRestore"], [3, "PanelClosed", "TagCountChanged", "RecordNavigate", "WidthChanged", "Record", "WidthPx"], [3, "complete", "cancel", "visible", "config"]], template: function MjRecordFormContainerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
714
715
|
i0.ɵɵprojectionDef(_c0);
|
|
715
716
|
i0.ɵɵprojection(0);
|
|
716
717
|
i0.ɵɵelementStart(1, "mj-form-toolbar", 0);
|
|
@@ -816,5 +817,5 @@ export class MjRecordFormContainerComponent {
|
|
|
816
817
|
type: ContentChildren,
|
|
817
818
|
args: [MjCollapsiblePanelComponent, { descendants: true }]
|
|
818
819
|
}] }); })();
|
|
819
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjRecordFormContainerComponent, { className: "MjRecordFormContainerComponent", filePath: "src/lib/container/record-form-container.component.ts", lineNumber:
|
|
820
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjRecordFormContainerComponent, { className: "MjRecordFormContainerComponent", filePath: "src/lib/container/record-form-container.component.ts", lineNumber: 67 }); })();
|
|
820
821
|
//# sourceMappingURL=record-form-container.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-form-container.component.js","sourceRoot":"","sources":["../../../src/lib/container/record-form-container.component.ts","../../../src/lib/container/record-form-container.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component, Input, Output, EventEmitter,\n ChangeDetectionStrategy, ChangeDetectorRef, inject, NgZone,\n ContentChildren, QueryList, AfterContentInit, OnDestroy,\n ViewChild, ViewEncapsulation\n} from '@angular/core';\nimport { BaseEntity, CompositeKey, EntityInfo, Metadata, RunView } from '@memberjunction/core';\nimport { UserInfoEngine } from '@memberjunction/core-entities';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FormToolbarConfig, DEFAULT_TOOLBAR_CONFIG } from '../types/toolbar-config';\nimport { FormNavigationEvent } from '../types/navigation-events';\nimport { FormWidthMode } from '../types/form-types';\nimport { MjCollapsiblePanelComponent } from '../panel/collapsible-panel.component';\nimport { SectionManagerItem } from '../section-manager/section-manager.component';\nimport {\n BeforeSaveEventArgs,\n BeforeDeleteEventArgs,\n BeforeCancelEventArgs,\n BeforeHistoryViewEventArgs,\n BeforeListManagementEventArgs,\n CustomToolbarButtonClickEventArgs\n} from '../types/form-events';\nimport { BaseFormComponent } from '../base-form-component';\nimport { RestoreVersionEvent, RecordChangesComponent } from '@memberjunction/ng-record-changes';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\n/**\n * Top-level container that composes the toolbar, content slots, and sticky behavior.\n *\n * **Two usage modes:**\n *\n * 1. **With FormComponent** (generated forms): Pass `[FormComponent]=\"this\"` and the\n * container derives all state from the BaseFormComponent instance. Save/Cancel/Edit\n * are handled internally by calling FormComponent methods.\n *\n * 2. **Standalone**: Pass individual @Input properties and handle all @Output events.\n *\n * @example Generated form usage:\n * ```html\n * <mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n * (Navigate)=\"OnFormNavigate($event)\"\n * (DeleteRequested)=\"OnDeleteRequested()\"\n * (FavoriteToggled)=\"OnFavoriteToggled()\"\n * (HistoryRequested)=\"OnHistoryRequested()\"\n * (ListManagementRequested)=\"OnListManagementRequested()\">\n *\n * <mj-collapsible-panel SectionKey=\"details\" ...>\n * <mj-form-field ...></mj-form-field>\n * </mj-collapsible-panel>\n *\n * <mj-collapsible-panel SectionKey=\"relatedOrders\" Variant=\"related-entity\" ...>\n * <!-- related entity grid -->\n * </mj-collapsible-panel>\n * </mj-record-form-container>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-record-form-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './record-form-container.component.html',\n styleUrls: ['./record-form-container.component.css']\n})\nexport class MjRecordFormContainerComponent implements AfterContentInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private notificationService = inject(MJNotificationService);\n private destroy$ = new Subject<void>();\n private panelNavReset$ = new Subject<void>();\n\n // ---- Internal State ----\n\n /** Reference to the record changes drawer (when visible) for triggering refresh after save */\n @ViewChild(RecordChangesComponent) private recordChangesDrawer?: RecordChangesComponent;\n\n /** Controls visibility of record changes drawer */\n ShowRecordChanges = false;\n\n /** Controls visibility of tags panel */\n ShowTagsPanel = false;\n\n /** Persisted tags panel width */\n TagsPanelWidth = 0;\n private static readonly TAGS_WIDTH_KEY = 'MJ_TagsPanel_Width';\n\n /** Number of tags on this record */\n TagCount = 0;\n\n /** Number of tracked record change versions for this record */\n VersionCount = 0;\n\n /** Controls visibility of list management dialog */\n ShowListManagement = false;\n\n /** Controls visibility of section manager drawer */\n ShowSectionManager = false;\n\n // ---- Primary Inputs ----\n\n /** The entity record being displayed/edited */\n @Input() Record!: BaseEntity;\n\n /**\n * Reference to the parent form component (e.g. BaseFormComponent subclass).\n * When provided, the container derives toolbar state from this reference and\n * handles Save/Cancel/Edit internally by calling its methods.\n */\n @Input() FormComponent: BaseFormComponent | null = null;\n\n // ---- Fallback Inputs (used when FormComponent is NOT provided) ----\n\n @Input() EntityInfo: EntityInfo | null = null;\n @Input() EditMode = false;\n @Input() UserCanEdit = false;\n @Input() UserCanDelete = false;\n @Input() IsFavorite = false;\n @Input() FavoriteInitDone = false;\n @Input() IsDirty = false;\n @Input() DirtyFieldNames: string[] = [];\n @Input() ListCount = 0;\n @Input() IsSaving = false;\n @Input() ToolbarConfig: FormToolbarConfig = DEFAULT_TOOLBAR_CONFIG;\n @Input() WidthMode: FormWidthMode = 'centered';\n\n // ---- Outputs ----\n\n /** Emitted for all navigation actions (the host app maps these to its routing) */\n @Output() Navigate = new EventEmitter<FormNavigationEvent>();\n\n /** Emitted when edit mode changes (only in standalone mode; FormComponent mode handled internally) */\n @Output() EditModeChange = new EventEmitter<boolean>();\n\n /** Emitted BEFORE save - can be cancelled by setting event.Cancel = true */\n @Output() BeforeSave = new EventEmitter<BeforeSaveEventArgs>();\n\n /** Emitted when save is requested (only in standalone mode) */\n @Output() SaveRequested = new EventEmitter<void>();\n\n /** Emitted BEFORE cancel - can be cancelled by setting event.Cancel = true */\n @Output() BeforeCancel = new EventEmitter<BeforeCancelEventArgs>();\n\n /** Emitted when cancel is requested (only in standalone mode) */\n @Output() CancelRequested = new EventEmitter<void>();\n\n /** Emitted BEFORE delete - can be cancelled by setting event.Cancel = true */\n @Output() BeforeDelete = new EventEmitter<BeforeDeleteEventArgs>();\n\n /** Emitted when delete is confirmed (host app handles actual deletion) */\n @Output() DeleteRequested = new EventEmitter<void>();\n\n /** Emitted when favorite toggle is requested */\n @Output() FavoriteToggled = new EventEmitter<void>();\n\n /** Emitted BEFORE history view - can be cancelled by setting event.Cancel = true */\n @Output() BeforeHistoryView = new EventEmitter<BeforeHistoryViewEventArgs>();\n\n /** Emitted when history view is requested */\n @Output() HistoryRequested = new EventEmitter<void>();\n\n /** Emitted BEFORE list management - can be cancelled by setting event.Cancel = true */\n @Output() BeforeListManagement = new EventEmitter<BeforeListManagementEventArgs>();\n\n /** Emitted when list management is requested */\n @Output() ListManagementRequested = new EventEmitter<void>();\n\n /** Emitted when show-changes is requested */\n @Output() ShowChangesRequested = new EventEmitter<void>();\n\n /** Emitted when a custom toolbar button is clicked */\n @Output() CustomButtonClick = new EventEmitter<CustomToolbarButtonClickEventArgs>();\n\n // ---- Content Children ----\n\n @ContentChildren(MjCollapsiblePanelComponent, { descendants: true })\n Panels!: QueryList<MjCollapsiblePanelComponent>;\n\n // ---- FormComponent accessor ----\n\n /** Typed accessor for the form component reference */\n private get fc(): BaseFormComponent | null {\n return this.FormComponent;\n }\n\n // ---- Effective state (bridges FormComponent → toolbar inputs) ----\n\n get EffectiveRecord(): BaseEntity {\n return this.fc?.record ?? this.Record;\n }\n\n get EffectiveEditMode(): boolean {\n return this.fc?.EditMode ?? this.EditMode;\n }\n\n get EffectiveUserCanEdit(): boolean {\n return this.fc?.UserCanEdit ?? this.UserCanEdit;\n }\n\n get EffectiveUserCanDelete(): boolean {\n return this.fc?.UserCanDelete ?? this.UserCanDelete;\n }\n\n get EffectiveIsFavorite(): boolean {\n return this.fc?.IsFavorite ?? this.IsFavorite;\n }\n\n get EffectiveFavoriteInitDone(): boolean {\n return this.fc?.FavoriteInitDone ?? this.FavoriteInitDone;\n }\n\n get EffectiveEntityInfo(): EntityInfo | null {\n return (this.fc?.EntityInfo as EntityInfo) ?? this.EntityInfo;\n }\n\n get EffectiveIsDirty(): boolean {\n if (this.fc) {\n return this.fc.record?.Dirty ?? false;\n }\n return this.IsDirty;\n }\n\n get EffectiveDirtyFieldNames(): string[] {\n if (this.fc?.record?.Fields) {\n return this.fc.record.Fields.filter(f => f.Dirty).map(f => f.Name);\n }\n return this.DirtyFieldNames;\n }\n\n get EffectiveIsSaving(): boolean {\n return this.IsSaving;\n }\n\n get EffectiveWidthMode(): FormWidthMode {\n if (this.fc?.getFormWidthMode) {\n return this.fc.getFormWidthMode();\n }\n return this.WidthMode;\n }\n\n get EffectiveSearchFilter(): string {\n return this.fc?.searchFilter ?? '';\n }\n\n get EffectiveShowEmptyFields(): boolean {\n return this.fc?.showEmptyFields ?? false;\n }\n\n get EffectiveHasCustomSectionOrder(): boolean {\n if (this.fc?.hasCustomSectionOrder) {\n return this.fc.hasCustomSectionOrder();\n }\n return false;\n }\n\n // ---- Section counts ----\n\n get TotalSectionCount(): number {\n if (this.fc?.getTotalSectionCount) {\n return this.fc.getTotalSectionCount();\n }\n return this.Panels?.length ?? 0;\n }\n\n get VisibleSectionCount(): number {\n if (this.fc?.getVisibleSectionCount) {\n return this.fc.getVisibleSectionCount();\n }\n if (!this.Panels) return 0;\n return this.Panels.filter(p => p.IsVisible).length;\n }\n\n get ExpandedSectionCount(): number {\n if (this.fc?.getExpandedCount) {\n return this.fc.getExpandedCount();\n }\n if (!this.Panels) return 0;\n return this.Panels.filter(p => p.Expanded && p.IsVisible).length;\n }\n\n // ---- IS-A Related Panel ----\n\n /** Whether the current record has IS-A related items to display in the side panel */\n get HasIsaRelatedItems(): boolean {\n const record = this.EffectiveRecord;\n if (!record?.EntityInfo) return false;\n\n const entityInfo = record.EntityInfo;\n\n // Child entity with overlapping parent — may have siblings\n if (entityInfo.IsChildType && entityInfo.ParentEntityInfo?.AllowMultipleSubtypes) {\n const parent = record.ISAParent;\n if (parent?.ISAChildren && parent.ISAChildren.length > 1) return true;\n }\n\n // Parent entity with children\n if (entityInfo.IsParentType) {\n if (entityInfo.AllowMultipleSubtypes && record.ISAChildren && record.ISAChildren.length > 0) return true;\n if (!entityInfo.AllowMultipleSubtypes && record.ISAChild) return true;\n }\n\n return false;\n }\n\n // ---- Section Manager ----\n\n /** Builds section info array from projected panels for the section manager drawer */\n get SectionManagerItems(): SectionManagerItem[] {\n if (!this.Panels) return [];\n return this.Panels.map(p => ({\n SectionKey: p.SectionKey,\n SectionName: p.SectionName,\n Variant: p.Variant,\n Icon: p.Icon\n }));\n }\n\n /** Current section order from the form component */\n get SectionManagerOrder(): string[] {\n if (this.fc?.getSectionOrder) {\n return this.fc.getSectionOrder();\n }\n return [];\n }\n\n // ---- Lifecycle ----\n\n ngAfterContentInit(): void {\n // Load saved tags panel width\n const savedWidth = UserInfoEngine.Instance.GetSetting(MjRecordFormContainerComponent.TAGS_WIDTH_KEY);\n if (savedWidth) this.TagsPanelWidth = parseInt(savedWidth, 10) || 0;\n\n // Subscribe to panel Navigate events and relay them\n this.SubscribeToPanelNavigateEvents();\n\n // Watch for panel changes to update counts and re-subscribe\n this.Panels.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.SubscribeToPanelNavigateEvents();\n this.cdr.markForCheck();\n });\n\n // Watch for changes to record dirty state\n this.watchRecordChanges();\n\n // Badge counts are loaded when the form emits RecordReady (see SubscribeToPanelNavigateEvents)\n }\n\n ngOnDestroy(): void {\n this.panelNavReset$.next();\n this.panelNavReset$.complete();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Subscribes to Navigate events from all child collapsible panels\n * and relays them through this container's Navigate output.\n */\n private SubscribeToPanelNavigateEvents(): void {\n this.panelNavReset$.next(); // tear down previous subscriptions\n // Subscribe to RecordReady on the form component — fires once after record is fully initialized\n if (this.fc) {\n this.fc.RecordReady.pipe(takeUntil(this.panelNavReset$)).subscribe(() => {\n this.LoadBadgeCounts();\n });\n }\n\n this.Panels.forEach(panel => {\n panel.Navigate.pipe(takeUntil(this.panelNavReset$)).subscribe((event: FormNavigationEvent) => {\n this.Navigate.emit(event);\n });\n });\n }\n\n /**\n * Monitor record dirty state changes and trigger change detection.\n * This ensures the edit banner updates when fields are modified.\n */\n private watchRecordChanges(): void {\n // Poll for dirty state changes (BaseEntity doesn't expose observables)\n const checkInterval = setInterval(() => {\n if (this.EffectiveRecord?.Dirty !== undefined) {\n this.cdr.markForCheck();\n }\n }, 200);\n\n // Cleanup on destroy\n this.destroy$.subscribe(() => clearInterval(checkInterval));\n }\n\n // ---- Badge Count Loading ----\n\n /**\n * Loads tag count and record change version count for toolbar badges.\n * Both queries run in parallel for performance.\n */\n private badgeCountsLoaded = false;\n\n private LoadBadgeCounts(): void {\n if (this.badgeCountsLoaded) return;\n\n const record = this.EffectiveRecord;\n if (!record?.EntityInfo) return;\n\n this.badgeCountsLoaded = true;\n\n // Fire both queries in parallel — no await needed, they update state async\n this.LoadTagCount(record);\n this.LoadVersionCount(record);\n }\n\n /**\n * Queries the count of tagged items for the current entity + record\n * and updates the TagCount badge on the toolbar.\n */\n private async LoadTagCount(record: BaseEntity): Promise<void> {\n try {\n const rv = new RunView();\n // Don't narrow Fields — the server caches RunView results by entity+filter (ignoring Fields),\n // so a narrow query here would poison the cache for the subsequent full-field load in the Tags panel.\n const result = await rv.RunView({\n EntityName: 'MJ: Tagged Items',\n ExtraFilter: `EntityID='${record.EntityInfo.ID}' AND RecordID='${record.PrimaryKey.Values()}'`,\n ResultType: 'simple'\n });\n if (result.Success) {\n this.TagCount = result.Results.length;\n this.cdr.detectChanges();\n }\n } catch {\n // Non-critical — badge just stays at 0\n }\n }\n\n /**\n * Queries the count of record change entries for the current entity + record\n * and updates the VersionCount badge on the toolbar.\n */\n private async LoadVersionCount(record: BaseEntity): Promise<void> {\n if (!record.EntityInfo.TrackRecordChanges) return;\n try {\n const rv = new RunView();\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Record Changes',\n Fields: ['ID'],\n ExtraFilter: `EntityID='${record.EntityInfo.ID}' AND RecordID='${record.PrimaryKey.ToConcatenatedString()}'`,\n ResultType: 'simple'\n });\n if (result.Success) {\n this.VersionCount = result.Results.length;\n this.cdr.detectChanges();\n }\n } catch {\n // Non-critical — badge just stays at 0\n }\n }\n\n // ---- Toolbar Event Handlers ----\n\n /**\n * Navigation events are always re-emitted for the host app to handle.\n */\n OnNavigate(event: FormNavigationEvent): void {\n this.Navigate.emit(event);\n }\n\n /**\n * Edit mode change: delegate to FormComponent if available, otherwise re-emit.\n */\n OnEditModeChange(editMode: boolean): void {\n if (this.fc) {\n if (editMode) {\n this.fc.StartEditMode();\n } else {\n this.fc.EndEditMode();\n }\n this.cdr.markForCheck();\n } else {\n this.EditModeChange.emit(editMode);\n }\n }\n\n /**\n * Save: delegate to FormComponent if available, otherwise re-emit.\n */\n async OnSaveRequested(): Promise<void> {\n if (this.fc?.SaveRecord) {\n // Mark as saving to prevent double-click\n this.IsSaving = true;\n this.cdr.markForCheck();\n\n try {\n await this.fc.SaveRecord(true);\n\n // After successful save, refresh version count badge and record changes drawer\n this.RefreshAfterSave();\n } finally {\n // Use microtask timing to avoid ExpressionChangedAfterItHasBeenCheckedError\n await Promise.resolve();\n this.ngZone.run(() => {\n this.IsSaving = false;\n this.cdr.markForCheck();\n });\n }\n } else {\n this.SaveRequested.emit();\n }\n }\n\n /**\n * Refreshes the version count badge and record changes drawer after a save.\n * The save operation creates a new RecordChange entry server-side, so we need\n * to update the UI to reflect the new version.\n */\n private RefreshAfterSave(): void {\n const record = this.EffectiveRecord;\n if (!record?.EntityInfo?.TrackRecordChanges) return;\n\n // Refresh version count badge\n this.LoadVersionCount(record);\n\n // If the record changes drawer is open, refresh it too\n if (this.ShowRecordChanges && this.recordChangesDrawer) {\n this.recordChangesDrawer.Refresh();\n }\n }\n\n /**\n * Cancel: delegate to FormComponent if available, otherwise re-emit.\n */\n OnCancelRequested(): void {\n if (this.fc?.CancelEdit) {\n this.fc.CancelEdit();\n this.cdr.markForCheck();\n } else {\n this.CancelRequested.emit();\n }\n }\n\n /**\n * Delete, Favorite, History, Lists, ShowChanges: always re-emit for host app.\n */\n OnDeleteRequested(): void {\n this.DeleteRequested.emit();\n }\n\n OnFavoriteToggled(): void {\n this.FavoriteToggled.emit();\n }\n\n OnHistoryRequested(): void {\n // Check if event should be cancelled\n const beforeEvent = new BeforeHistoryViewEventArgs();\n this.BeforeHistoryView.emit(beforeEvent);\n if (beforeEvent.Cancel) return;\n\n // If not cancelled, show built-in record changes drawer\n this.ShowRecordChanges = true;\n this.cdr.markForCheck();\n\n // Also emit for backward compatibility\n this.HistoryRequested.emit();\n }\n\n OnListManagementRequested(): void {\n // Check if event should be cancelled\n const beforeEvent = new BeforeListManagementEventArgs();\n this.BeforeListManagement.emit(beforeEvent);\n if (beforeEvent.Cancel) return;\n\n // If not cancelled, show built-in list management dialog\n this.ShowListManagement = true;\n this.cdr.markForCheck();\n\n // Also emit for backward compatibility\n this.ListManagementRequested.emit();\n }\n\n OnTagsPanelToggled(): void {\n this.ShowTagsPanel = !this.ShowTagsPanel;\n this.cdr.detectChanges();\n }\n\n OnTagsPanelClosed(): void {\n this.ShowTagsPanel = false;\n this.cdr.detectChanges();\n\n // Refresh tag count — tags may have been added/removed while panel was open\n const record = this.EffectiveRecord;\n if (record?.EntityInfo) {\n this.LoadTagCount(record);\n }\n }\n\n /**\n * Handles live tag count updates from the tags panel component.\n */\n OnTagCountChanged(count: number): void {\n this.TagCount = count;\n this.cdr.markForCheck();\n }\n\n OnTagsPanelWidthChanged(width: number): void {\n this.TagsPanelWidth = width;\n UserInfoEngine.Instance.SetSettingDebounced(MjRecordFormContainerComponent.TAGS_WIDTH_KEY, String(width));\n }\n\n OnTagsRecordNavigate(event: { EntityName: string; RecordID: string }): void {\n const md = new Metadata();\n const entityInfo = md.Entities.find(e => e.Name === event.EntityName);\n const pkey = new CompositeKey();\n if (entityInfo) {\n pkey.LoadFromURLSegment(entityInfo, event.RecordID);\n } else {\n pkey.KeyValuePairs = [{ FieldName: 'ID', Value: event.RecordID }];\n }\n this.Navigate.emit({ Kind: 'record', EntityName: event.EntityName, PrimaryKey: pkey });\n }\n\n OnRecordChangesClosed(): void {\n this.ShowRecordChanges = false;\n this.cdr.markForCheck();\n\n // Refresh version count — new changes may have occurred\n const record = this.EffectiveRecord;\n if (record?.EntityInfo) {\n this.LoadVersionCount(record);\n }\n }\n\n /**\n * Handles a restore request from the record-changes panel.\n *\n * The event payload now carries the FULL snapshot the user opted to apply\n * (the panel computes current-vs-snapshot diffs using the source change's\n * FullRecordJSON, and the user can deselect individual fields). Setting\n * the restore context before Save() causes the data provider to write the\n * resulting RecordChange row with `Source='Restore'`, `RestoredFromID`,\n * and `RestoreReason` populated — building the auditable lineage chain.\n */\n async OnRestoreRequested(event: RestoreVersionEvent): Promise<void> {\n const record = this.EffectiveRecord;\n if (!record) return;\n\n try {\n // Apply each selected snapshot field\n for (const fv of event.FieldValues) {\n record.Set(fv.FieldName, fv.Value);\n }\n\n // Mark the next save as a restore so the provider populates the\n // lineage columns. ClearRestoreContext is called in finally{} below\n // so it doesn't leak into subsequent saves on this entity instance.\n record.SetRestoreContext(event.SourceChangeID, event.Reason);\n\n try {\n const saved = await record.Save();\n if (saved) {\n const fieldCount = event.FieldValues.length;\n const reasonSuffix = event.Reason ? ` — \"${event.Reason}\"` : '';\n this.notificationService.CreateSimpleNotification(\n `Restored ${fieldCount} field${fieldCount === 1 ? '' : 's'} from version dated ${new Date(event.ChangedAt).toLocaleDateString()}${reasonSuffix}`,\n 'info', 3500,\n );\n\n // Refresh version count — the save just produced a new restore-tagged change.\n this.LoadVersionCount(record);\n this.cdr.markForCheck();\n } else {\n const errMsg = record.LatestResult?.CompleteMessage ?? 'unknown error';\n this.notificationService.CreateSimpleNotification(\n `Failed to save restored values: ${errMsg}`,\n 'error', 4500,\n );\n }\n } finally {\n record.ClearRestoreContext();\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Unknown error';\n this.notificationService.CreateSimpleNotification(\n `Restore failed: ${message}`,\n 'error', 4000,\n );\n }\n }\n\n OnListManagementClosed(): void {\n this.ShowListManagement = false;\n this.cdr.markForCheck();\n }\n\n OnShowChangesRequested(): void {\n if (this.fc?.ShowChanges) {\n this.fc.ShowChanges();\n } else {\n this.ShowChangesRequested.emit();\n }\n }\n\n // ---- Section Control Handlers ----\n\n OnFilterChange(filter: string): void {\n if (this.fc?.onFilterChange) {\n this.fc.onFilterChange(filter);\n this.cdr.markForCheck();\n }\n }\n\n OnExpandAll(): void {\n if (this.fc?.expandAllSections) {\n this.fc.expandAllSections();\n this.cdr.markForCheck();\n }\n }\n\n OnCollapseAll(): void {\n if (this.fc?.collapseAllSections) {\n this.fc.collapseAllSections();\n this.cdr.markForCheck();\n }\n }\n\n OnShowEmptyFieldsChange(show: boolean): void {\n if (this.fc) {\n this.fc.showEmptyFields = show;\n this.cdr.markForCheck();\n }\n }\n\n OnWidthModeChange(mode: FormWidthMode): void {\n if (this.fc?.setFormWidthMode) {\n this.fc.setFormWidthMode(mode);\n this.cdr.markForCheck();\n } else {\n this.WidthMode = mode;\n this.cdr.markForCheck();\n }\n }\n\n OnResetSectionOrder(): void {\n if (this.fc?.resetSectionOrder) {\n this.fc.resetSectionOrder();\n this.cdr.markForCheck();\n }\n }\n\n // ---- Section Manager Handlers ----\n\n OnManageSections(): void {\n this.ShowSectionManager = true;\n this.cdr.markForCheck();\n }\n\n OnSectionOrderChange(newOrder: string[]): void {\n if (this.fc?.setSectionOrder) {\n this.fc.setSectionOrder(newOrder);\n this.cdr.markForCheck();\n }\n }\n\n OnSectionManagerReset(): void {\n this.OnResetSectionOrder();\n }\n\n OnSectionManagerClosed(): void {\n this.ShowSectionManager = false;\n this.cdr.markForCheck();\n }\n}\n","<!-- ============================================\n BEFORE-TOOLBAR SLOT\n ============================================ -->\n<ng-content select=\"[before-toolbar]\"></ng-content>\n\n<!-- ============================================\n TOOLBAR (bridges FormComponent state → toolbar inputs)\n ============================================ -->\n<mj-form-toolbar\n [Record]=\"EffectiveRecord\"\n [EditMode]=\"EffectiveEditMode\"\n [UserCanEdit]=\"EffectiveUserCanEdit\"\n [UserCanDelete]=\"EffectiveUserCanDelete\"\n [IsFavorite]=\"EffectiveIsFavorite\"\n [FavoriteInitDone]=\"EffectiveFavoriteInitDone\"\n [IsDirty]=\"EffectiveIsDirty\"\n [DirtyFieldNames]=\"EffectiveDirtyFieldNames\"\n [ListCount]=\"ListCount\"\n [TagCount]=\"TagCount\"\n [VersionCount]=\"VersionCount\"\n [EntityInfo]=\"EffectiveEntityInfo\"\n [Config]=\"ToolbarConfig\"\n [IsSaving]=\"EffectiveIsSaving\"\n [VisibleSectionCount]=\"VisibleSectionCount\"\n [TotalSectionCount]=\"TotalSectionCount\"\n [ExpandedSectionCount]=\"ExpandedSectionCount\"\n [SearchFilter]=\"EffectiveSearchFilter\"\n [ShowEmptyFields]=\"EffectiveShowEmptyFields\"\n [WidthMode]=\"EffectiveWidthMode\"\n [HasCustomSectionOrder]=\"EffectiveHasCustomSectionOrder\"\n (Navigate)=\"OnNavigate($event)\"\n (EditModeChange)=\"OnEditModeChange($event)\"\n (BeforeSave)=\"BeforeSave.emit($event)\"\n (SaveRequested)=\"OnSaveRequested()\"\n (BeforeCancel)=\"BeforeCancel.emit($event)\"\n (CancelRequested)=\"OnCancelRequested()\"\n (BeforeDelete)=\"BeforeDelete.emit($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (BeforeHistoryView)=\"BeforeHistoryView.emit($event)\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (BeforeListManagement)=\"BeforeListManagement.emit($event)\"\n (ListManagementRequested)=\"OnListManagementRequested()\"\n (ShowChangesRequested)=\"OnShowChangesRequested()\"\n (CustomButtonClick)=\"CustomButtonClick.emit($event)\"\n (FilterChange)=\"OnFilterChange($event)\"\n (ExpandAllRequested)=\"OnExpandAll()\"\n (CollapseAllRequested)=\"OnCollapseAll()\"\n (ShowEmptyFieldsChange)=\"OnShowEmptyFieldsChange($event)\"\n (WidthModeChange)=\"OnWidthModeChange($event)\"\n (ResetSectionOrderRequested)=\"OnResetSectionOrder()\"\n (ManageSectionsRequested)=\"OnManageSections()\"\n (TagsPanelToggled)=\"OnTagsPanelToggled()\">\n</mj-form-toolbar>\n\n<!-- ============================================\n SCROLL AREA (full-width so mouse wheel works anywhere)\n ============================================ -->\n<div class=\"mj-forms-scroll-area\">\n <div class=\"mj-forms-panels-container\"\n [class.mj-forms-panels--full-width]=\"EffectiveWidthMode === 'full-width'\"\n [class.mj-forms-panels--edit-mode]=\"EffectiveEditMode\"\n [class.mj-forms-panels--has-isa-panel]=\"HasIsaRelatedItems\">\n <!-- Flex row: form panels on left, ISA side panel on right -->\n <div class=\"mj-forms-layout-row\">\n <!-- All panels in a single flex container — CSS order drives sequencing -->\n <div class=\"mj-forms-all-panels\">\n <ng-content></ng-content>\n\n <!-- Empty state when no sections match search -->\n @if (EffectiveSearchFilter && VisibleSectionCount === 0) {\n <div class=\"mj-forms-empty-search-state\">\n <div class=\"mj-forms-empty-search-icon\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n </div>\n <h3 class=\"mj-forms-empty-search-title\">No sections found</h3>\n <p class=\"mj-forms-empty-search-message\">\n No sections match \"<strong>{{ EffectiveSearchFilter }}</strong>\".\n <br>Try a different search term or <a href=\"#\" (click)=\"OnFilterChange(''); $event.preventDefault()\" class=\"mj-forms-empty-search-link\">clear the search</a>.\n </p>\n </div>\n }\n </div>\n\n <!-- IS-A Related Records Side Panel -->\n <mj-isa-related-panel\n [Record]=\"EffectiveRecord\"\n [EditMode]=\"EffectiveEditMode\"\n [Collapsed]=\"EffectiveWidthMode === 'full-width'\"\n (Navigate)=\"OnNavigate($event)\">\n </mj-isa-related-panel>\n </div>\n </div>\n</div>\n\n<!-- ============================================\n RECORD CHANGES DRAWER (shown when history button clicked)\n ============================================ -->\n@if (ShowRecordChanges && EffectiveRecord) {\n <mj-record-changes\n [record]=\"EffectiveRecord\"\n [AllowRestore]=\"EffectiveUserCanEdit\"\n (RestoreRequested)=\"OnRestoreRequested($event)\"\n (dialogClosed)=\"OnRecordChangesClosed()\">\n </mj-record-changes>\n}\n\n<!-- ============================================\n TAGS PANEL (shown when tags button clicked)\n ============================================ -->\n@if (ShowTagsPanel && EffectiveRecord) {\n <mj-record-tags\n [Record]=\"EffectiveRecord\"\n [WidthPx]=\"TagsPanelWidth\"\n (PanelClosed)=\"OnTagsPanelClosed()\"\n (TagCountChanged)=\"OnTagCountChanged($event)\"\n (RecordNavigate)=\"OnTagsRecordNavigate($event)\"\n (WidthChanged)=\"OnTagsPanelWidthChanged($event)\">\n </mj-record-tags>\n}\n\n<!-- ============================================\n LIST MANAGEMENT DIALOG (shown when lists button clicked)\n ============================================ -->\n@if (ShowListManagement && EffectiveRecord) {\n <mj-list-management-dialog\n [visible]=\"ShowListManagement\"\n [config]=\"{\n mode: 'manage',\n entityId: EffectiveRecord.EntityInfo.ID,\n entityName: EffectiveRecord.EntityInfo.Name,\n recordIds: [EffectiveRecord.PrimaryKey.Values()[0]],\n allowCreate: true\n }\"\n (complete)=\"OnListManagementClosed()\"\n (cancel)=\"OnListManagementClosed()\">\n </mj-list-management-dialog>\n}\n\n<!-- ============================================\n SECTION MANAGER DRAWER (shown when manage-sections button clicked)\n ============================================ -->\n<mj-section-manager\n [Sections]=\"SectionManagerItems\"\n [SectionOrder]=\"SectionManagerOrder\"\n [Visible]=\"ShowSectionManager\"\n (SectionOrderChange)=\"OnSectionOrderChange($event)\"\n (ResetRequested)=\"OnSectionManagerReset()\"\n (Closed)=\"OnSectionManagerClosed()\">\n</mj-section-manager>\n"]}
|
|
1
|
+
{"version":3,"file":"record-form-container.component.js","sourceRoot":"","sources":["../../../src/lib/container/record-form-container.component.ts","../../../src/lib/container/record-form-container.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component, Input, Output, EventEmitter,\n ChangeDetectionStrategy, ChangeDetectorRef, inject, NgZone,\n ContentChildren, QueryList, AfterContentInit, OnDestroy,\n ViewChild, ViewEncapsulation\n} from '@angular/core';\nimport { BaseEntity, CompositeKey, EntityInfo, Metadata, RunView } from '@memberjunction/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfoEngine } from '@memberjunction/core-entities';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FormToolbarConfig, DEFAULT_TOOLBAR_CONFIG } from '../types/toolbar-config';\nimport { FormNavigationEvent } from '../types/navigation-events';\nimport { FormWidthMode } from '../types/form-types';\nimport { MjCollapsiblePanelComponent } from '../panel/collapsible-panel.component';\nimport { SectionManagerItem } from '../section-manager/section-manager.component';\nimport {\n BeforeSaveEventArgs,\n BeforeDeleteEventArgs,\n BeforeCancelEventArgs,\n BeforeHistoryViewEventArgs,\n BeforeListManagementEventArgs,\n CustomToolbarButtonClickEventArgs\n} from '../types/form-events';\nimport { BaseFormComponent } from '../base-form-component';\nimport { RestoreVersionEvent, RecordChangesComponent } from '@memberjunction/ng-record-changes';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\n/**\n * Top-level container that composes the toolbar, content slots, and sticky behavior.\n *\n * **Two usage modes:**\n *\n * 1. **With FormComponent** (generated forms): Pass `[FormComponent]=\"this\"` and the\n * container derives all state from the BaseFormComponent instance. Save/Cancel/Edit\n * are handled internally by calling FormComponent methods.\n *\n * 2. **Standalone**: Pass individual @Input properties and handle all @Output events.\n *\n * @example Generated form usage:\n * ```html\n * <mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n * (Navigate)=\"OnFormNavigate($event)\"\n * (DeleteRequested)=\"OnDeleteRequested()\"\n * (FavoriteToggled)=\"OnFavoriteToggled()\"\n * (HistoryRequested)=\"OnHistoryRequested()\"\n * (ListManagementRequested)=\"OnListManagementRequested()\">\n *\n * <mj-collapsible-panel SectionKey=\"details\" ...>\n * <mj-form-field ...></mj-form-field>\n * </mj-collapsible-panel>\n *\n * <mj-collapsible-panel SectionKey=\"relatedOrders\" Variant=\"related-entity\" ...>\n * <!-- related entity grid -->\n * </mj-collapsible-panel>\n * </mj-record-form-container>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-record-form-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './record-form-container.component.html',\n styleUrls: ['./record-form-container.component.css']\n})\nexport class MjRecordFormContainerComponent extends BaseAngularComponent implements AfterContentInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private notificationService = inject(MJNotificationService);\n private destroy$ = new Subject<void>();\n private panelNavReset$ = new Subject<void>();\n\n // ---- Internal State ----\n\n /** Reference to the record changes drawer (when visible) for triggering refresh after save */\n @ViewChild(RecordChangesComponent) private recordChangesDrawer?: RecordChangesComponent;\n\n /** Controls visibility of record changes drawer */\n ShowRecordChanges = false;\n\n /** Controls visibility of tags panel */\n ShowTagsPanel = false;\n\n /** Persisted tags panel width */\n TagsPanelWidth = 0;\n private static readonly TAGS_WIDTH_KEY = 'MJ_TagsPanel_Width';\n\n /** Number of tags on this record */\n TagCount = 0;\n\n /** Number of tracked record change versions for this record */\n VersionCount = 0;\n\n /** Controls visibility of list management dialog */\n ShowListManagement = false;\n\n /** Controls visibility of section manager drawer */\n ShowSectionManager = false;\n\n // ---- Primary Inputs ----\n\n /** The entity record being displayed/edited */\n @Input() Record!: BaseEntity;\n\n /**\n * Reference to the parent form component (e.g. BaseFormComponent subclass).\n * When provided, the container derives toolbar state from this reference and\n * handles Save/Cancel/Edit internally by calling its methods.\n */\n @Input() FormComponent: BaseFormComponent | null = null;\n\n // ---- Fallback Inputs (used when FormComponent is NOT provided) ----\n\n @Input() EntityInfo: EntityInfo | null = null;\n @Input() EditMode = false;\n @Input() UserCanEdit = false;\n @Input() UserCanDelete = false;\n @Input() IsFavorite = false;\n @Input() FavoriteInitDone = false;\n @Input() IsDirty = false;\n @Input() DirtyFieldNames: string[] = [];\n @Input() ListCount = 0;\n @Input() IsSaving = false;\n @Input() ToolbarConfig: FormToolbarConfig = DEFAULT_TOOLBAR_CONFIG;\n @Input() WidthMode: FormWidthMode = 'centered';\n\n // ---- Outputs ----\n\n /** Emitted for all navigation actions (the host app maps these to its routing) */\n @Output() Navigate = new EventEmitter<FormNavigationEvent>();\n\n /** Emitted when edit mode changes (only in standalone mode; FormComponent mode handled internally) */\n @Output() EditModeChange = new EventEmitter<boolean>();\n\n /** Emitted BEFORE save - can be cancelled by setting event.Cancel = true */\n @Output() BeforeSave = new EventEmitter<BeforeSaveEventArgs>();\n\n /** Emitted when save is requested (only in standalone mode) */\n @Output() SaveRequested = new EventEmitter<void>();\n\n /** Emitted BEFORE cancel - can be cancelled by setting event.Cancel = true */\n @Output() BeforeCancel = new EventEmitter<BeforeCancelEventArgs>();\n\n /** Emitted when cancel is requested (only in standalone mode) */\n @Output() CancelRequested = new EventEmitter<void>();\n\n /** Emitted BEFORE delete - can be cancelled by setting event.Cancel = true */\n @Output() BeforeDelete = new EventEmitter<BeforeDeleteEventArgs>();\n\n /** Emitted when delete is confirmed (host app handles actual deletion) */\n @Output() DeleteRequested = new EventEmitter<void>();\n\n /** Emitted when favorite toggle is requested */\n @Output() FavoriteToggled = new EventEmitter<void>();\n\n /** Emitted BEFORE history view - can be cancelled by setting event.Cancel = true */\n @Output() BeforeHistoryView = new EventEmitter<BeforeHistoryViewEventArgs>();\n\n /** Emitted when history view is requested */\n @Output() HistoryRequested = new EventEmitter<void>();\n\n /** Emitted BEFORE list management - can be cancelled by setting event.Cancel = true */\n @Output() BeforeListManagement = new EventEmitter<BeforeListManagementEventArgs>();\n\n /** Emitted when list management is requested */\n @Output() ListManagementRequested = new EventEmitter<void>();\n\n /** Emitted when show-changes is requested */\n @Output() ShowChangesRequested = new EventEmitter<void>();\n\n /** Emitted when a custom toolbar button is clicked */\n @Output() CustomButtonClick = new EventEmitter<CustomToolbarButtonClickEventArgs>();\n\n // ---- Content Children ----\n\n @ContentChildren(MjCollapsiblePanelComponent, { descendants: true })\n Panels!: QueryList<MjCollapsiblePanelComponent>;\n\n // ---- FormComponent accessor ----\n\n /** Typed accessor for the form component reference */\n private get fc(): BaseFormComponent | null {\n return this.FormComponent;\n }\n\n // ---- Effective state (bridges FormComponent → toolbar inputs) ----\n\n get EffectiveRecord(): BaseEntity {\n return this.fc?.record ?? this.Record;\n }\n\n get EffectiveEditMode(): boolean {\n return this.fc?.EditMode ?? this.EditMode;\n }\n\n get EffectiveUserCanEdit(): boolean {\n return this.fc?.UserCanEdit ?? this.UserCanEdit;\n }\n\n get EffectiveUserCanDelete(): boolean {\n return this.fc?.UserCanDelete ?? this.UserCanDelete;\n }\n\n get EffectiveIsFavorite(): boolean {\n return this.fc?.IsFavorite ?? this.IsFavorite;\n }\n\n get EffectiveFavoriteInitDone(): boolean {\n return this.fc?.FavoriteInitDone ?? this.FavoriteInitDone;\n }\n\n get EffectiveEntityInfo(): EntityInfo | null {\n return (this.fc?.EntityInfo as EntityInfo) ?? this.EntityInfo;\n }\n\n get EffectiveIsDirty(): boolean {\n if (this.fc) {\n return this.fc.record?.Dirty ?? false;\n }\n return this.IsDirty;\n }\n\n get EffectiveDirtyFieldNames(): string[] {\n if (this.fc?.record?.Fields) {\n return this.fc.record.Fields.filter(f => f.Dirty).map(f => f.Name);\n }\n return this.DirtyFieldNames;\n }\n\n get EffectiveIsSaving(): boolean {\n return this.IsSaving;\n }\n\n get EffectiveWidthMode(): FormWidthMode {\n if (this.fc?.getFormWidthMode) {\n return this.fc.getFormWidthMode();\n }\n return this.WidthMode;\n }\n\n get EffectiveSearchFilter(): string {\n return this.fc?.searchFilter ?? '';\n }\n\n get EffectiveShowEmptyFields(): boolean {\n return this.fc?.showEmptyFields ?? false;\n }\n\n get EffectiveHasCustomSectionOrder(): boolean {\n if (this.fc?.hasCustomSectionOrder) {\n return this.fc.hasCustomSectionOrder();\n }\n return false;\n }\n\n // ---- Section counts ----\n\n get TotalSectionCount(): number {\n if (this.fc?.getTotalSectionCount) {\n return this.fc.getTotalSectionCount();\n }\n return this.Panels?.length ?? 0;\n }\n\n get VisibleSectionCount(): number {\n if (this.fc?.getVisibleSectionCount) {\n return this.fc.getVisibleSectionCount();\n }\n if (!this.Panels) return 0;\n return this.Panels.filter(p => p.IsVisible).length;\n }\n\n get ExpandedSectionCount(): number {\n if (this.fc?.getExpandedCount) {\n return this.fc.getExpandedCount();\n }\n if (!this.Panels) return 0;\n return this.Panels.filter(p => p.Expanded && p.IsVisible).length;\n }\n\n // ---- IS-A Related Panel ----\n\n /** Whether the current record has IS-A related items to display in the side panel */\n get HasIsaRelatedItems(): boolean {\n const record = this.EffectiveRecord;\n if (!record?.EntityInfo) return false;\n\n const entityInfo = record.EntityInfo;\n\n // Child entity with overlapping parent — may have siblings\n if (entityInfo.IsChildType && entityInfo.ParentEntityInfo?.AllowMultipleSubtypes) {\n const parent = record.ISAParent;\n if (parent?.ISAChildren && parent.ISAChildren.length > 1) return true;\n }\n\n // Parent entity with children\n if (entityInfo.IsParentType) {\n if (entityInfo.AllowMultipleSubtypes && record.ISAChildren && record.ISAChildren.length > 0) return true;\n if (!entityInfo.AllowMultipleSubtypes && record.ISAChild) return true;\n }\n\n return false;\n }\n\n // ---- Section Manager ----\n\n /** Builds section info array from projected panels for the section manager drawer */\n get SectionManagerItems(): SectionManagerItem[] {\n if (!this.Panels) return [];\n return this.Panels.map(p => ({\n SectionKey: p.SectionKey,\n SectionName: p.SectionName,\n Variant: p.Variant,\n Icon: p.Icon\n }));\n }\n\n /** Current section order from the form component */\n get SectionManagerOrder(): string[] {\n if (this.fc?.getSectionOrder) {\n return this.fc.getSectionOrder();\n }\n return [];\n }\n\n // ---- Lifecycle ----\n\n ngAfterContentInit(): void {\n // Load saved tags panel width\n const savedWidth = UserInfoEngine.Instance.GetSetting(MjRecordFormContainerComponent.TAGS_WIDTH_KEY);\n if (savedWidth) this.TagsPanelWidth = parseInt(savedWidth, 10) || 0;\n\n // Subscribe to panel Navigate events and relay them\n this.SubscribeToPanelNavigateEvents();\n\n // Watch for panel changes to update counts and re-subscribe\n this.Panels.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.SubscribeToPanelNavigateEvents();\n this.cdr.markForCheck();\n });\n\n // Watch for changes to record dirty state\n this.watchRecordChanges();\n\n // Badge counts are loaded when the form emits RecordReady (see SubscribeToPanelNavigateEvents)\n }\n\n ngOnDestroy(): void {\n this.panelNavReset$.next();\n this.panelNavReset$.complete();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Subscribes to Navigate events from all child collapsible panels\n * and relays them through this container's Navigate output.\n */\n private SubscribeToPanelNavigateEvents(): void {\n this.panelNavReset$.next(); // tear down previous subscriptions\n // Subscribe to RecordReady on the form component — fires once after record is fully initialized\n if (this.fc) {\n this.fc.RecordReady.pipe(takeUntil(this.panelNavReset$)).subscribe(() => {\n this.LoadBadgeCounts();\n });\n }\n\n this.Panels.forEach(panel => {\n panel.Navigate.pipe(takeUntil(this.panelNavReset$)).subscribe((event: FormNavigationEvent) => {\n this.Navigate.emit(event);\n });\n });\n }\n\n /**\n * Monitor record dirty state changes and trigger change detection.\n * This ensures the edit banner updates when fields are modified.\n */\n private watchRecordChanges(): void {\n // Poll for dirty state changes (BaseEntity doesn't expose observables)\n const checkInterval = setInterval(() => {\n if (this.EffectiveRecord?.Dirty !== undefined) {\n this.cdr.markForCheck();\n }\n }, 200);\n\n // Cleanup on destroy\n this.destroy$.subscribe(() => clearInterval(checkInterval));\n }\n\n // ---- Badge Count Loading ----\n\n /**\n * Loads tag count and record change version count for toolbar badges.\n * Both queries run in parallel for performance.\n */\n private badgeCountsLoaded = false;\n\n private LoadBadgeCounts(): void {\n if (this.badgeCountsLoaded) return;\n\n const record = this.EffectiveRecord;\n if (!record?.EntityInfo) return;\n\n this.badgeCountsLoaded = true;\n\n // Fire both queries in parallel — no await needed, they update state async\n this.LoadTagCount(record);\n this.LoadVersionCount(record);\n }\n\n /**\n * Queries the count of tagged items for the current entity + record\n * and updates the TagCount badge on the toolbar.\n */\n private async LoadTagCount(record: BaseEntity): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n // Don't narrow Fields — the server caches RunView results by entity+filter (ignoring Fields),\n // so a narrow query here would poison the cache for the subsequent full-field load in the Tags panel.\n const result = await rv.RunView({\n EntityName: 'MJ: Tagged Items',\n ExtraFilter: `EntityID='${record.EntityInfo.ID}' AND RecordID='${record.PrimaryKey.Values()}'`,\n ResultType: 'simple'\n });\n if (result.Success) {\n this.TagCount = result.Results.length;\n this.cdr.detectChanges();\n }\n } catch {\n // Non-critical — badge just stays at 0\n }\n }\n\n /**\n * Queries the count of record change entries for the current entity + record\n * and updates the VersionCount badge on the toolbar.\n */\n private async LoadVersionCount(record: BaseEntity): Promise<void> {\n if (!record.EntityInfo.TrackRecordChanges) return;\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'MJ: Record Changes',\n Fields: ['ID'],\n ExtraFilter: `EntityID='${record.EntityInfo.ID}' AND RecordID='${record.PrimaryKey.ToConcatenatedString()}'`,\n ResultType: 'simple'\n });\n if (result.Success) {\n this.VersionCount = result.Results.length;\n this.cdr.detectChanges();\n }\n } catch {\n // Non-critical — badge just stays at 0\n }\n }\n\n // ---- Toolbar Event Handlers ----\n\n /**\n * Navigation events are always re-emitted for the host app to handle.\n */\n OnNavigate(event: FormNavigationEvent): void {\n this.Navigate.emit(event);\n }\n\n /**\n * Edit mode change: delegate to FormComponent if available, otherwise re-emit.\n */\n OnEditModeChange(editMode: boolean): void {\n if (this.fc) {\n if (editMode) {\n this.fc.StartEditMode();\n } else {\n this.fc.EndEditMode();\n }\n this.cdr.markForCheck();\n } else {\n this.EditModeChange.emit(editMode);\n }\n }\n\n /**\n * Save: delegate to FormComponent if available, otherwise re-emit.\n */\n async OnSaveRequested(): Promise<void> {\n if (this.fc?.SaveRecord) {\n // Mark as saving to prevent double-click\n this.IsSaving = true;\n this.cdr.markForCheck();\n\n try {\n await this.fc.SaveRecord(true);\n\n // After successful save, refresh version count badge and record changes drawer\n this.RefreshAfterSave();\n } finally {\n // Use microtask timing to avoid ExpressionChangedAfterItHasBeenCheckedError\n await Promise.resolve();\n this.ngZone.run(() => {\n this.IsSaving = false;\n this.cdr.markForCheck();\n });\n }\n } else {\n this.SaveRequested.emit();\n }\n }\n\n /**\n * Refreshes the version count badge and record changes drawer after a save.\n * The save operation creates a new RecordChange entry server-side, so we need\n * to update the UI to reflect the new version.\n */\n private RefreshAfterSave(): void {\n const record = this.EffectiveRecord;\n if (!record?.EntityInfo?.TrackRecordChanges) return;\n\n // Refresh version count badge\n this.LoadVersionCount(record);\n\n // If the record changes drawer is open, refresh it too\n if (this.ShowRecordChanges && this.recordChangesDrawer) {\n this.recordChangesDrawer.Refresh();\n }\n }\n\n /**\n * Cancel: delegate to FormComponent if available, otherwise re-emit.\n */\n OnCancelRequested(): void {\n if (this.fc?.CancelEdit) {\n this.fc.CancelEdit();\n this.cdr.markForCheck();\n } else {\n this.CancelRequested.emit();\n }\n }\n\n /**\n * Delete, Favorite, History, Lists, ShowChanges: always re-emit for host app.\n */\n OnDeleteRequested(): void {\n this.DeleteRequested.emit();\n }\n\n OnFavoriteToggled(): void {\n this.FavoriteToggled.emit();\n }\n\n OnHistoryRequested(): void {\n // Check if event should be cancelled\n const beforeEvent = new BeforeHistoryViewEventArgs();\n this.BeforeHistoryView.emit(beforeEvent);\n if (beforeEvent.Cancel) return;\n\n // If not cancelled, show built-in record changes drawer\n this.ShowRecordChanges = true;\n this.cdr.markForCheck();\n\n // Also emit for backward compatibility\n this.HistoryRequested.emit();\n }\n\n OnListManagementRequested(): void {\n // Check if event should be cancelled\n const beforeEvent = new BeforeListManagementEventArgs();\n this.BeforeListManagement.emit(beforeEvent);\n if (beforeEvent.Cancel) return;\n\n // If not cancelled, show built-in list management dialog\n this.ShowListManagement = true;\n this.cdr.markForCheck();\n\n // Also emit for backward compatibility\n this.ListManagementRequested.emit();\n }\n\n OnTagsPanelToggled(): void {\n this.ShowTagsPanel = !this.ShowTagsPanel;\n this.cdr.detectChanges();\n }\n\n OnTagsPanelClosed(): void {\n this.ShowTagsPanel = false;\n this.cdr.detectChanges();\n\n // Refresh tag count — tags may have been added/removed while panel was open\n const record = this.EffectiveRecord;\n if (record?.EntityInfo) {\n this.LoadTagCount(record);\n }\n }\n\n /**\n * Handles live tag count updates from the tags panel component.\n */\n OnTagCountChanged(count: number): void {\n this.TagCount = count;\n this.cdr.markForCheck();\n }\n\n OnTagsPanelWidthChanged(width: number): void {\n this.TagsPanelWidth = width;\n UserInfoEngine.Instance.SetSettingDebounced(MjRecordFormContainerComponent.TAGS_WIDTH_KEY, String(width));\n }\n\n OnTagsRecordNavigate(event: { EntityName: string; RecordID: string }): void {\n const md = this.ProviderToUse;\n const entityInfo = md.Entities.find(e => e.Name === event.EntityName);\n const pkey = new CompositeKey();\n if (entityInfo) {\n pkey.LoadFromURLSegment(entityInfo, event.RecordID);\n } else {\n pkey.KeyValuePairs = [{ FieldName: 'ID', Value: event.RecordID }];\n }\n this.Navigate.emit({ Kind: 'record', EntityName: event.EntityName, PrimaryKey: pkey });\n }\n\n OnRecordChangesClosed(): void {\n this.ShowRecordChanges = false;\n this.cdr.markForCheck();\n\n // Refresh version count — new changes may have occurred\n const record = this.EffectiveRecord;\n if (record?.EntityInfo) {\n this.LoadVersionCount(record);\n }\n }\n\n /**\n * Handles a restore request from the record-changes panel.\n *\n * The event payload now carries the FULL snapshot the user opted to apply\n * (the panel computes current-vs-snapshot diffs using the source change's\n * FullRecordJSON, and the user can deselect individual fields). Setting\n * the restore context before Save() causes the data provider to write the\n * resulting RecordChange row with `Source='Restore'`, `RestoredFromID`,\n * and `RestoreReason` populated — building the auditable lineage chain.\n */\n async OnRestoreRequested(event: RestoreVersionEvent): Promise<void> {\n const record = this.EffectiveRecord;\n if (!record) return;\n\n try {\n // Apply each selected snapshot field\n for (const fv of event.FieldValues) {\n record.Set(fv.FieldName, fv.Value);\n }\n\n // Mark the next save as a restore so the provider populates the\n // lineage columns. ClearRestoreContext is called in finally{} below\n // so it doesn't leak into subsequent saves on this entity instance.\n record.SetRestoreContext(event.SourceChangeID, event.Reason);\n\n try {\n const saved = await record.Save();\n if (saved) {\n const fieldCount = event.FieldValues.length;\n const reasonSuffix = event.Reason ? ` — \"${event.Reason}\"` : '';\n this.notificationService.CreateSimpleNotification(\n `Restored ${fieldCount} field${fieldCount === 1 ? '' : 's'} from version dated ${new Date(event.ChangedAt).toLocaleDateString()}${reasonSuffix}`,\n 'info', 3500,\n );\n\n // Refresh version count — the save just produced a new restore-tagged change.\n this.LoadVersionCount(record);\n this.cdr.markForCheck();\n } else {\n const errMsg = record.LatestResult?.CompleteMessage ?? 'unknown error';\n this.notificationService.CreateSimpleNotification(\n `Failed to save restored values: ${errMsg}`,\n 'error', 4500,\n );\n }\n } finally {\n record.ClearRestoreContext();\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Unknown error';\n this.notificationService.CreateSimpleNotification(\n `Restore failed: ${message}`,\n 'error', 4000,\n );\n }\n }\n\n OnListManagementClosed(): void {\n this.ShowListManagement = false;\n this.cdr.markForCheck();\n }\n\n OnShowChangesRequested(): void {\n if (this.fc?.ShowChanges) {\n this.fc.ShowChanges();\n } else {\n this.ShowChangesRequested.emit();\n }\n }\n\n // ---- Section Control Handlers ----\n\n OnFilterChange(filter: string): void {\n if (this.fc?.onFilterChange) {\n this.fc.onFilterChange(filter);\n this.cdr.markForCheck();\n }\n }\n\n OnExpandAll(): void {\n if (this.fc?.expandAllSections) {\n this.fc.expandAllSections();\n this.cdr.markForCheck();\n }\n }\n\n OnCollapseAll(): void {\n if (this.fc?.collapseAllSections) {\n this.fc.collapseAllSections();\n this.cdr.markForCheck();\n }\n }\n\n OnShowEmptyFieldsChange(show: boolean): void {\n if (this.fc) {\n this.fc.showEmptyFields = show;\n this.cdr.markForCheck();\n }\n }\n\n OnWidthModeChange(mode: FormWidthMode): void {\n if (this.fc?.setFormWidthMode) {\n this.fc.setFormWidthMode(mode);\n this.cdr.markForCheck();\n } else {\n this.WidthMode = mode;\n this.cdr.markForCheck();\n }\n }\n\n OnResetSectionOrder(): void {\n if (this.fc?.resetSectionOrder) {\n this.fc.resetSectionOrder();\n this.cdr.markForCheck();\n }\n }\n\n // ---- Section Manager Handlers ----\n\n OnManageSections(): void {\n this.ShowSectionManager = true;\n this.cdr.markForCheck();\n }\n\n OnSectionOrderChange(newOrder: string[]): void {\n if (this.fc?.setSectionOrder) {\n this.fc.setSectionOrder(newOrder);\n this.cdr.markForCheck();\n }\n }\n\n OnSectionManagerReset(): void {\n this.OnResetSectionOrder();\n }\n\n OnSectionManagerClosed(): void {\n this.ShowSectionManager = false;\n this.cdr.markForCheck();\n }\n}\n","<!-- ============================================\n BEFORE-TOOLBAR SLOT\n ============================================ -->\n<ng-content select=\"[before-toolbar]\"></ng-content>\n\n<!-- ============================================\n TOOLBAR (bridges FormComponent state → toolbar inputs)\n ============================================ -->\n<mj-form-toolbar\n [Record]=\"EffectiveRecord\"\n [EditMode]=\"EffectiveEditMode\"\n [UserCanEdit]=\"EffectiveUserCanEdit\"\n [UserCanDelete]=\"EffectiveUserCanDelete\"\n [IsFavorite]=\"EffectiveIsFavorite\"\n [FavoriteInitDone]=\"EffectiveFavoriteInitDone\"\n [IsDirty]=\"EffectiveIsDirty\"\n [DirtyFieldNames]=\"EffectiveDirtyFieldNames\"\n [ListCount]=\"ListCount\"\n [TagCount]=\"TagCount\"\n [VersionCount]=\"VersionCount\"\n [EntityInfo]=\"EffectiveEntityInfo\"\n [Config]=\"ToolbarConfig\"\n [IsSaving]=\"EffectiveIsSaving\"\n [VisibleSectionCount]=\"VisibleSectionCount\"\n [TotalSectionCount]=\"TotalSectionCount\"\n [ExpandedSectionCount]=\"ExpandedSectionCount\"\n [SearchFilter]=\"EffectiveSearchFilter\"\n [ShowEmptyFields]=\"EffectiveShowEmptyFields\"\n [WidthMode]=\"EffectiveWidthMode\"\n [HasCustomSectionOrder]=\"EffectiveHasCustomSectionOrder\"\n (Navigate)=\"OnNavigate($event)\"\n (EditModeChange)=\"OnEditModeChange($event)\"\n (BeforeSave)=\"BeforeSave.emit($event)\"\n (SaveRequested)=\"OnSaveRequested()\"\n (BeforeCancel)=\"BeforeCancel.emit($event)\"\n (CancelRequested)=\"OnCancelRequested()\"\n (BeforeDelete)=\"BeforeDelete.emit($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (BeforeHistoryView)=\"BeforeHistoryView.emit($event)\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (BeforeListManagement)=\"BeforeListManagement.emit($event)\"\n (ListManagementRequested)=\"OnListManagementRequested()\"\n (ShowChangesRequested)=\"OnShowChangesRequested()\"\n (CustomButtonClick)=\"CustomButtonClick.emit($event)\"\n (FilterChange)=\"OnFilterChange($event)\"\n (ExpandAllRequested)=\"OnExpandAll()\"\n (CollapseAllRequested)=\"OnCollapseAll()\"\n (ShowEmptyFieldsChange)=\"OnShowEmptyFieldsChange($event)\"\n (WidthModeChange)=\"OnWidthModeChange($event)\"\n (ResetSectionOrderRequested)=\"OnResetSectionOrder()\"\n (ManageSectionsRequested)=\"OnManageSections()\"\n (TagsPanelToggled)=\"OnTagsPanelToggled()\">\n</mj-form-toolbar>\n\n<!-- ============================================\n SCROLL AREA (full-width so mouse wheel works anywhere)\n ============================================ -->\n<div class=\"mj-forms-scroll-area\">\n <div class=\"mj-forms-panels-container\"\n [class.mj-forms-panels--full-width]=\"EffectiveWidthMode === 'full-width'\"\n [class.mj-forms-panels--edit-mode]=\"EffectiveEditMode\"\n [class.mj-forms-panels--has-isa-panel]=\"HasIsaRelatedItems\">\n <!-- Flex row: form panels on left, ISA side panel on right -->\n <div class=\"mj-forms-layout-row\">\n <!-- All panels in a single flex container — CSS order drives sequencing -->\n <div class=\"mj-forms-all-panels\">\n <ng-content></ng-content>\n\n <!-- Empty state when no sections match search -->\n @if (EffectiveSearchFilter && VisibleSectionCount === 0) {\n <div class=\"mj-forms-empty-search-state\">\n <div class=\"mj-forms-empty-search-icon\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n </div>\n <h3 class=\"mj-forms-empty-search-title\">No sections found</h3>\n <p class=\"mj-forms-empty-search-message\">\n No sections match \"<strong>{{ EffectiveSearchFilter }}</strong>\".\n <br>Try a different search term or <a href=\"#\" (click)=\"OnFilterChange(''); $event.preventDefault()\" class=\"mj-forms-empty-search-link\">clear the search</a>.\n </p>\n </div>\n }\n </div>\n\n <!-- IS-A Related Records Side Panel -->\n <mj-isa-related-panel\n [Record]=\"EffectiveRecord\"\n [EditMode]=\"EffectiveEditMode\"\n [Collapsed]=\"EffectiveWidthMode === 'full-width'\"\n (Navigate)=\"OnNavigate($event)\">\n </mj-isa-related-panel>\n </div>\n </div>\n</div>\n\n<!-- ============================================\n RECORD CHANGES DRAWER (shown when history button clicked)\n ============================================ -->\n@if (ShowRecordChanges && EffectiveRecord) {\n <mj-record-changes\n [record]=\"EffectiveRecord\"\n [AllowRestore]=\"EffectiveUserCanEdit\"\n (RestoreRequested)=\"OnRestoreRequested($event)\"\n (dialogClosed)=\"OnRecordChangesClosed()\">\n </mj-record-changes>\n}\n\n<!-- ============================================\n TAGS PANEL (shown when tags button clicked)\n ============================================ -->\n@if (ShowTagsPanel && EffectiveRecord) {\n <mj-record-tags\n [Record]=\"EffectiveRecord\"\n [WidthPx]=\"TagsPanelWidth\"\n (PanelClosed)=\"OnTagsPanelClosed()\"\n (TagCountChanged)=\"OnTagCountChanged($event)\"\n (RecordNavigate)=\"OnTagsRecordNavigate($event)\"\n (WidthChanged)=\"OnTagsPanelWidthChanged($event)\">\n </mj-record-tags>\n}\n\n<!-- ============================================\n LIST MANAGEMENT DIALOG (shown when lists button clicked)\n ============================================ -->\n@if (ShowListManagement && EffectiveRecord) {\n <mj-list-management-dialog\n [visible]=\"ShowListManagement\"\n [config]=\"{\n mode: 'manage',\n entityId: EffectiveRecord.EntityInfo.ID,\n entityName: EffectiveRecord.EntityInfo.Name,\n recordIds: [EffectiveRecord.PrimaryKey.Values()[0]],\n allowCreate: true\n }\"\n (complete)=\"OnListManagementClosed()\"\n (cancel)=\"OnListManagementClosed()\">\n </mj-list-management-dialog>\n}\n\n<!-- ============================================\n SECTION MANAGER DRAWER (shown when manage-sections button clicked)\n ============================================ -->\n<mj-section-manager\n [Sections]=\"SectionManagerItems\"\n [SectionOrder]=\"SectionManagerOrder\"\n [Visible]=\"ShowSectionManager\"\n (SectionOrderChange)=\"OnSectionOrderChange($event)\"\n (ResetRequested)=\"OnSectionManagerReset()\"\n (Closed)=\"OnSectionManagerClosed()\">\n</mj-section-manager>\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
|
|
2
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
2
3
|
import { BaseEntity, EntityFieldInfo } from '@memberjunction/core';
|
|
3
4
|
import { ValidationErrorInfo } from '@memberjunction/global';
|
|
4
5
|
import { FormContext } from '../types/form-types';
|
|
@@ -38,7 +39,7 @@ export interface FKSuggestion {
|
|
|
38
39
|
* </mj-form-field>
|
|
39
40
|
* ```
|
|
40
41
|
*/
|
|
41
|
-
export declare class MjFormFieldComponent implements OnChanges, OnDestroy {
|
|
42
|
+
export declare class MjFormFieldComponent extends BaseAngularComponent implements OnChanges, OnDestroy {
|
|
42
43
|
private cdr;
|
|
43
44
|
/** The entity record containing this field */
|
|
44
45
|
Record: BaseEntity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../src/lib/field/form-field.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAsD,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChK,OAAO,EAAE,UAAU,EAAE,eAAe,EAAiD,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;;AAEjE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAOa,oBAAqB,YAAW,SAAS,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"form-field.component.d.ts","sourceRoot":"","sources":["../../../src/lib/field/form-field.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
|
+
import { CompositeKey, KeyValuePair, RunView } from '@memberjunction/core';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
5
6
|
const _forTrack0 = ($index, $item) => $item.PrimaryKeyValue;
|
|
@@ -408,7 +409,7 @@ function MjFormFieldComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
408
409
|
* </mj-form-field>
|
|
409
410
|
* ```
|
|
410
411
|
*/
|
|
411
|
-
export class MjFormFieldComponent {
|
|
412
|
+
export class MjFormFieldComponent extends BaseAngularComponent {
|
|
412
413
|
cdr = inject(ChangeDetectorRef);
|
|
413
414
|
/** The entity record containing this field */
|
|
414
415
|
Record;
|
|
@@ -696,7 +697,7 @@ export class MjFormFieldComponent {
|
|
|
696
697
|
FieldName: fieldInfo.RelatedEntityFieldName,
|
|
697
698
|
Value: fkValue
|
|
698
699
|
}]);
|
|
699
|
-
const md =
|
|
700
|
+
const md = this.ProviderToUse;
|
|
700
701
|
md.GetEntityRecordName(fieldInfo.RelatedEntity, pk)
|
|
701
702
|
.then(name => {
|
|
702
703
|
this._resolvedFKName = name || null;
|
|
@@ -895,7 +896,7 @@ export class MjFormFieldComponent {
|
|
|
895
896
|
const fieldInfo = this.FieldInfo;
|
|
896
897
|
if (!fieldInfo?.RelatedEntity)
|
|
897
898
|
return;
|
|
898
|
-
const md =
|
|
899
|
+
const md = this.ProviderToUse;
|
|
899
900
|
const relatedEntity = md.Entities.find(e => e.Name === fieldInfo.RelatedEntity);
|
|
900
901
|
if (!relatedEntity)
|
|
901
902
|
return;
|
|
@@ -913,7 +914,7 @@ export class MjFormFieldComponent {
|
|
|
913
914
|
? [pkFieldName]
|
|
914
915
|
: [pkFieldName, nameFieldName];
|
|
915
916
|
const escapedQuery = query.replace(/'/g, "''");
|
|
916
|
-
const rv =
|
|
917
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
917
918
|
const result = await rv.RunView({
|
|
918
919
|
EntityName: fieldInfo.RelatedEntity,
|
|
919
920
|
ExtraFilter: `[${nameFieldName}] LIKE '%${escapedQuery}%'`,
|
|
@@ -1166,8 +1167,8 @@ export class MjFormFieldComponent {
|
|
|
1166
1167
|
return '';
|
|
1167
1168
|
return date.toISOString().split('T')[0];
|
|
1168
1169
|
}
|
|
1169
|
-
static ɵfac = function MjFormFieldComponent_Factory(__ngFactoryType__) { return
|
|
1170
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjFormFieldComponent, selectors: [["mj-form-field"]], inputs: { Record: "Record", EditMode: "EditMode", FieldName: "FieldName", Type: "Type", LinkType: "LinkType", ShowLabel: "ShowLabel", FormContext: "FormContext", _deprecatedRecord: [0, "record", "_deprecatedRecord"], _deprecatedFormContext: [0, "formContext", "_deprecatedFormContext"], HideWhenEmptyInReadOnlyMode: "HideWhenEmptyInReadOnlyMode", DisplayNameOverride: "DisplayNameOverride", PossibleValuesOverride: "PossibleValuesOverride" }, outputs: { ValueChange: "ValueChange", Navigate: "Navigate" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[1, "mj-forms-field", 3, "mj-forms-field--readonly", "mj-forms-field--dirty"], [1, "mj-forms-field", "mj-forms-field--editing", 3, "mj-forms-field--dirty", "mj-forms-field--required-empty", "mj-forms-field--has-error", "mj-forms-field--has-warning"], [1, "mj-forms-field"], [1, "mj-forms-field-label", 3, "innerHTML"], [1, "mj-forms-field-control"], [1, "mj-forms-field-value"], ["title", "View related record", 1, "mj-forms-field-link", "mj-forms-field-link--fk", 3, "click"], ["title", "Send email", 1, "mj-forms-field-link", 3, "click"], [1, "fa-solid", "fa-envelope", "mj-forms-field-link-icon"], ["title", "Open link", 1, "mj-forms-field-link", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square", "mj-forms-field-link-icon"], ["title", "View related record", 1, "mj-forms-field-link", 3, "click"], [1, "mj-forms-field-value", "mj-forms-field-value--long"], [1, "mj-forms-field-checkbox"], ["type", "checkbox", "disabled", "", 3, "checked"], [1, "mj-forms-field", "mj-forms-field--editing"], [1, "mj-fk-search", 3, "mj-fk-search--matched"], [1, "mj-forms-field-validation", "mj-forms-field-validation--error"], [1, "mj-forms-field-validation", "mj-forms-field-validation--warning"], [1, "mj-fk-search"], ["type", "text", "placeholder", "Search...", 1, "mj-forms-field-input", 3, "input", "focus", "blur", "value"], ["title", "Clear", 1, "mj-fk-clear"], [1, "fa-solid", "fa-magnifying-glass", "mj-fk-search-icon"], [1, "mj-fk-dropdown", 3, "ngStyle", "mj-fk-dropdown--above"], ["title", "Clear", 1, "mj-fk-clear", 3, "mousedown"], [1, "fa-solid", "fa-xmark"], [1, "mj-fk-dropdown", 3, "ngStyle"], [1, "mj-fk-option"], [1, "mj-fk-option", 3, "mousedown"], ["type", "text", 1, "mj-forms-field-input", 3, "value"], [1, "mj-forms-field-input", "mj-forms-field-input--textarea", 3, "value"], ["type", "number", 1, "mj-forms-field-input", "mj-forms-field-input--number", 3, "value"], ["type", "date", 1, "mj-forms-field-input", "mj-forms-field-input--date", 3, "value"], ["type", "text", 1, "mj-forms-field-input", 3, "input", "value"], [1, "mj-forms-field-input", "mj-forms-field-input--textarea", 3, "input", "value"], ["type", "number", 1, "mj-forms-field-input", "mj-forms-field-input--number", 3, "change", "value"], ["type", "date", 1, "mj-forms-field-input", "mj-forms-field-input--date", 3, "change", "value"], ["type", "checkbox", 3, "change", "checked"], ["tabindex", "0", 1, "mj-custom-select-trigger", 3, "click", "blur"], [1, "mj-custom-select-value"], [1, "fa-solid", "fa-chevron-down", "mj-custom-select-chevron"], [1, "mj-fk-option", 3, "mj-fk-option--selected"], ["type", "text", "placeholder", "Type to search...", 1, "mj-forms-field-input", 3, "input", "focus", "blur", "value"], ["type", "text", 1, "mj-forms-field-input", 3, "change", "value"], [1, "mj-forms-field-validation-item"], [1, "fa-solid", "fa-circle-exclamation"], [1, "fa-solid", "fa-triangle-exclamation"]], template: function MjFormFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1170
|
+
static ɵfac = /*@__PURE__*/ (() => { let ɵMjFormFieldComponent_BaseFactory; return function MjFormFieldComponent_Factory(__ngFactoryType__) { return (ɵMjFormFieldComponent_BaseFactory || (ɵMjFormFieldComponent_BaseFactory = i0.ɵɵgetInheritedFactory(MjFormFieldComponent)))(__ngFactoryType__ || MjFormFieldComponent); }; })();
|
|
1171
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjFormFieldComponent, selectors: [["mj-form-field"]], inputs: { Record: "Record", EditMode: "EditMode", FieldName: "FieldName", Type: "Type", LinkType: "LinkType", ShowLabel: "ShowLabel", FormContext: "FormContext", _deprecatedRecord: [0, "record", "_deprecatedRecord"], _deprecatedFormContext: [0, "formContext", "_deprecatedFormContext"], HideWhenEmptyInReadOnlyMode: "HideWhenEmptyInReadOnlyMode", DisplayNameOverride: "DisplayNameOverride", PossibleValuesOverride: "PossibleValuesOverride" }, outputs: { ValueChange: "ValueChange", Navigate: "Navigate" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[1, "mj-forms-field", 3, "mj-forms-field--readonly", "mj-forms-field--dirty"], [1, "mj-forms-field", "mj-forms-field--editing", 3, "mj-forms-field--dirty", "mj-forms-field--required-empty", "mj-forms-field--has-error", "mj-forms-field--has-warning"], [1, "mj-forms-field"], [1, "mj-forms-field-label", 3, "innerHTML"], [1, "mj-forms-field-control"], [1, "mj-forms-field-value"], ["title", "View related record", 1, "mj-forms-field-link", "mj-forms-field-link--fk", 3, "click"], ["title", "Send email", 1, "mj-forms-field-link", 3, "click"], [1, "fa-solid", "fa-envelope", "mj-forms-field-link-icon"], ["title", "Open link", 1, "mj-forms-field-link", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square", "mj-forms-field-link-icon"], ["title", "View related record", 1, "mj-forms-field-link", 3, "click"], [1, "mj-forms-field-value", "mj-forms-field-value--long"], [1, "mj-forms-field-checkbox"], ["type", "checkbox", "disabled", "", 3, "checked"], [1, "mj-forms-field", "mj-forms-field--editing"], [1, "mj-fk-search", 3, "mj-fk-search--matched"], [1, "mj-forms-field-validation", "mj-forms-field-validation--error"], [1, "mj-forms-field-validation", "mj-forms-field-validation--warning"], [1, "mj-fk-search"], ["type", "text", "placeholder", "Search...", 1, "mj-forms-field-input", 3, "input", "focus", "blur", "value"], ["title", "Clear", 1, "mj-fk-clear"], [1, "fa-solid", "fa-magnifying-glass", "mj-fk-search-icon"], [1, "mj-fk-dropdown", 3, "ngStyle", "mj-fk-dropdown--above"], ["title", "Clear", 1, "mj-fk-clear", 3, "mousedown"], [1, "fa-solid", "fa-xmark"], [1, "mj-fk-dropdown", 3, "ngStyle"], [1, "mj-fk-option"], [1, "mj-fk-option", 3, "mousedown"], ["type", "text", 1, "mj-forms-field-input", 3, "value"], [1, "mj-forms-field-input", "mj-forms-field-input--textarea", 3, "value"], ["type", "number", 1, "mj-forms-field-input", "mj-forms-field-input--number", 3, "value"], ["type", "date", 1, "mj-forms-field-input", "mj-forms-field-input--date", 3, "value"], ["type", "text", 1, "mj-forms-field-input", 3, "input", "value"], [1, "mj-forms-field-input", "mj-forms-field-input--textarea", 3, "input", "value"], ["type", "number", 1, "mj-forms-field-input", "mj-forms-field-input--number", 3, "change", "value"], ["type", "date", 1, "mj-forms-field-input", "mj-forms-field-input--date", 3, "change", "value"], ["type", "checkbox", 3, "change", "checked"], ["tabindex", "0", 1, "mj-custom-select-trigger", 3, "click", "blur"], [1, "mj-custom-select-value"], [1, "fa-solid", "fa-chevron-down", "mj-custom-select-chevron"], [1, "mj-fk-option", 3, "mj-fk-option--selected"], ["type", "text", "placeholder", "Type to search...", 1, "mj-forms-field-input", 3, "input", "focus", "blur", "value"], ["type", "text", 1, "mj-forms-field-input", 3, "change", "value"], [1, "mj-forms-field-validation-item"], [1, "fa-solid", "fa-circle-exclamation"], [1, "fa-solid", "fa-triangle-exclamation"]], template: function MjFormFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1171
1172
|
i0.ɵɵconditionalCreate(0, MjFormFieldComponent_Conditional_0_Template, 2, 2);
|
|
1172
1173
|
} if (rf & 2) {
|
|
1173
1174
|
i0.ɵɵconditional(ctx.Record && (ctx.Record.IsSaved || !ctx.IsFieldReadOnly) ? 0 : -1);
|
|
@@ -1207,5 +1208,5 @@ export class MjFormFieldComponent {
|
|
|
1207
1208
|
}], Navigate: [{
|
|
1208
1209
|
type: Output
|
|
1209
1210
|
}] }); })();
|
|
1210
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjFormFieldComponent, { className: "MjFormFieldComponent", filePath: "src/lib/field/form-field.component.ts", lineNumber:
|
|
1211
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjFormFieldComponent, { className: "MjFormFieldComponent", filePath: "src/lib/field/form-field.component.ts", lineNumber: 50 }); })();
|
|
1211
1212
|
//# sourceMappingURL=form-field.component.js.map
|