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[]; };
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.
- Clients · Data
- Références · Knowledge
- Préparation · Work
- Soumissions · Product
Fiches et informations de référence
Tarifs, procédure et sources
Étapes, décisions et résultats
Livrable durable et ses révisions