Member Junction
    Preparing search index...

    Class BaseFormComponentAbstract

    Abstract base class for all entity record forms in MemberJunction.

    Generated forms (via CodeGen) and custom forms extend this class. It provides core form logic — section management, validation, pending records, permissions, favorites, related entity helpers — with ZERO Explorer dependencies.

    Instead of calling Explorer services directly, events are emitted via @Output:

    • Navigate: Form navigation requests (record links, new records, external links)
    • Notification: User-facing notifications (save success, validation errors, etc.)
    • RecordSaved: Emitted after a successful save
    • RecordDeleted: Emitted after a successful delete

    The host application (e.g. SingleRecordComponent in Explorer) subscribes to these events and maps them to its own services (NavigationService, SharedService, etc.).

    Hierarchy (View Summary)

    Implements

    • AfterViewInit
    • OnInit
    • OnDestroy
    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    BottomAreaSize: number = 60

    Size of the bottom area as a percentage (0-100) for angular-split. Used by CodeGen-generated templates with as-split.

    cdr: ChangeDetectorRef = ...
    collapsiblePanels: QueryList<MjCollapsiblePanelComponent>
    Config: EntityFormConfig | null = null

    Per-instance presentation config (toolbar visibility, related-entity sections, collapsibility, width, in-form navigation). Set by the form host (MjEntityFormHostComponent) or any consumer that instantiates the form directly. Read back by MjRecordFormContainerComponent and the collapsible panels through the FormComponent reference, so it takes effect WITHOUT regenerating the CodeGen-produced template. Null means "use the container's own defaults" (the classic full-page tab behavior).

    CurrentVariantID: string | null = null

    ID of the currently-rendered variant (null when no override is active and the form is the CodeGen /

    default).

    EditMode: boolean = false
    elementRef: ElementRef<any> = ...
    FavoriteInitDone: boolean = false
    formStateService: FormStateService = ...
    isHistoryDialogOpen: boolean = false
    IsTagsPanelOpen: boolean = false
    Navigate: EventEmitter<FormNavigationEvent> = ...

    Emitted when navigation is requested (record link, external link, email, new record, etc.)

    Notification: EventEmitter<FormNotificationEvent> = ...

    Emitted when a user-facing notification should be shown

    OnVariantChanged: (variantID: string | null) => void = ...

    Hook called when the user picks a different variant from the picker. Default is a no-op; the Explorer-level single-record component replaces this on the form instance to wire FormResolverService.SetSelectedVariant and reload the record. Kept as a method (not an EventEmitter) so the host doesn't need to subscribe — assignment is enough.

    Provider: IMetadataProvider | null

    If specified, this provider will be used for communication and for all metadata purposes. By default, if not provided, the Metadata and RunView classes are used for this and the default GraphQLDataProvider is used which is connected to the same back-end MJAPI instance as the Metadata and RunView classes. If you want to have this component connect to a different MJAPI back-end, create an instance of a ProviderBase sub-class like GraphQLDataProvider/etc, and configure it as appropriate to connect to the MJAPI back-end you want to use, and then pass it in here.

    record: BaseEntity
    RecordDeleted: EventEmitter<RecordDeletedEvent> = ...

    Emitted after a record is deleted successfully

    RecordDeleteFailed: EventEmitter<RecordDeleteFailedEvent> = ...

    Emitted when a record delete fails

    RecordReady: EventEmitter<BaseEntity<unknown>> = ...

    Emitted once after ngOnInit completes and the record is fully initialized (favorites loaded, form state initialized). This is the safe point for the container to start loading badge counts and other record-dependent data.

    RecordSaved: EventEmitter<RecordSavedEvent> = ...

    Emitted after a record is saved successfully

    RecordSaveFailed: EventEmitter<RecordSaveFailedEvent> = ...

    Emitted when a record save fails

    searchFilter: string = ''
    sections: BaseFormSectionInfo<any>[] = []
    showCreateDialog: boolean = false
    showDeleteDialog: boolean = false
    showEmptyFields: boolean = false
    TagCount: number = 0
    TopAreaHeight: string = '300px'

    Height of the top area when a splitter layout is used. Referenced by CodeGen-generated templates for entities with "top area" sections.

    TopAreaSize: number = 40

    Size of the top area as a percentage (0-100) for angular-split. Used by CodeGen-generated templates with as-split.

    ValidationFailed: EventEmitter<ValidationFailedEvent> = ...

    Emitted when validation fails before save

    Variants: {
        ID: string;
        Label: string;
        Scope: "User" | "Role" | "Global";
        Status: "Active" | "Pending" | "Inactive";
    }[] = []

    Variants applicable to the current (entity, user) tuple, supplied by the Explorer-level form resolver. When more than one entry is present, the record-form-container shows a picker that lets the user switch between variants. Empty / single-entry arrays hide the picker.

    The container reads this via its EffectiveVariants accessor — generated form templates do NOT need to bind it explicitly.

    "ɵdir": unknown
    "ɵfac": unknown

    Accessors

    • get ProviderToUse(): IMetadataProvider

      Returns either the default Metadata provider or the one specified in the Provider property, if it was specified

      Returns IMetadataProvider

    • get RunQueryToUse(): IRunQueryProvider

      Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified

      Returns IRunQueryProvider

    • get RunReportToUse(): IRunReportProvider

      Returns either the default RunReport provider or the one specified in the Provider property, if it was specified

      Returns IRunReportProvider

    • get RunViewToUse(): IRunViewProvider

      Returns either the default RunView provider or the one specified in the Provider property, if it was specified

      Returns IRunViewProvider

    Methods

    • Component-level default width mode, used when the user has NOT explicitly chosen a width for this entity yet (first visit, nothing persisted in User Settings). Subclasses can override this — for example, custom forms with full-bleed layouts should return 'full-width' here and the container will respect it on first open.

      Once the user toggles the width via the toolbar, their choice persists via setFormWidthMode() and takes priority over this default on subsequent opens.

      Returns "centered" | "full-width"

    • Parameters

      • sections: (
            | BaseFormSectionInfo<any>
            | {
                isExpanded: boolean;
                metadata?: unknown;
                rowCount?: number;
                sectionKey: string;
                sectionName: string;
            }
        )[]

      Returns void

    • A callback method that is invoked immediately after Angular has completed initialization of a component's view. It is invoked only once when the view is instantiated.

      Returns void

    • A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.

      Returns Promise<void>

    • Handles delete requests from the form container. Emits RecordDeleted on success, RecordDeleteFailed on failure. Generated form templates bind this as: (DeleteRequested)="OnDeleteRequested()"

      Returns Promise<void>