@memberjunction/ng-base-types
Foundational types and base classes for Angular components in the MemberJunction ecosystem, providing standardized provider management and form event coordination.
Overview
Section titled “Overview”This package provides essential building blocks that other MemberJunction Angular packages depend on. It exports BaseAngularComponent, an abstract base class that standardizes data provider access across the component tree, and a set of form event types used for coordinating save/delete operations across form sub-components.
graph TD
A["@memberjunction/ng-base-types"] --> B[BaseAngularComponent]
A --> C[Form Event System]
B --> B1["ProviderToUse
(IMetadataProvider)"]
B --> B2["RunViewToUse
(IRunViewProvider)"]
B --> B3["RunQueryToUse
(IRunQueryProvider)"]
B --> B4["RunReportToUse
(IRunReportProvider)"]
C --> C1[BaseFormComponentEvent]
C --> C2[FormEditingCompleteEvent]
C --> C3[PendingRecordItem]
C --> C4[BaseFormComponentEventCodes]
style A fill:#2d6a9f,stroke:#1a4971,color:#fff
style B fill:#7c5295,stroke:#563a6b,color:#fff
style C fill:#2d8659,stroke:#1a5c3a,color:#fff
Installation
Section titled “Installation”npm install @memberjunction/ng-base-typesBaseAngularComponent
Section titled “BaseAngularComponent”Abstract base class that all MemberJunction Angular components should extend for standardized provider management:
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
@Component({ selector: 'my-component', templateUrl: './my-component.html'})export class MyComponent extends BaseAngularComponent { async loadData() { // Access the metadata provider const metadata = this.ProviderToUse;
// Use RunView functionality const viewProvider = this.RunViewToUse;
// Execute queries const queryProvider = this.RunQueryToUse;
// Run reports const reportProvider = this.RunReportToUse; }}Properties
Section titled “Properties”| Property | Type | Description |
|---|---|---|
Provider | IMetadataProvider | null | Optional custom provider instance. If not specified, uses the default global provider. |
Getter Methods
Section titled “Getter Methods”| Method | Return Type | Description |
|---|---|---|
ProviderToUse | IMetadataProvider | Returns the Provider if specified, otherwise returns Metadata.Provider |
RunViewToUse | IRunViewProvider | Provider cast as IRunViewProvider for running views |
RunQueryToUse | IRunQueryProvider | Provider cast as IRunQueryProvider for executing queries |
RunReportToUse | IRunReportProvider | Provider cast as IRunReportProvider for running reports |
Form Event System
Section titled “Form Event System”BaseFormComponentEventCodes
Section titled “BaseFormComponentEventCodes”Constants for event type identification:
const BaseFormComponentEventCodes = { BASE_CODE: 'BaseFormComponent_Event', EDITING_COMPLETE: 'EDITING_COMPLETE', REVERT_PENDING_CHANGES: 'REVERT_PENDING_CHANGES', POPULATE_PENDING_RECORDS: 'POPULATE_PENDING_RECORDS'}Event Classes
Section titled “Event Classes”// Base event for form component communicationclass BaseFormComponentEvent { subEventCode: string; elementRef: unknown; returnValue: unknown;}
// Emitted when form editing is complete, carrying pending changesclass FormEditingCompleteEvent extends BaseFormComponentEvent { subEventCode: string = BaseFormComponentEventCodes.EDITING_COMPLETE; pendingChanges: PendingRecordItem[] = [];}
// Represents a record pending save or deleteclass PendingRecordItem { entityObject: BaseEntity; action: 'save' | 'delete' = 'save';}Handling Form Events
Section titled “Handling Form Events”import { BaseFormComponentEvent, BaseFormComponentEventCodes, FormEditingCompleteEvent, PendingRecordItem} from '@memberjunction/ng-base-types';
onFormEvent(event: BaseFormComponentEvent) { switch (event.subEventCode) { case BaseFormComponentEventCodes.EDITING_COMPLETE: const editEvent = event as FormEditingCompleteEvent; this.processPendingChanges(editEvent.pendingChanges); break; case BaseFormComponentEventCodes.REVERT_PENDING_CHANGES: this.revertChanges(); break; case BaseFormComponentEventCodes.POPULATE_PENDING_RECORDS: this.populateRecords(); break; }}Dependencies
Section titled “Dependencies”| Package | Description |
|---|---|
@memberjunction/core | Core MemberJunction framework |
@memberjunction/core-entities | Entity definitions |
@memberjunction/global | Global utilities |
tslib | TypeScript runtime helpers |
Peer Dependencies
Section titled “Peer Dependencies”@angular/common^21.x@angular/core^21.x
cd packages/Angular/Generic/base-typesnpm run buildLicense
Section titled “License”ISC