Member Junction
    Preparing search index...

    "Manage this form" — the one place to manage what is on an entity's form.

    Lists the full custom forms available to the user and the panels on the form, grouped by who each belongs to, because that decides what the user may do: anything to their own, hide what is shared with them, nothing to a grid a relationship draws. Holders of the Manage Form Defaults authorization also get Publish and Audience, which change what other people see.

    Every write goes through the admin service to the server, where the entity subclasses enforce the same rule this drawer uses to decide what to draw.

    Implements

    • OnChanges
    Index

    Constructors

    Properties

    Busy: string | null = null

    ID of the row a write is running on, so only its buttons go quiet.

    CanPublish: boolean = false

    Whether this user may publish to a role or to everyone.

    Changed: EventEmitter<void> = ...

    A row was switched or removed, so the form has to resolve again.

    Closed: EventEmitter<void> = ...
    Compiled: readonly FormPanelCompiledRow[] = []

    Compiled BaseFormPanel registrations on this entity, for the inventory.

    Confirming: string | null = null

    ID of the row awaiting a second press to confirm removal.

    CurrentFormID: string | null = null

    The form this user sees now; null when it is the generated form.

    EditComponentID: string | null = null

    The component the panel being edited renders, for the placement preview.

    EditContext: FormPlacementContext | null = null

    What the placement dialog opens on while editing.

    Editing: FormPanelInventoryItem | null = null

    The row being re-placed, or null.

    EditProposal: FormContributionSpec | null = null
    EditStatus: "Active" | "Pending" | "Inactive" = 'Active'

    What the panel being edited is now: on, a draft, or off.

    EditVisibleTo: string = ...

    Who sees the panel being edited, for the placement dialog to state.

    Entity: EntityInfo | null = null

    The entity whose form is being managed.

    Error: string = ''
    FormChosen: EventEmitter<string | null> = ...

    The user chose a different full custom form, or the generated form (null).

    Forms: FormPanelFormItem[] = []

    The full custom forms and the generated form, for the Form group.

    FullCustomForm: boolean = false

    Whether a full custom form owns this body, which holds everything else back.

    Groups: FormPanelInventoryGroup[] = []

    The list, under headings.

    Items: FormPanelInventoryItem[] = []
    Provider: IMetadataProvider | null = null
    Publishing:
        | {
            ID: string;
            Kind: "form"
            | "panel";
            RoleID: string | null;
            Scope: "User" | "Role" | "Global";
            Status: string;
            Title: string;
        }
        | null = null

    The item whose audience is being chosen, or null.

    Type Declaration

    • {
          ID: string;
          Kind: "form" | "panel";
          RoleID: string | null;
          Scope: "User" | "Role" | "Global";
          Status: string;
          Title: string;
      }
      • ID: string
      • Kind: "form" | "panel"
      • RoleID: string | null
      • Scope: "User" | "Role" | "Global"
      • Status: string

        What the item is now. Publishing turns it on, which the chooser says first.

      • Title: string
    • null
    RecordKey: CompositeKey | null = null

    The record the form is showing, for the placement dialog's preview. Null for a new record.

    Related: readonly FormPlacementRelated[] = []

    Related grids on this form, so editing can still offer to take one over.

    StockGrids: readonly FormPanelStockGridRow[] = []

    Relationships the container fills a grid in for.

    TitleByKey: ReadonlyMap<string, string> = ...

    Section and rail titles by key, so a claim reads as a name.

    Variants: readonly { ID: string; Label: string }[] = []

    The full custom forms the toolbar picker offers, in its order.

    Visible: boolean = false

    Accessors

    • get AudienceConsequence(): string

      What publishing will do, stated before it is done.

      Changing what other people see should never be a surprise, so the consequence is spelled out in the terms the publisher chose — which people, and on which records. Publishing turns the item on, so a draft or an item that is off says it will go live.

      Returns string

    Methods

    • A callback method that is invoked immediately after the default change detector has checked data-bound properties if at least one has changed, and before the view and content children are checked.

      Parameters

      • changes: { [propName: string]: SimpleChange<any> }

        The changed properties.

      Returns void

    • Open the placement dialog on a row that is already on the form.

      Editing in place is what "remove it and add it again" was standing in for. The dialog probes the form for itself, so the only context assembled here is what a probe cannot know: the related grids and the other panels already installed.

      Parameters

      • item: FormPanelInventoryItem

      Returns void

    • Keys pressed anywhere while the drawer is open, so they still reach it when the focused button was removed or disabled and focus fell to the page. Escape closes the top layer: the placement dialog, then the audience chooser, then the drawer. Tab and Shift+Tab wrap at the ends of that layer and bring focus back into it. Keys pressed in another overlay or modal, such as the icon picker's grid, are left to it.

      Parameters

      • event: KeyboardEvent

      Returns void

    • Removal takes two presses on the same button rather than a second dialog. The drawer is already over the form, and a confirm dialog over a drawer over a form leaves the user two layers from the thing they are changing.

      Parameters

      • item: FormPanelInventoryItem

      Returns Promise<void>