Member Junction
    Preparing search index...

    Base class for all Angular components in the MemberJunction system.

    Hierarchy (View Summary)

    Implements

    • OnInit
    Index

    Constructors

    Properties

    AvailableColors: string[] = DEFAULT_PROJECT_COLORS
    AvailableIcons: string[] = DEFAULT_PROJECT_ICONS
    CurrentUser: UserInfo
    DialogRef: MJDialogRef
    EnvironmentId: string
    FormData: ProjectFormData = ...
    IsEditMode: boolean = false
    ParentId: string | null = null

    When creating a new folder, the parent folder ID for nesting (null = top level).

    Project: MJProjectEntity | null = null
    projectSaved: EventEmitter<MJProjectEntity> = ...

    Use ProjectSaved.

    The same emitter under the old binding name, so a template still binding (projectSaved) keeps working. Must stay AFTER ProjectSaved: class fields initialise in order, and the other way round this captures undefined.

    ProjectSaved: EventEmitter<MJProjectEntity> = ...
    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.

    ShowNameError: boolean = false
    "ɵdir": unknown
    "ɵfac": ɵɵFactoryDeclaration<BaseAngularComponent, never>

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

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

      Returns IRunViewProvider

    • get VisibilityIsLocked(): boolean

      True when this dialog is editing a folder that is currently SHARED — in which case visibility is shown as a statement rather than a control.

      Sharing is one-way by design, and the reason is in the data model rather than the UI. NULL-means-shared conflates "shared" with "unowned": the moment a folder is shared its OwnerUserID goes to NULL and there is no column anywhere recording who created it (Project has __mj_CreatedAt, but no created-by). So OwnerUserID = currentUser.ID on a shared folder is indistinguishable from any other user claiming it — the system cannot tell reclaiming from appropriating, which makes "take it back" an affordance that was never really there.

      What that would cost on day one is the deciding argument. Every folder that exists today carries NULL, so without this the whole team's folder structure — subfolders included — is one radio button away from belonging to whichever person opens its settings first. A confirm does not fix that; it only narrates it.

      Personal -> shared stays available, because it only ever adds. Someone who wants a private copy makes a private folder. If personal folders later grow features that need a stable creator (sharing with named users, transfer, recovering a departed employee's folders), the fix is a separate IsShared flag so ownership stops being erased by sharing — a bigger change, and deliberately not this one.

      Returns boolean

    Methods