Skip to main content
I componenti front-end sono componenti React che vengono renderizzati direttamente all’interno della UI di Twenty. Vengono eseguiti in un Web Worker isolato utilizzando Remote DOM — il tuo codice è in sandbox ma viene renderizzato in modo nativo nella pagina, non in un iframe.

Dove possono essere utilizzati i componenti front.

I componenti front possono essere renderizzati in due posizioni all’interno di Twenty:
  • Pannello laterale — I componenti front non headless si aprono nel pannello laterale destro. Questo è il comportamento predefinito quando un componente front viene avviato dal menu comandi.
  • Widget (dashboard e pagine dei record) — I componenti front possono essere incorporati come widget all’interno dei layout di pagina. Quando si configura una dashboard o il layout di una pagina record, gli utenti possono aggiungere un widget del componente front.

Esempio di base

Il modo più rapido per vedere in azione un componente front-end è registrarlo come comando. Aggiungere un campo command con isPinned: true lo fa apparire come pulsante di azione rapida nell’angolo in alto a destra della pagina — nessun layout di pagina necessario:
src/front-components/hello-world.tsx
Dopo la sincronizzazione con yarn twenty dev (o eseguendo una volta sola yarn twenty dev --once), l’azione rapida appare nell’angolo in alto a destra della pagina:
Pulsante di azione rapida nell'angolo in alto a destra
Fai clic per renderizzare il componente in linea.

Campi di configurazione

Posizionare un componente front-end su una pagina

Oltre ai comandi, puoi incorporare un componente front-end direttamente in una pagina di record aggiungendolo come widget in un layout di pagina. Vedi la sezione definePageLayout per i dettagli.

Headless vs non headless

I componenti front prevedono due modalità di rendering controllate dall’opzione isHeadless: Non headless (predefinito) — Il componente renderizza un’interfaccia utente visibile. Quando viene avviato dal menu comandi, si apre nel pannello laterale. Questo è il comportamento predefinito quando isHeadless è false o omesso. Headless (isHeadless: true) — Il componente viene montato in modo invisibile in background. Non apre il pannello laterale. I componenti headless sono pensati per azioni che eseguono una logica e poi si smontano — ad esempio, eseguire un’attività asincrona, navigare a una pagina o mostrare una finestra modale di conferma. Si abbinano naturalmente ai componenti Command dell’SDK descritti di seguito.
src/front-components/sync-tracker.tsx
Poiché il componente restituisce null, Twenty evita di renderizzare un contenitore per esso — non appare alcuno spazio vuoto nel layout. Il componente ha comunque accesso a tutti gli hook e all’API di comunicazione con l’host.

Componenti Command dell’SDK

Il pacchetto twenty-sdk fornisce quattro componenti di supporto Command progettati per i componenti front headless. Ogni componente esegue un’azione al montaggio, gestisce gli errori mostrando una notifica snackbar e smonta automaticamente il componente front al termine. Importali da twenty-sdk/command:
  • Command — Esegue una callback asincrona tramite la prop execute.
  • CommandLink — Naviga verso un percorso dell’app. Props: to, params, queryParams, options.
  • CommandModal — Apre una finestra modale di conferma. Se l’utente conferma, esegue la callback execute. Props: title, subtitle, execute, confirmButtonText, confirmButtonAccent.
  • CommandOpenSidePanelPage — Apre una specifica pagina del pannello laterale. Props: page, pageTitle, pageIcon.
Ecco un esempio completo di componente front headless che usa Command per eseguire un’azione dal menu comandi:
src/front-components/run-action.tsx
E un esempio che usa CommandModal per chiedere conferma prima di eseguire:
src/front-components/delete-draft.tsx

Accesso al contesto di runtime

All’interno del tuo componente, usa gli hook dell’SDK per accedere all’utente corrente, al record e all’istanza del componente:
src/front-components/record-info.tsx
Hook disponibili:

API di comunicazione con l’host

I componenti front-end possono attivare navigazione, modali e notifiche utilizzando funzioni da twenty-sdk: Ecco un esempio che usa l’API host per mostrare una snackbar e chiudere il pannello laterale dopo il completamento di un’azione:
src/front-components/archive-record.tsx

Opzioni del comando

Aggiungere un campo command a defineFrontComponent registra il componente nel menu comandi (Cmd+K). Se isPinned è true, compare anche come pulsante di azione rapida nell’angolo in alto a destra della pagina.

Espressioni di disponibilità condizionale

Il campo conditionalAvailabilityExpression consente di controllare quando un comando è visibile in base al contesto della pagina corrente. Importa variabili tipizzate e operatori da twenty-sdk per costruire espressioni:
Variabili di contesto — rappresentano lo stato corrente della pagina: Operatori — combinano variabili in espressioni booleane:

Asset pubblici

I componenti front-end possono accedere ai file dalla directory public/ dell’app utilizzando getPublicAssetUrl:
Vedi la sezione sugli asset pubblici per i dettagli.

Stile

I componenti front-end supportano diversi approcci di styling. Puoi usare:
  • Stili inlinestyle={{ color: 'red' }}
  • Componenti Twenty UI — importali da twenty-sdk/ui (Button, Tag, Status, Chip, Avatar e altro)
  • Emotion — CSS-in-JS con @emotion/react
  • Styled-components — pattern styled.div
  • Tailwind CSS — classi di utilità
  • Qualsiasi libreria CSS-in-JS compatibile con React