Aller au contenu
SurfaceDocs
ENCommencer
DocsRéférence du Model

ManagedModelAuthoring · types

Interfaces, valeurs et contrats nommés de ManagedModelAuthoring.

Les types ci-dessous définissent les objets nommés et leurs relations. Les propriétés héritées sont incluses dans les tableaux. Les types dérivés d’un schéma renvoient à sa structure; une déclaration TypeScript ne remplace pas les contrôles sémantiques du compilateur.

ManagedModelAuthorElement

Tree syntax changes placement representation only; the one portable catalogue still owns props and events.

export type ManagedModelAuthorElement = SurfaceCompositionElement extends infer Element
  ? Element extends SurfaceCompositionElement
    ? Omit<Element, 'children' | 'on'> & {
        readonly id: string;
        readonly children?: readonly ManagedModelAuthorElement[];
        readonly on?: Element['on'];
      }
    : never
  : never;

ManagedModelSourcePackage

Explicit source-fragment manifest and its required composition-catalogue dependency.

export type ManagedModelSourcePackage = z.infer<typeof managedModelSourcePackageSchema>;

ManagedModelAuthorFieldControl

A shortcut never supplies a competing binding, selector or option list.

export type ManagedModelAuthorFieldControl = NativeControl | (Omit<NativeControl, 'binding' | 'options' | 'selector'> & {
 readonly fieldPath: `fields/${string}`; readonly binding?: never; readonly options?: never; readonly selector?: never;
});
type ManagedModelAuthorFieldControl = NativeControl | (Omit<NativeControl, "selector" | "binding" | "options"> & { readonly fieldPath: `fields/${string}`; readonly binding?: never; readonly options?: never; readonly selector?: never; });

ManagedModelAuthorScreen

Authored screen selectors and element tree before native composition expansion.

export type ManagedModelAuthorScreen = WorkspaceModelFoundation['uiComposition']['screens'][number] extends infer Screen
 ? Screen extends WorkspaceModelFoundation['uiComposition']['screens'][number]
   ? Omit<Screen, 'composition'> & { readonly tree: ManagedModelAuthorElement } : never : never;

ManagedModelAuthoringSource

Author data is complete and autonomous; only compiler-managed envelopes are omitted.

export type ManagedModelAuthoringSource = Omit<ManagedModelSource, 'contract' | 'managed' | 'foundation'> & {
 readonly foundation?: Omit<WorkspaceModelFoundation, 'contract' | 'uiComposition' | 'presentation' | 'homePresentation' | 'forms'> & {
  readonly presentation: Omit<WorkspaceModelFoundation['presentation'], 'contract'>;
  readonly homePresentation: Omit<WorkspaceModelFoundation['homePresentation'], 'contract'>;
  readonly forms: readonly (Omit<WorkspaceModelFoundation['forms'][number], 'contract' | 'fields'> & {
    readonly fields: readonly ManagedModelAuthorFieldControl[];
  })[];
 };
 readonly flows: readonly ManagedModelAuthorFlow[];
 readonly screens: readonly ManagedModelAuthorScreen[];
};
type ManagedModelAuthoringSource = Omit<ManagedModelSource, "contract" | "managed" | "foundation"> & { readonly foundation?: Omit<WorkspaceModelFoundation, "contract" | "uiComposition" | "presentation" | "homePresentation" | "forms"> & { readonly presentation: Omit<WorkspaceModelFoundation["presentation"], "contract">; readonly homePresentation: Omit<WorkspaceModelFoundation["homePresentation"], "contract">; readonly forms: readonly (Omit<WorkspaceModelFoundation["forms"][number], "contract" | "fields"> & { readonly fields: readonly ManagedModelAuthorFieldControl[]; })[]; }; readonly flows: readonly ManagedModelAuthorFlow[]; readonly screens: readonly ManagedModelAuthorScreen[]; };

Toutes les références

Exemples appliqués : Assembler une définition cohérente

La Form et le profil de fiche référencent les mêmes Fields company, status et notes.

Configuration

Fragment à placer dans forms[]. Propriétés et valeurs admises.

{
  "contract": "WorkspaceForm@2",
  "key": "new-client",
  "label": "Nouveau client",
  "actionKey": "create-client",
  "targetDefinitionPath": "workspace/clients/surface/client",
  "mode": "create",
  "fields": [
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "company",
      "label": "Entreprise",
      "input": "text",
      "binding": {
        "kind": "field",
        "fieldKey": "company"
      },
      "required": true,
      "ruleKeys": [],
      "options": []
    },
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "status",
      "label": "État",
      "input": "choice",
      "binding": {
        "kind": "field",
        "fieldKey": "status"
      },
      "required": true,
      "ruleKeys": [],
      "options": [
        "prospect",
        "active"
      ]
    }
  ],
  "ruleKeys": []
}

Variante et raccordement

Fragment à placer dans presentation.recordProfiles[]. Propriétés et valeurs admises.

{
  "key": "client",
  "definitionPaths": [
    "workspace/clients/surface/client"
  ],
  "editActionKey": "edit-client",
  "identity": {
    "title": {
      "kind": "field",
      "fieldPath": "fields/company"
    },
    "avatar": {
      "kind": "initials",
      "maximumLetters": 2
    },
    "subtitle": {
      "kind": "field",
      "fieldPath": "fields/status"
    }
  },
  "valueLabels": [
    {
      "fieldPath": "fields/status",
      "values": [
        {
          "value": "prospect",
          "label": "Prospect"
        },
        {
          "value": "active",
          "label": "Actif"
        }
      ]
    }
  ],
  "card": {
    "summary": {
      "kind": "field",
      "fieldPath": "fields/notes"
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "metricKeys": [],
    "openLabel": "Ouvrir le client"
  },
  "queryBindings": [],
  "metrics": [],
  "detail": {
    "primaryActionKey": null,
    "creationActionKeys": [],
    "actionKeys": [],
    "sections": [
      {
        "kind": "fields",
        "key": "follow-up",
        "label": "Suivi du client",
        "fieldPaths": [
          "fields/notes",
          "fields/status"
        ]
      }
    ],
    "settings": {
      "fieldPaths": [
        "fields/email"
      ]
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "relatedGroups": [],
    "primaryActionLabel": null
  }
}

Exemple de disposition UI

La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.

  1. Clients · Data
  2. Références · Knowledge
  3. Préparation · Work
  4. Soumissions · Product
DISPOSITION ILLUSTRATIVEApp Clients / Soumissions
SurfaceClients / Atelier NordExemple
ManagedModelAuthoring · typesAssembler une définition cohérente
Clients
01Clients · Data

Fiches et informations de référence

02Références · Knowledge

Tarifs, procédure et sources

03Préparation · Work

Étapes, décisions et résultats

04Soumissions · Product

Livrable durable et ses révisions

Recherchez un concept, un champ ou une action.Esc