Ön uç bileşenlerinin kullanılabileceği yerler
Ön uç bileşenler, Twenty içinde iki konumda işlenebilir:- Yan panel — Headless olmayan ön uç bileşenler, sağ taraftaki yan panelde açılır. Bir ön uç bileşeni komut menüsünden tetiklendiğinde varsayılan davranış budur.
- Widget’lar (panolar ve kayıt sayfaları) — Ön uç bileşenler, sayfa düzenleri içinde widget olarak gömülebilir. Bir pano veya kayıt sayfası düzeni yapılandırılırken kullanıcılar bir ön uç bileşen widget’ı ekleyebilir.
- Onu bir komut menüsü öğesi ile eşleştirin — komut menüsüne (Cmd+K) ve isteğe bağlı olarak sabitlenmiş hızlı işlem olarak kaydeder.
- Onu bir sayfa düzeni içinde widget olarak gömün — bir kaydın ayrıntı sayfasına veya panosuna yerleştirir.
Basit örnek
Bir ön uç bileşenini çalışır halde görmenin en hızlı yolu, onudefineCommandMenuItem ile eşleştirmektir; böylece sayfanın sağ üst köşesinde bir hızlı işlem düğmesi olarak görünür:
src/front-components/hello-world.tsx
src/command-menu-items/hello-world.command-menu-item.ts
yarn twenty dev ile senkronize ettikten sonra (veya tek seferlik bir yarn twenty dev --once çalıştırdıktan sonra), hızlı işlem sayfanın sağ üst köşesinde görünür:

Yapılandırma alanları
| Alan | Zorunlu | Açıklama |
|---|---|---|
universalIdentifier | Evet | Bu bileşen için kalıcı benzersiz kimlik |
component | Evet | Bir React bileşen fonksiyonu |
name | Hayır | Görünen Ad |
description | Hayır | Bileşenin ne yaptığına dair açıklama |
isHeadless | Hayır | Bileşenin görünür bir kullanıcı arayüzü yoksa true olarak ayarlayın (aşağıya bakın) |
Bir ön uç bileşenini bir sayfaya yerleştirme
Komutların ötesinde, bir ön uç bileşenini bir sayfa düzeninde widget olarak ekleyerek doğrudan bir kayıt sayfasına gömebilirsiniz. Ayrıntılar için Sayfa Düzenleri bölümüne bakın.Headless ve headless olmayan
Ön uç bileşenler,isHeadless seçeneğiyle kontrol edilen iki işleme kipiyle gelir:
Headless olmayan (varsayılan) — Bileşen görünür bir kullanıcı arayüzü (UI) oluşturur. Komut menüsünden tetiklendiğinde yan panelde açılır. isHeadless false olduğunda veya belirtilmediğinde bu varsayılan davranıştır.
Headless (isHeadless: true) — Bileşen arka planda görünmez şekilde bağlanır. Yan paneli açmaz. Headless bileşenler, mantığı çalıştırıp ardından kendilerini kaldıran eylemler için tasarlanmıştır — örneğin, bir async görevi çalıştırma, bir sayfaya gitme veya bir onay modalı gösterme. Aşağıda açıklanan SDK Command bileşenleriyle doğal olarak eşleşirler.
src/front-components/sync-tracker.tsx
null döndürdüğü için, Twenty bunun için bir kapsayıcı oluşturmayı atlar — düzende boş alan görünmez. Bileşen yine de tüm hook’lara ve host iletişim API’sine erişime sahiptir.
SDK Command bileşenleri
twenty-sdk paketi, headless ön uç bileşenler için tasarlanmış dört Command yardımcı bileşeni sağlar. Her bileşen bağlandığında bir eylem yürütür, hataları bir snackbar bildirimi göstererek ele alır ve tamamlandığında ön bileşeni otomatik olarak kaldırır.
Bunları twenty-sdk/command içinden içe aktarın:
Command—executeprop’u aracılığıyla async bir geri çağrıyı çalıştırır.CommandLink— Bir uygulama yoluna gider. Props:to,params,queryParams,options.CommandModal— Bir onay modalı açar. Kullanıcı onaylarsaexecutegeri çağrısını yürütür. Props:title,subtitle,execute,confirmButtonText,confirmButtonAccent.CommandOpenSidePanelPage— Belirli bir yan panel sayfasını açar. Props:page,pageTitle,pageIcon.
Command kullanarak komut menüsünden bir eylem çalıştıran headless bir ön uç bileşenin tam örneği:
src/front-components/run-action.tsx
src/command-menu-items/run-action.command-menu-item.ts
CommandModal kullanan bir örnek:
src/front-components/delete-draft.tsx
Bir mantık işlevini çağırma
Ön bileşenler, tarayıcı tarafında izole bir Web Worker içinde çalışırken, mantık işlevleri sunucu tarafında çalışır. İkisi arasında doğrudan, işlem içi bir çağrı yoktur — bunun yerine, bir ön bileşen bir mantık işlevine HTTP üzerinden erişir.httpRouteTriggerSettings ile bildirilen bir mantık işlevi, ${TWENTY_API_URL}/s\<path> altındaki /s/ uç noktasında sunulur. Ön bileşeniniz bu rotayı, Twenty tarafından Worker’a enjekte edilen TWENTY_APP_ACCESS_TOKEN ile kimlik doğrulayan twenty-client-sdk/rest içindeki RestApiClient ile çağırır.
RestApiClient tam da bunun için oluşturulmuştur. Worker ortamından TWENTY_API_URL ve TWENTY_APP_ACCESS_TOKEN değerlerini okur, Authorization: Bearer başlığını ekler, JSON’u serileştirip ayrıştırır ve belirteç veya URL eksik olduğunda ya da yanıt 2xx dışı olduğunda bir RestApiClientError fırlatır — böylece bu şablon kodunu her bileşende yeniden uygulamak zorunda kalmazsınız.
Başsız bir ön bileşen, çağrıyı Command bileşeni aracılığıyla mount sırasında çalıştırabilir ve ardından otomatik olarak unmount olabilir:
src/front-components/sync-prs.tsx
httpRouteTriggerSettings.path değeri, başına /s eklenmiş hâlidir. isAuthRequired: true değerini koruyun; istemci, Twenty’nin bileşeniniz için oluşturduğu uygulama erişim jetonunu sağlar:
src/logic-functions/fetch-prs.logic-function.ts
TWENTY_API_URL ve TWENTY_APP_ACCESS_TOKEN otomatik olarak enjekte edilir — bkz. Uygulama değişkenleri. Gizli uygulama değişkenleri asla ön bileşenlere açığa çıkarılmadığından, API anahtarlarını ve diğer hassas mantığı ön bileşende değil, mantık işlevinin içinde tutun.RestApiClient referansı
RestApiClient öğesini twenty-client-sdk/rest içinden içe aktarın. CoreApiClient ve MetadataApiClient ile aynı istemci ailesine aittir, ancak GraphQL API yerine uygulamanızın HTTP rotalarını hedefler.
| Yöntem | Açıklama |
|---|---|
get(path, options?) | Bir GET isteği gönderir |
post(path, body?, options?) | Bir POST isteği gönderir |
put(path, body?, options?) | Bir PUT isteği gönderir |
patch(path, body?, options?) | Bir PATCH isteği gönderir |
delete(path, options?) | Bir DELETE isteği gönderir |
request(method, path, options?) | Herhangi bir HTTP yöntemiyle genel istek |
options, headers, query (sorgu dizesi parametrelerinin kaydı; null benzeri değerler atlanır) ve signal aracılığıyla bir AbortSignal kabul eder. FormData olmayan bir body nesnesi otomatik olarak JSON’a serileştirilir. 401 durumunda, istemci erişim jetonunu bir kez ana makine (host) üzerinden yeniler ve isteği yeniden dener.
Temel URL ve jeton varsayılan olarak ortamdan çözümlenir. Gerektiğinde — örneğin testlerde — kurucuya (constructor) geçersiz kılmalar (override) iletin:
status, statusText, url ve ayrıştırılmış body değerlerini açığa çıkaran bir RestApiClientError fırlatır:
Çalışma zamanı bağlamına erişme
Bileşeninizin içinde, geçerli kullanıcıya, kayda ve bileşen örneğine erişmek için SDK hook’larını kullanın:src/front-components/record-info.tsx
| Hook | Döndürür | Açıklama |
|---|---|---|
useUserId() | string veya null | Geçerli kullanıcının ID’si |
useSelectedRecordIds() | string[] | Tüm seçili kayıt kimlikleri (hiçbiri seçilmediyse boş dizi) |
useRecordId() | string veya null | Kullanımdan kaldırıldı. Bunun yerine useSelectedRecordIds() kullanın |
useFrontComponentId() | string | Bu bileşen örneğinin ID’si |
useColorScheme() | 'light' veya 'dark' | Ana makine kullanıcı arayüzünün etkin renk şeması (System zaten çözümlenmiştir) |
useFrontComponentExecutionContext(selector) | değişir | Bir seçici işlevle tam yürütme bağlamına erişin |
Uygulama değişkenleri
isSecret: false ile defineApplication() içinde tanımlanan uygulama değişkenleri, getApplicationVariable yardımcı işlevi aracılığıyla ön uç bileşenleri içinde kullanılabilir:
src/front-components/greeting.tsx
process.env aracılığıyla kullanılabilir:
| Değişken | Açıklama |
|---|---|
TWENTY_API_URL | Twenty API’nin temel URL’si |
TWENTY_APP_ACCESS_TOKEN | Uygulamanızın rolüyle sınırlanan kısa ömürlü bir belirteç |
Host iletişim API’si
Ön uç bileşenleri,twenty-sdk’deki işlevleri kullanarak gezinmeyi, modalları ve bildirimleri tetikleyebilir:
| Fonksiyon | Açıklama |
|---|---|
navigate(to, params?, queryParams?, options?) | Uygulamada bir sayfaya git |
openSidePanelPage(params) | Bir yan panel aç |
closeSidePanel() | Yan paneli kapat |
openCommandConfirmationModal(params) | Bir onay iletişim kutusu göster |
enqueueSnackbar(params) | Bir toast bildirimi göster |
unmountFrontComponent() | Bileşeni kaldır (unmount) |
updateProgress(progress) | Bir ilerleme göstergesini güncelle |
src/front-components/archive-record.tsx
Birden çok kayıtla çalışma
Birden çok seçili kaydı yönetmek içinuseSelectedRecordIds() kullanın. Bu, toplu işlemler için kullanışlıdır:
src/front-components/bulk-export.tsx
Genel varlıklar
Ön uç bileşenleri,getPublicAssetUrl kullanarak uygulamanın public/ dizinindeki dosyalara erişebilir:
Stil
Ön uç bileşenleri birden fazla biçimlendirme yaklaşımını destekler. Şunları kullanabilirsiniz:- Satır içi stiller —
style={{ color: 'red' }} - Twenty UI bileşenleri —
twenty-sdk/uiiçinden içe aktarın (Button, Tag, Status, Chip, Avatar ve daha fazlası) - Emotion —
@emotion/reactile CSS-in-JS - Styled-components —
styled.divkalıpları - Tailwind CSS — yardımcı sınıflar
- React ile uyumlu herhangi bir CSS-in-JS kitaplığı