definePageLayout() pentru a declara un layout pentru un obiect pe care îl deții sau definePageLayoutTab() pentru a adăuga o singură filă la un layout care există deja (al tău sau un layout standard Twenty).
definePageLayout
Folosește aceasta atunci când deții întreaga pagină de detalii — de obicei pentru un obiect personalizat pe care l-ai definit chiar tu.src/page-layouts/example-record-page-layout.ts
Puncte cheie
typeeste unul dintre'RECORD_INDEX','RECORD_PAGE','DASHBOARD'sau'STANDALONE_PAGE'. Folosiți'RECORD_PAGE'pentru a personaliza vizualizarea de detaliu a unui obiect specific.objectUniversalIdentifierspecifică la ce obiect se aplică această machetă.- Fiecare
tabdefinește o secțiune a paginii cu untitle,positionșilayoutMode:VERTICAL_LISTpentru paginile de înregistrări și paginile independente,GRIDpentru dashboard-uri șiCANVASpentru un singur widget care ar trebui să umple zona de vizualizare a filei. O filăVERTICAL_LISTstivuiește widgeturile pe verticală. Widgeturile încorporate care își gestionează propria derulare, cum ar fi cronologiile, fișierele, notițele, sarcinile și fluxurile de lucru, umplu o zonă de vizualizare; câmpurile, componentele frontale, graficele și alte widgeturi fit-content se redau la înălțimea conținutului sau la înălțimea configurată. O filăGRIDîși aranjează întotdeauna widgeturile ca carduri pe o grilă cu 12 coloane. Un widgetCANVASnu are o poziție explicită; dacă o filă canvas conține mai multe widgeturi, acestea sunt redate la înălțimea conținutului lor în loc să umple zona de vizualizare. - Setează explicit
layoutMode. Dacă îl omiți, vei obțineVERTICAL_LISTpe unSTANDALONE_PAGEșiGRIDîn rest, ceea ce rareori îți dorești pe o pagină de înregistrare. - Fiecare
widgetdintr-o filă poate reda un front component, o listă de relații sau alte tipuri de widgeturi integrate. - Un widget
FRONT_COMPONENTpoate setaheaderCommandMenuItemUniversalIdentifiersla o matrice ordonată de identificatori universali ai elementelor de meniu de comandă din aceeași aplicație. Aceste acțiuni apar ca butoane cu pictograme în antetul cardului widgetului și își păstrează verificările de disponibilitate și de permisiuni la nivel de comandă. Identificatorii trebuie să fie unici și trebuie să se rezolve atunci când aplicația este instalată. positionpe file le controlează ordinea. Folosește valori mai mari (de ex., 50) pentru a plasa filele personalizate după cele integrate.
Widget-uri Câmp
Un widgetFIELD redă un câmp al înregistrării. Pentru câmpurile de relație, acesta poate încorpora și o listă de înregistrări asociate:
fieldMetadataIdprimește identificatorul universal al unui câmp de pe obiectul layout-ului.fieldDisplayModeeste unul dintre'FIELD','CARD','EDITOR','VIEW'sau'TABLE'.TABLEîncorporează o vizualizare care listează înregistrările unui câmp de relație de tip unu-la-mulți.nestedRelationFieldMetadataIdeste opțional și primește identificatorul universal al unui câmp de relație unu-la-mulți de pe obiectul țintă al relației, pentru a afișa în listă înregistrări aflate la două salturi de relație distanță (de ex., o pagină Company care afișează oportunitățile persoanelor companiei sau o pagină Person care afișează oportunitățile companiei persoanei). Primul salt poate fi un câmp de relație unu-la-mulți sau mulți-la-unu, al doilea trebuie să fie unu-la-mulți (relațiile de tip junction nu sunt acceptate) și necesităfieldDisplayMode: 'TABLE'— combinarea lui cu orice alt mod de afișare reprezintă o eroare de validare, deoarece un widget îmbricat este întotdeauna redat ca o vizualizare încorporată.
definePageLayoutTab
Folosește aceasta atunci când vrei doar să adaugi o filă la un layout existent — de exemplu, o filă de analize pe pagina standard Company sau o filă de rezumat AI atașată layoutului obiectului tău.src/page-layouts/example-extra-tab.ts
Puncte cheie
-
pageLayoutUniversalIdentifiereste obligatoriu și trebuie să indice către un layout de pagină care există deja la momentul instalării — fie un layout standard Twenty, fie unul definit de propria ta aplicație. Referințele cross-app către layouturi deținute de o altă aplicație instalată nu sunt acceptate în prezent. Când lipsește layoutul părinte, instalarea eșuează cu o eroare clară de validare. -
Pentru layout-urile standard Twenty, importați identificatorii din
twenty-sdk/define:Fiecare intrare de layout își expune, de asemenea,tabsșiwidgets, astfel încât puteți face referire la orice nivel:Este disponibil și un alias scurtSTANDARD_PAGE_LAYOUT: -
widgetssunt limitate doar la această filă — fac referire la front components, vizualizări etc., exact ca widgeturile definite inline îndefinePageLayout. -
positioncontrolează ordonarea în raport cu filele existente din layoutul țintă. Alege o valoare care să plaseze fila ta acolo unde dorești, relativ la filele predefinite. -
Folosește aceasta în loc de
definePageLayoutatunci când vrei doar să adaugi la un layout existent. FoloseștedefinePageLayoutatunci când deții întregul layout.