Member Junction
    Preparing search index...

    Base class for all Angular components in the MemberJunction system.

    Hierarchy (View Summary)

    Implements

    • OnInit
    • OnDestroy
    Index

    Constructors

    Properties

    AppContextSnapshot: AppContextSnapshot | null = null

    Application context snapshot for AI agent awareness — updated on every app/tab transition

    AuthBase: MJAuthBase
    Document: Document
    ErrorMessage: string = ''
    HasError: boolean = false
    initialPath: string = '/'
    IsChatOverlayReady: boolean = false

    Suppresses chat overlay during initial app load — set true after workspace initializes

    IsChatRoute: boolean = false

    True when the current route is the full Conversations/Chat workspace — hides the chat overlay

    IsDarkMode: boolean = false

    Tracks whether the login page is in dark mode

    IsOAuthCallback: boolean = false

    True when the current URL is the OAuth callback route - used for conditional rendering

    LoginBannerAlignment: "start" | "center" = 'start'

    Where the story panel's brand block sits: 'start' (Login C's editorial split, the default) or 'center'. Centering is what a logo-led brand usually wants, and it is what the stacked (≤900px) layout already does — this makes the same choice available on the wide layout without a host reaching into .main-banner.

    6.2.0

    LoginBannerLogoLabel: string = 'MemberJunction Logo'

    Accessible name for the banner's brand image. The artwork itself comes from the --mj-login-banner-logo token, which the component cannot read — so a deployment that swaps the logo sets the matching name here, or a screen reader keeps announcing the default brand.

    6.2.0

    LoginBannerSubtitle: string | null = 'Sign in to continue.'

    The supporting line under LoginBannerTitle, or null for none.

    6.2.0

    LoginBannerTitle: string | null = 'Welcome back'

    The story panel's headline, or null for none. It was hardcoded ("Welcome back"), which made the one prominent line of copy on the page the one thing a host could not change. null collapses the element, so a logo-only banner is a binding, not a CSS hide.

    6.2.0

    LoginCards: MJLoginCard[] = []

    Extra content for the login screen expressed as data rather than markup — a support route, a trust mark, a policy link. Each card names the region it belongs to (see MJLoginCard).

    This is the channel a configured deployment uses from code. A host that keeps per-tenant branding somewhere resolves it itself — as Explorer already resolves the provider catalog before bootstrap — and binds it here. A design published in Login Studio is the data-driven route instead: see PublishedLoginScreen.

    A host that needs richer content than a card projects a template into the region's slot instead, which takes over from the cards there.

    6.2.0

    LoginDesignStyle: Record<string, string> = {}

    The default theme's brand and the published design's --mj-login-* tokens, on the login wrapper only: it exists while signed out, so it cannot race the user's own theme applied after sign-in.

    LoginHeading: string | null = 'Log in'

    The heading above the sign-in options, or null for none.

    Explorer's own login column already labels the action on the button itself, so an embedding app whose single provider renders one CTA sees the word twice ("Log in" over a "Log in" button). Passing null drops the heading. Default matches MJLoginPickerComponent.Heading.

    6.2.0

    LoginLayout: MJLoginLayout = 'split'

    How the story panel and the sign-in column are arranged — see MJLoginLayout.

    The stock 'split' is the editorial layout; 'split-reverse' mirrors it; 'centered' is the single-column sign-in page, where the story content sits on a full-bleed banner background and the sign-in column becomes a card on top of it. Every slot and every input still applies in each layout — a layout decides where the regions go, never whether they exist.

    6.2.0

    LoginShowPoweredBy: boolean = true

    Whether the sign-in panel carries MemberJunction's "Powered by" attribution. A white-labelled deployment turns it off here instead of hiding it with a CSS rule against the picker's internals. Default matches MJLoginPickerComponent.ShowPoweredBy.

    6.2.0

    PreShellBlocked: boolean = false

    Whether a pre-shell guard overlay is blocking the shell

    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.

    PublishedLoginScreen: PublicLoginScreen | null = null

    The default theme's published sign-in page (GET /auth/login-screen), or null while it loads, when there is none, when the server predates the route, or when UsePublishedLoginScreen is off.

    6.2.0

    ShowValidationOnly: boolean = false
    SigningIn: boolean = false

    True while a sign-in is being initiated, so the picker cannot start two at once.

    SubHeaderText: string = MJExplorerAppComponent.defaultSubHeaderText
    title: string = 'MJ Explorer'
    UsePublishedLoginScreen: boolean = true

    Draw the default theme's published sign-in page (Login Studio) and wear its brand colors before sign-in. A published design wins over LoginLayout, LoginBannerAlignment and LoginHeading, and over LoginCards in a region it fills; a host's mjLoginSlot templates still win over it, region by region. Set false to keep the login screen exactly as this host's inputs and CSS draw it.

    6.2.0

    "ɵdir": unknown
    "ɵfac": ɵɵFactoryDeclaration<BaseAngularComponent, never>

    Accessors

    • get ChatOverlayTopBoundaryPx(): number

      Top boundary (in px) the chat overlay bubble cannot be dragged past. The shell-header is 60px tall, but if the server-connectivity banner is showing it sits above the shell-header and pushes everything down, so we add its height in.

      The height is read from the banner's HeightPx signal, never from the DOM. The banner publishes it from an animation-done listener that can fire while views are refreshing; a DOM read is invisible to change detection, so this binding went stale and dev mode reported NG0100 on every later pass (MJ #4377). A signal read registers this view as a consumer, so the write re-refreshes it.

      Returns number

    • get ProviderPickerLede(): string | null

      Lede rendered above the provider picker.

      A real auth status message (expired session, provider error) always wins — a failure the user needs to see must never be displaced by static copy.

      Absent one, this is Login C's lede, which C marks multi-only: it explains that there is a choice to make, so it is suppressed when there is exactly one provider and nothing to choose.

      Returns string | null

    • 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 RunViewToUse(): IRunViewProvider

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

      Returns IRunViewProvider

    Methods

    • 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 void

    • Starts sign-in with the provider the user picked.

      Choosing the provider already wired into DI logs in immediately. Choosing a different one requires a reload: each browser SDK contributes its Angular providers (interceptors, guards, config tokens) at module-definition time, so the injector cannot be re-composed in place. The choice is persisted first, and the reloaded app both bootstraps that provider and starts its login flow automatically — so the user experiences one click, not two.

      Parameters

      Returns void

    • Handle app/nav-item navigation requests emitted from the floating chat overlay

      Parameters

      • event: { appName?: string; navItemName: string; queryParams?: Record<string, string> }

      Returns Promise<void>

    • Handle "open full chat workspace" from the chat overlay — navigate to the Conversations tab with the active conversation

      Parameters

      • conversationId: string | null

      Returns void