src/command-menu-items/open-dashboard.command-menu-item.ts
Konfigurationsfelder
| Feld | Erforderlich | Beschreibung |
|---|---|---|
universalIdentifier | Ja | Stabile eindeutige ID für den Befehl |
label | Ja | Vollständiges Label, das im Befehlsmenü (Cmd+K) angezeigt wird |
frontComponentUniversalIdentifier | Ja | Der universalIdentifier der Front-Komponente, die dieser Befehl öffnet |
shortLabel | Nein | Kürzeres Label, das auf der angehefteten Schnellaktionsschaltfläche angezeigt wird |
icon | Nein | Neben dem Label angezeigter Icon-Name (z. B. ‘IconBolt’, ‘IconSend’) |
isPinned | Nein | Bei true wird der Befehl als Schnellaktionsschaltfläche oben rechts auf der Seite angezeigt |
availabilityType | Nein | Steuert, wo der Befehl erscheint: ‘GLOBAL’ (immer verfügbar), ‘RECORD_SELECTION’ (nur wenn Datensätze ausgewählt sind) oder ‘FALLBACK’ (wird angezeigt, wenn keine anderen Befehle passen) |
availabilityObjectUniversalIdentifier | Nein | Beschränken Sie den Befehl auf Seiten eines bestimmten Objekttyps (z. B. nur bei Company-Datensätzen) |
conditionalAvailabilityExpression | Nein | Ein boolescher Ausdruck, der die Sichtbarkeit dynamisch steuert (siehe unten) |
Headless-Befehle
Ein Befehlsmenü-Eintrag, der mit einer Headless-Front-Komponente gekoppelt ist, ist die idiomatische Art, eine One-Click-Aktion bereitzustellen – Code ausführen, navigieren oder bestätigen und ausführen. Die Seite „Front Components“ behandelt die SDK Command-Komponenten (Command, CommandLink, CommandModal, CommandOpenSidePanelPage), die das Action-and-Unmount-Muster handhaben.
Ein typischer Ablauf:
src/front-components/run-action.tsx
src/command-menu-items/run-action.command-menu-item.ts
Bedingte Verfügbarkeitsausdrücke
Mit dem FeldconditionalAvailabilityExpression können Sie basierend auf dem aktuellen Seitenkontext steuern, wann ein Befehl sichtbar ist. Importieren Sie typisierte Variablen und Operatoren aus twenty-sdk, um Ausdrücke zu erstellen:
src/command-menu-items/bulk-update.command-menu-item.ts
RECORD_SELECTION impliziert bereits eine nichtleere Auswahl — verwende numberOfSelectedRecords nur für bestimmte Zählwerte (z. B. >= 2).Kontextvariablen
Diese repräsentieren den aktuellen Zustand der Seite:| Variable | Typ | Beschreibung |
|---|---|---|
pageType | string | Aktueller Seitentyp (z. B. ‘RecordIndexPage’, ‘RecordShowPage’) |
isInSidePanel | boolean | Ob die Komponente in einem Seitenpanel gerendert wird |
numberOfSelectedRecords | number | Anzahl der aktuell ausgewählten Datensätze |
isSelectAll | boolean | Ob „Alle auswählen“ aktiv ist |
selectedRecords | array | Die ausgewählten Datensatzobjekte |
favoriteRecordIds | array | IDs der favorisierten Datensätze |
objectPermissions | object | Berechtigungen für den aktuellen Objekttyp |
targetObjectReadPermissions | object | Leseberechtigungen für das Zielobjekt |
targetObjectWritePermissions | object | Schreibberechtigungen für das Zielobjekt |
featureFlags | object | Aktive Feature-Flags |
objectMetadataItem | object | Metadaten des aktuellen Objekttyps |
hasAnySoftDeleteFilterOnView | boolean | Ob die aktuelle Ansicht einen Soft-Delete-Filter hat |
Operatoren
Kombinieren Sie Variablen zu booleschen Ausdrücken:| Operator | Beschreibung |
|---|---|
isDefined(value) | true, wenn der Wert nicht null/undefined ist |
isNonEmptyString(value) | true, wenn der Wert eine nicht leere Zeichenfolge ist |
includes(array, value) | true, wenn das Array den Wert enthält |
includesEvery(array, prop, value) | true, wenn die Eigenschaft jedes Elements den Wert enthält |
every(array, prop) | true, wenn die Eigenschaft bei jedem Element truthy ist |
everyDefined(array, prop) | true, wenn die Eigenschaft bei jedem Element definiert ist |
everyEquals(array, prop, value) | true, wenn die Eigenschaft bei jedem Element dem Wert entspricht |
some(array, prop) | true, wenn die Eigenschaft bei mindestens einem Element truthy ist |
someDefined(array, prop) | true, wenn die Eigenschaft bei mindestens einem Element definiert ist |
someEquals(array, prop, value) | true, wenn die Eigenschaft bei mindestens einem Element dem Wert entspricht |
someNonEmptyString(array, prop) | true, wenn die Eigenschaft bei mindestens einem Element eine nicht leere Zeichenfolge ist |
none(array, prop) | true, wenn die Eigenschaft bei jedem Element falsy ist |
noneDefined(array, prop) | true, wenn die Eigenschaft bei jedem Element undefined ist |
noneEquals(array, prop, value) | true, wenn die Eigenschaft bei keinem Element dem Wert entspricht |