Skip to main content
Frontendové komponenty jsou React komponenty, které se vykreslují přímo v uživatelském rozhraní Twenty. Běží v izolovaném Web Workeru s využitím Remote DOM — váš kód je sandboxovaný, ale vykresluje se nativně na stránce, nikoli v iframu.

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 pole command 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
Po synchronizaci pomocí 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:
Tlačítko rychlé akce v pravém horním rohu
Kliknutím na něj vykreslíte komponentu přímo ve stránce.

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 volbou isHeadless: 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
Protože komponenta vrací 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íček twenty-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 prop execute.
  • CommandLink — Naviguje na cestu v aplikaci. Props: to, params, queryParams, options.
  • CommandModal — Otevře potvrzovací modální okno. Pokud uživatel potvrdí, provede callback execute. Props: title, subtitle, execute, confirmButtonText, confirmButtonAccent.
  • CommandOpenSidePanelPage — Otevře konkrétní stránku postranního panelu. Props: page, pageTitle, pageIcon.
Zde je kompletní příklad headless front-endové komponenty, která pomocí Command spouští akci z menu příkazů:
src/front-components/run-action.tsx
A příklad s použitím 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
Dostupné hooky:

API komunikace s hostitelem

Frontendové komponenty mohou pomocí funkcí z twenty-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í pole command 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

Pole conditionalAvailabilityExpression 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:
Kontextové proměnné — reprezentují aktuální stav stránky: Operátory — kombinují proměnné do logických výrazů:

Veřejné soubory

Frontendové komponenty mohou přistupovat k souborům ze složky aplikace public/ pomocí getPublicAssetUrl:
Podrobnosti viz sekci veřejných souborů.

Styling

Frontendové komponenty podporují více přístupů ke stylování. Můžete použít:
  • Inline stylystyle={{ 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