Kde lze použít frontendové komponenty
Frontendové komponenty se mohou vykreslovat na dvou místech v rámci Twenty:- Postranní panel — Frontendové komponenty, které nejsou headless, se otevírají v pravém postranním panelu. Toto je výchozí chování, když je frontendová komponenta vyvolána z příkazového menu.
- Widgety (nástěnky a stránky záznamů) — Frontendové komponenty lze vkládat jako widgety do rozložení stránek. Při konfiguraci nástěnky nebo rozložení stránky záznamu mohou uživatelé přidat widget frontendové komponenty.
Základní příklad
Nejrychlejší způsob, jak vidět frontendovou komponentu v akci, je zaregistrovat ji jako příkaz. Přidáním polecommand s isPinned: true se zobrazí jako tlačítko rychlé akce v pravém horním rohu stránky — není potřeba žádné rozvržení stránky:
src/front-components/hello-world.tsx
yarn twenty dev (nebo po jednorázovém spuštění yarn twenty dev --once) se rychlá akce zobrazí v pravém horním rohu stránky:

Konfigurační pole
Umístění frontendové komponenty na stránku
Mimo příkazy můžete frontendovou komponentu vložit přímo na stránku záznamu přidáním jako widget v rozvržení stránky. Podrobnosti viz sekce definePageLayout.Headless vs. ne-headless
Front-endové komponenty existují ve dvou režimech vykreslování řízených volbouisHeadless:
Ne-headless (výchozí) — Komponenta vykreslí viditelné uživatelské rozhraní. Po vyvolání z menu příkazů se otevře v postranním panelu. Toto je výchozí chování, když je isHeadless false nebo když tato volba není uvedena.
Headless (isHeadless: true) — Komponenta se neviditelně inicializuje na pozadí. Neotevírá postranní panel. Headless komponenty jsou určené pro akce, které provedou logiku a poté se odpojí — například spuštění asynchronního úkolu, navigaci na stránku nebo zobrazení potvrzovacího modálního okna. Přirozeně se hodí ke komponentám SDK Command popsaným níže.
src/front-components/sync-tracker.tsx
null, Twenty přeskočí vykreslení kontejneru — v rozvržení se neobjeví žádné prázdné místo. Komponenta má však stále přístup ke všem hookům a API komunikace s hostitelem.
Komponenty SDK Command
Balíčektwenty-sdk poskytuje čtyři pomocné komponenty Command navržené pro headless front-endové komponenty. Každá komponenta při připojení provede akci, chyby zpracuje zobrazením oznámení ve snackbaru a po dokončení automaticky odpojí front-endovou komponentu.
Importujte je z twenty-sdk/command:
Command— Spustí asynchronní callback přes propexecute.CommandLink— Naviguje na cestu v aplikaci. Props:to,params,queryParams,options.CommandModal— Otevře potvrzovací modální okno. Pokud uživatel potvrdí, provede callbackexecute. Props:title,subtitle,execute,confirmButtonText,confirmButtonAccent.CommandOpenSidePanelPage— Otevře konkrétní stránku postranního panelu. Props:page,pageTitle,pageIcon.
Command spouští akci z menu příkazů:
src/front-components/run-action.tsx
CommandModal k vyžádání potvrzení před provedením:
src/front-components/delete-draft.tsx
Přístup k běhovému kontextu
Uvnitř komponenty použijte hooky SDK pro přístup k aktuálnímu uživateli, záznamu a instanci komponenty:src/front-components/record-info.tsx
API komunikace s hostitelem
Frontendové komponenty mohou pomocí funkcí ztwenty-sdk vyvolávat navigaci, modály a oznámení:
Zde je příklad, který používá hostitelské API k zobrazení snackbaru a zavření postranního panelu po dokončení akce:
src/front-components/archive-record.tsx
Možnosti příkazu
Přidání polecommand do defineFrontComponent zaregistruje komponentu v příkazovém menu (Cmd+K). Pokud je isPinned nastaveno na true, zobrazí se také jako tlačítko rychlé akce v pravém horním rohu stránky.
Výrazy podmíněné dostupnosti
PoleconditionalAvailabilityExpression vám umožní řídit viditelnost příkazu na základě aktuálního kontextu stránky. Pro sestavení výrazů importujte typované proměnné a operátory z twenty-sdk:
Operátory — kombinují proměnné do logických výrazů:
Veřejné soubory
Frontendové komponenty mohou přistupovat k souborům ze složky aplikacepublic/ pomocí getPublicAssetUrl:
Styling
Frontendové komponenty podporují více přístupů ke stylování. Můžete použít:- Inline styly —
style={{ color: 'red' }} - Komponenty Twenty UI — import z
twenty-sdk/ui(Button, Tag, Status, Chip, Avatar a další) - Emotion — CSS-in-JS s
@emotion/react - Styled-components — vzory
styled.div - Tailwind CSS — utilitní třídy
- Jakákoli CSS-in-JS knihovna kompatibilní s Reactem