diff --git a/packages/twenty-docs/l/ar/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/ar/developers/extend/apps/layout/page-layouts.mdx index 3825465001..9f29733bf1 100644 --- a/packages/twenty-docs/l/ar/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/ar/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * يمكن لكل `widget` داخل لسان أن يعرض [front component](/l/ar/developers/extend/apps/layout/front-components)، أو قائمة علاقات، أو أنواعًا أخرى من عناصر الواجهة (widgets) المدمجة. * `position` على الألسنة يتحكّم في ترتيبها. استخدم قيمًا أعلى (مثل 50) لوضع الألسنة المخصّصة بعد الألسنة المدمجة. +### عناصر واجهة الحقول + +عنصر واجهة `FIELD` يعرض حقلاً واحداً من السجل. لحقول العلاقات يمكنه أيضاً تضمين قائمة من السجلات ذات الصلة: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` يأخذ المعرف العالمي لحقل على كائن المخطط. +* `fieldDisplayMode` يكون واحداً من `'FIELD'`، `'CARD'`، `'EDITOR'`، `'VIEW'` أو `'TABLE'`. `TABLE` يضمّن عرضاً يسرد السجلات لحقل علاقة من نوع واحد إلى متعدد. +* `nestedRelationFieldMetadataId` اختياري، ويأخذ المعرّف العالمي لحقل علاقة من نوع واحد‑إلى‑متعدد على الكائن الهدف للعلاقة، وذلك لسرد السجلات التي تبعد قفزتين في سلسلة العلاقات (مثل صفحة شركة تسرد الفرص الخاصة بأشخاص الشركة، أو صفحة شخص تسرد الفرص الخاصة بشركة الشخص). يمكن أن تكون القفزة الأولى حقل علاقة من نوع واحد‑إلى‑متعدد أو من نوع متعدد‑إلى‑واحد، بينما يجب أن تكون القفزة الثانية من نوع واحد‑إلى‑متعدد (علاقات الوصل غير مدعومة)، ويتطلب ذلك `fieldDisplayMode: 'TABLE'` — إذ يُعد الجمع بينه وبين أي نمط عرض آخر خطأ في التحقق من الصحة، نظرًا لأن الودجة المتداخلة يتم عرضها دائمًا كعرض مضمن. + ## definePageLayoutTab استخدم هذا عندما تريد فقط **إضافة** لسان إلى تخطيط موجود — على سبيل المثال، لسان تحليلات في صفحة Company القياسية، أو لسان ملخص بالذكاء الاصطناعي مرفق بتخطيط الكائن الخاص بك. diff --git a/packages/twenty-docs/l/ar/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/ar/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 641cdb2c6e..d9ecf719a6 100644 --- a/packages/twenty-docs/l/ar/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/ar/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -280,6 +280,9 @@ export default definePageLayout({ يخزن حقل "RICH_TEXT" كتلة المحرر JSON وإسقاط Markdown على حد سواء. خط أنابيب التوليد يقرأ إسقاط الـ Markdown هذا، لذا فإن العناصر النائبة وملف PDF وصفحة الويب القابلة للمشاركة تستمر جميعها في العمل دون تغيير — راجع الملف الكامل [`template-record.page-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +تدعم عناصر واجهة المستخدم `FIELD` أوضاع عرض وخيارات أخرى أيضًا، بما في ذلك +سرد سجلات علاقة متداخلة على بعد مستويين — راجع +[مرجع عنصر واجهة مستخدم الحقل](/l/ar/developers/extend/apps/layout/page-layouts#field-widgets). الآن المحررون يكتبون قوالب في محرر نص غني مناسب: diff --git a/packages/twenty-docs/l/cs/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/cs/developers/extend/apps/layout/page-layouts.mdx index 8f78b07d07..fed4190142 100644 --- a/packages/twenty-docs/l/cs/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/cs/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Každý `widget` uvnitř karty může vykreslit [front component](/l/cs/developers/extend/apps/layout/front-components), seznam relací nebo jiné vestavěné typy widgetů. * `position` na kartách určuje jejich pořadí. Použijte vyšší hodnoty (např. 50) pro umístění vlastních karet za vestavěné. +### Widgety polí + +Widget `FIELD` vykresluje jedno pole záznamu. U relačních polí může také vložit seznam souvisejících záznamů: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` přijímá univerzální identifikátor pole na objektu daného rozložení. +* `fieldDisplayMode` je jednou z hodnot `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'` nebo `'TABLE'`. `TABLE` vkládá zobrazení, které vypisuje záznamy relačního pole typu 1:N. +* `nestedRelationFieldMetadataId` je volitelný a přijímá univerzální identifikátor pole relace typu 1:N na cílovém objektu relace, aby bylo možné vypsat záznamy o dva relační skoky dál (např. stránka Společnosti, která vypisuje příležitosti lidí dané společnosti, nebo stránka Osoby, která vypisuje příležitosti společnosti dané osoby). První skok může být relační pole typu 1:N nebo N:1, druhý musí být 1:N (spojovací relace nejsou podporovány) a vyžaduje `fieldDisplayMode: 'TABLE'` — kombinace s jakýmkoli jiným režimem zobrazení je validační chyba, protože vnořený widget se vždy vykresluje jako vložené zobrazení. + ## definePageLayoutTab Použijte to, když chcete do existujícího rozvržení pouze **přidat** kartu – například kartu analytiky na standardní stránce Company nebo kartu se souhrnem AI připojenou k rozvržení vašeho vlastního objektu. diff --git a/packages/twenty-docs/l/cs/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/cs/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index f7e5cc22f5..64be5d282e 100644 --- a/packages/twenty-docs/l/cs/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/cs/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -291,6 +291,9 @@ projekci. Plynovod pro výrobu čte tyto Markdown projekce, takže zástupné symboly, PDF, a sdílitelná webová stránka všechny nefungují beze změny — viz celý [`template-record. age-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +Widgety `FIELD` podporují také další režimy zobrazení a možnosti, včetně +výpisu záznamů vnořené relace vzdálené o dva kroky — viz +[referenční dokumentaci k widgetu Field](/l/cs/developers/extend/apps/layout/page-layouts#field-widgets). Nyní editoři píší šablony v řádném editoru s bohatým textem: diff --git a/packages/twenty-docs/l/de/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/de/developers/extend/apps/layout/page-layouts.mdx index a8e9f388c8..0b13f37189 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Jedes `widget` innerhalb eines Tabs kann eine [Frontend-Komponente](/l/de/developers/extend/apps/layout/front-components), eine Relationenliste oder andere eingebaute Widget-Typen rendern. * `position` auf Tabs steuert deren Reihenfolge. Verwenden Sie höhere Werte (z. B. 50), um benutzerdefinierte Tabs hinter den integrierten zu platzieren. +### Feld-Widgets + +Ein `FIELD`-Widget rendert ein Feld des Datensatzes. Bei Relationsfeldern kann es auch eine Liste verwandter Datensätze einbetten: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` nimmt den universellen Bezeichner eines Feldes am Objekt des Layouts. +* `fieldDisplayMode` ist eines von `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'` oder `'TABLE'`. `TABLE` bettet eine Ansicht ein, die die Datensätze eines 1:n-Relationsfeldes auflistet. +* `nestedRelationFieldMetadataId` ist optional und nimmt den universellen Bezeichner eines Eins-zu-viele-Beziehungsfelds auf dem Beziehungszielobjekt entgegen, um Datensätze aufzulisten, die zwei Beziehungssprünge entfernt sind (z. B. eine Company-Seite, die die Opportunities der Personen des Unternehmens auflistet, oder eine Person-Seite, die die Opportunities des Unternehmens der Person auflistet). Der erste Sprung kann ein Eins-zu-viele- oder ein Viele-zu-eins-Beziehungsfeld sein, der zweite muss Eins-zu-viele sein (Junction-Beziehungen werden nicht unterstützt), und es erfordert `fieldDisplayMode: 'TABLE'` — die Kombination mit jedem anderen Anzeigemodus ist ein Validierungsfehler, da ein verschachteltes Widget immer als eingebettete Ansicht gerendert wird. + ## definePageLayoutTab Verwenden Sie dies, wenn Sie nur einen Tab zu einem vorhandenen Layout **hinzufügen** möchten – zum Beispiel einen Analytics-Tab auf der standardmäßigen Company-Seite oder einen KI-Zusammenfassungs-Tab, der an das Layout Ihres eigenen Objekts angehängt ist. diff --git a/packages/twenty-docs/l/de/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/de/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index d16a95619e..5e5b340e4a 100644 --- a/packages/twenty-docs/l/de/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/de/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -290,6 +290,9 @@ Projektion. Die Generation-Pipeline liest diese Markdown-Projektion, also Platzhalter, die PDF, und die freigebbare Webseite arbeiten alle unverändert — sehen Sie den vollständigen [`template-record. age-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +`FIELD`-Widgets unterstützen auch andere Darstellungsmodi und Optionen, darunter +das Auflisten von Datensätzen einer verschachtelten Beziehung, die zwei Ebenen entfernt ist — siehe die +[Field-Widget-Referenz](/l/de/developers/extend/apps/layout/page-layouts#field-widgets). Jetzt schreiben Editoren Vorlagen in einem korrekten Rich-Text-Editor: diff --git a/packages/twenty-docs/l/es/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/es/developers/extend/apps/layout/page-layouts.mdx index 8dcbee3521..a1a32c6263 100644 --- a/packages/twenty-docs/l/es/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/es/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Cada `widget` dentro de una pestaña puede renderizar un [componente de frontend](/l/es/developers/extend/apps/layout/front-components), una lista de relaciones u otros tipos de widget integrados. * `position` en las pestañas controla su orden. Usa valores más altos (p. ej., 50) para colocar pestañas personalizadas después de las integradas. +### Widgets de campos + +Un widget `FIELD` representa un campo del registro. Para los campos de relación, también puede incrustar una lista de registros relacionados: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` toma el identificador universal de un campo en el objeto del layout. +* `fieldDisplayMode` es uno de `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'` o `'TABLE'`. `TABLE` incrusta una vista que lista los registros de un campo de relación de uno a muchos. +* `nestedRelationFieldMetadataId` es opcional y toma el identificador universal de un campo de relación de uno a muchos en el objeto de destino de la relación, para enumerar registros a dos saltos de relación (por ejemplo, una página de Company que enumera las oportunidades de las personas de la compañía, o una página de Person que enumera las oportunidades de la compañía de la persona). El primer salto puede ser un campo de relación de uno a muchos o de muchos a uno, el segundo debe ser de uno a muchos (las relaciones de unión no son compatibles) y requiere `fieldDisplayMode: 'TABLE'` — combinarlo con cualquier otro modo de visualización es un error de validación, ya que un widget anidado siempre se representa como una vista incrustada. + ## definePageLayoutTab Usa esto cuando solo quieras **agregar** una pestaña a un layout existente; por ejemplo, una pestaña de analíticas en la página estándar de Company o una pestaña de resumen de IA añadida al layout de tu propio objeto. diff --git a/packages/twenty-docs/l/es/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/es/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 57c8f090bc..f57ce29935 100644 --- a/packages/twenty-docs/l/es/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/es/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -290,6 +290,9 @@ de Markdown. La generación de pipeline lee que Markdown proyecta, así que marcadores de posición, el PDF, y la página web compartible siguen funcionando sin cambios — vea el completo [`template-record. age-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +Los widgets de `FIELD` también admiten otros modos de visualización y opciones, incluido +listar registros de una relación anidada a dos saltos de distancia — consulta la +[referencia del widget de campo](/l/es/developers/extend/apps/layout/page-layouts#field-widgets). Ahora editores escriben plantillas en un editor de texto rich: diff --git a/packages/twenty-docs/l/fr/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/fr/developers/extend/apps/layout/page-layouts.mdx index b6b8ac8f08..f63325d613 100644 --- a/packages/twenty-docs/l/fr/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/fr/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Chaque `widget` à l'intérieur d'un onglet peut afficher un [front component](/l/fr/developers/extend/apps/layout/front-components), une liste de relations ou d'autres types de widgets intégrés. * La `position` des onglets contrôle leur ordre. Utilisez des valeurs plus élevées (p. ex., 50) pour placer les onglets personnalisés après les onglets intégrés. +### Widgets des champs + +Un widget `FIELD` affiche un champ de l’enregistrement. Pour les champs de relation, il peut également intégrer une liste d’enregistrements liés : + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` prend l’identifiant universel d’un champ sur l’objet de la mise en page. +* `fieldDisplayMode` est l’une des valeurs suivantes : `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'` ou `'TABLE'`. `TABLE` intègre une vue listant les enregistrements d’un champ de relation un-à-plusieurs. +* `nestedRelationFieldMetadataId` est facultatif et prend l’identifiant universel d’un champ de relation un-à-plusieurs sur l’objet cible de la relation, afin de lister des enregistrements à deux sauts de relation (par exemple, une page Entreprise listant les opportunités des personnes de l’entreprise, ou une page Personne listant les opportunités de l’entreprise de la personne). Le premier saut peut être un champ de relation un-à-plusieurs ou plusieurs-à-un, le second doit être un-à-plusieurs (les relations de jonction ne sont pas prises en charge), et cela nécessite `fieldDisplayMode: 'TABLE'` — le combiner avec tout autre mode d’affichage constitue une erreur de validation, puisqu’un widget imbriqué est toujours rendu comme une vue intégrée. + ## definePageLayoutTab Utilisez ceci lorsque vous voulez uniquement ajouter un onglet à une mise en page existante — par exemple, un onglet d'analyse sur la page standard Company, ou un onglet de résumé d'IA rattaché à la mise en page de votre propre objet. diff --git a/packages/twenty-docs/l/fr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/fr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 73467d599b..cbe713af04 100644 --- a/packages/twenty-docs/l/fr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/fr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -288,6 +288,7 @@ Un champ `RICH_TEXT` stocke à la fois le bloc JSON de l'éditeur et une project placeholders, le PDF, et la page web partageable fonctionnent tous de façon inchangée — voir [`template-record. age-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +Les widgets `FIELD` prennent également en charge d'autres modes d'affichage et options, notamment l’énumération des enregistrements d’une relation imbriquée à deux sauts — voir la [référence des widgets de champ](/l/fr/developers/extend/apps/layout/page-layouts#field-widgets). Maintenant, les éditeurs écrivent des modèles dans un éditeur de texte riche approprié: diff --git a/packages/twenty-docs/l/it/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/it/developers/extend/apps/layout/page-layouts.mdx index 19be5c48cd..c2a661ca3c 100644 --- a/packages/twenty-docs/l/it/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/it/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Ogni `widget` all'interno di una scheda può renderizzare un [front component](/l/it/developers/extend/apps/layout/front-components), un elenco di relazioni o altri tipi di widget integrati. * `position` sulle schede controlla il loro ordine. Usa valori più alti (ad es., 50) per posizionare le schede personalizzate dopo quelle integrate. +### Widget dei campi + +Un widget `FIELD` esegue il rendering di un campo del record. Per i campi di relazione può anche incorporare un elenco di record correlati: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` accetta l'identificatore universale di un campo sull'oggetto del layout. +* `fieldDisplayMode` può essere uno tra `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'` o `'TABLE'`. `TABLE` incorpora una vista che elenca i record di un campo di relazione uno-a-molti. +* `nestedRelationFieldMetadataId` è facoltativo e accetta l'identificatore universale di un campo di relazione uno-a-molti sull'oggetto di destinazione della relazione, per elencare i record a due salti di relazione di distanza (ad es. una pagina Company che elenca le opportunità delle persone dell'azienda, o una pagina Person che elenca le opportunità dell'azienda della persona). Il primo salto può essere un campo di relazione uno-a-molti o molti-a-uno, il secondo deve essere uno-a-molti (le relazioni di giunzione non sono supportate) e richiede `fieldDisplayMode: 'TABLE'` — combinarlo con qualsiasi altra modalità di visualizzazione genera un errore di convalida, poiché un widget annidato viene sempre renderizzato come una vista incorporata. + ## definePageLayoutTab Usa questo quando vuoi solo **aggiungere** una scheda a un layout esistente — per esempio, una scheda di analisi sulla pagina Company standard, o una scheda di riepilogo AI collegata al layout del tuo oggetto. diff --git a/packages/twenty-docs/l/it/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/it/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 52981e975e..76a6cde583 100644 --- a/packages/twenty-docs/l/it/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/it/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -291,6 +291,7 @@ Un campo `RICH_TEXT` memorizza sia il blocco dell'editor JSON che una proiezione segnaposti, il PDF, e la pagina web condivisibile tutti continuano a lavorare invariato — vedere il completo [`template-record. age-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +I widget `FIELD` supportano anche altre modalità di visualizzazione e opzioni, incluso l'elenco dei record di una relazione annidata a due passaggi di distanza — vedi il [riferimento ai widget field](/l/it/developers/extend/apps/layout/page-layouts#field-widgets). Ora gli editori scrivono i modelli in un corretto editor di testo ricco: diff --git a/packages/twenty-docs/l/ja/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/ja/developers/extend/apps/layout/page-layouts.mdx index 6b240d5da8..74b8018a98 100644 --- a/packages/twenty-docs/l/ja/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/ja/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * タブ内の各 `widget` は、[front component](/l/ja/developers/extend/apps/layout/front-components)、リレーションリスト、その他のビルトインウィジェットタイプをレンダリングできます。 * タブの `position` は表示順を制御します。 組み込みタブの後にカスタムタブを配置するには、より大きな値(例:50)を使用します。 +### フィールド ウィジェット + +`FIELD` ウィジェットは、レコードの 1 つのフィールドをレンダリングします。 リレーションフィールドの場合、関連レコードの一覧を埋め込むこともできます。 + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` は、レイアウトのオブジェクト上のフィールドのユニバーサル識別子を受け取ります。 +* `fieldDisplayMode` は `'FIELD'`、`'CARD'`、`'EDITOR'`、`'VIEW'`、`'TABLE'` のいずれかです。 `TABLE` は、1 対多のリレーションフィールドのレコードを一覧表示するビューを埋め込みます。 +* `nestedRelationFieldMetadataId` は任意で、リレーション先オブジェクト上の 1 対多リレーションフィールドのユニバーサル識別子を受け取り、2 ホップ先のリレーションにあるレコードを一覧表示するために使用されます(例: 会社ページでその会社の担当者が持つ商談を一覧表示する、または人物ページでその人物の所属する会社の商談を一覧表示する、など)。 最初のホップは 1 対多または多対 1 のリレーションフィールドのどちらでもかまいませんが、2 つ目は必ず 1 対多でなければなりません(ジャンクションリレーションはサポートされません)。また、`fieldDisplayMode: 'TABLE'` が必須であり、ネストされたウィジェットは常に埋め込みビューとしてレンダリングされるため、これを他の表示モードと組み合わせると検証エラーになります。 + ## definePageLayoutTab 既存のレイアウトにタブを**追加**したい場合にのみ使用します。たとえば、標準の Company ページにアナリティクスタブを追加する場合や、自分のオブジェクトのレイアウトに AI サマリータブを追加する場合などです。 diff --git a/packages/twenty-docs/l/ja/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/ja/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 05b36b05b4..d7715fef2b 100644 --- a/packages/twenty-docs/l/ja/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/ja/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -280,6 +280,7 @@ export default definePageLayout({ `RICH_TEXT` フィールドには、エディタのブロック JSON と Markdown プロジェクションの両方が格納されます。 生成パイプラインはその Markdown プロジェクションを読み取るため、プレースホルダー、PDF、共有可能なウェブページはすべてそのまま問題なく動作します。詳しくは、[`template-record.page-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts) を参照してください。 +`FIELD` ウィジェットは、他にもさまざまな表示モードやオプションをサポートしています。たとえば、2 ホップ先の入れ子になったリレーションのレコードを一覧表示することもできます。詳しくは、[フィールドウィジェットリファレンス](/l/ja/developers/extend/apps/layout/page-layouts#field-widgets)を参照してください。 編集者は適切なリッチテキストエディタでテンプレートを書き込むようになりました: diff --git a/packages/twenty-docs/l/ko/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/ko/developers/extend/apps/layout/page-layouts.mdx index 6ae023b2ad..d58d9a40fc 100644 --- a/packages/twenty-docs/l/ko/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/ko/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * 탭 내부의 각 `widget`은 [front component](/l/ko/developers/extend/apps/layout/front-components), 관계 목록 또는 기타 기본 제공 위젯 타입을 렌더링할 수 있습니다. * 탭의 `position`은 탭의 순서를 제어합니다. 값을 더 높게 설정하면(예: 50) 기본 탭 뒤에 사용자 지정 탭을 배치할 수 있습니다. +### 필드 위젯 + +`FIELD` 위젯은 레코드의 하나의 필드를 렌더링합니다. 관계 필드의 경우 관련 레코드 목록을 포함할 수도 있습니다: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId`는 레이아웃의 오브젝트에 있는 필드의 범용 식별자를 받습니다. +* `fieldDisplayMode`는 `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'`, `'TABLE'` 중 하나입니다. `TABLE`은 일대다 관계 필드의 레코드를 나열하는 뷰를 포함합니다. +* `nestedRelationFieldMetadataId`는 선택 사항이며, 관계 대상 객체에 있는 일대다 관계 필드의 범용 식별자를 받습니다. 이를 통해 두 번의 관계 홉을 거친 레코드를 나열할 수 있습니다(예: Company 페이지에서 해당 회사 사람들의 Opportunity 레코드를 나열하거나, Person 페이지에서 해당 사람의 회사의 Opportunity 레코드를 나열하는 경우). 첫 번째 홉은 일대다 또는 다대일 관계 필드일 수 있지만, 두 번째 홉은 반드시 일대다 관계여야 합니다(junction 관계는 지원되지 않습니다). 또한 `fieldDisplayMode: 'TABLE'`이 필요하며, 다른 어떤 display mode와 결합하면 유효성 검사 오류가 발생합니다. 중첩 위젯은 항상 임베디드 뷰로 렌더링되기 때문입니다. + ## definePageLayoutTab 기존 레이아웃에 탭만 추가하려는 경우에 사용합니다. 예를 들어, 표준 Company 페이지에 분석 탭을 추가하거나, 자신이 소유한 객체의 레이아웃에 AI 요약 탭을 연결하는 경우입니다. diff --git a/packages/twenty-docs/l/ko/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/ko/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index ad03119209..4652103d03 100644 --- a/packages/twenty-docs/l/ko/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/ko/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -262,6 +262,7 @@ export default definePageLayout({ `RICH_TEXT` 필드는 편집기의 블록 JSON과 Markdown 프로젝션을 모두 저장합니다. 생성 파이프라인은 그 Markdown 프로젝션을 읽으므로, 플레이스홀더, PDF, 공유 가능한 웹 페이지가 모두 변경 없이 계속 동작합니다. 전체 코드는 [`template-record.page-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts)에서 확인하세요. +`FIELD` 위젯은 중첩된 관계의 레코드를 두 단계 떨어진 곳까지 나열하는 것을 포함하여, 다른 표시 모드와 옵션도 지원합니다. 자세한 내용은 [필드 위젯 레퍼런스](/l/ko/developers/extend/apps/layout/page-layouts#field-widgets)를 참고하세요. 이제 편집자는 제대로 된 리치 텍스트 편집기에서 템플릿을 작성할 수 있습니다: diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/layout/page-layouts.mdx index 2698916e16..ef625bf248 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Fiecare `widget` dintr-o filă poate reda un [front component](/l/ro/developers/extend/apps/layout/front-components), o listă de relații sau alte tipuri de widgeturi integrate. * `position` pe 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 widget `FIELD` redă un câmp al înregistrării. Pentru câmpurile de relație, acesta poate încorpora și o listă de înregistrări asociate: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId` primește identificatorul universal al unui câmp de pe obiectul layout-ului. +* `fieldDisplayMode` este 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. +* `nestedRelationFieldMetadataId` este 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. diff --git a/packages/twenty-docs/l/ro/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/ro/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 54f34f7a3b..cceef82b31 100644 --- a/packages/twenty-docs/l/ro/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -290,6 +290,9 @@ Un câmp `RICH_TEXT` stochează atât blocul editorului JSON cât și un proiec placeholders, PDF, și pagina web partajabilă continuă să funcționeze neschimbat — vezi tot [`template-record. layout-ul vârstei`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts). +Widgeturile `FIELD` acceptă și alte moduri de afișare și opțiuni, inclusiv +listarea înregistrărilor unei relații imbricate aflate la două salturi distanță — consultă +[referința pentru widgetul field](/l/ro/developers/extend/apps/layout/page-layouts#field-widgets). Editorii scriu șabloane într-un adevărat editor de text bogat: diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/layout/page-layouts.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/layout/page-layouts.mdx index fcce42e880..18d31de449 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/layout/page-layouts.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/layout/page-layouts.mdx @@ -58,6 +58,28 @@ export default definePageLayout({ * Bir sekmenin içindeki her `widget`, bir [ön uç bileşeni](/l/tr/developers/extend/apps/layout/front-components), bir ilişki listesi veya diğer yerleşik widget türlerini oluşturabilir. * Sekmelerdeki `position`, sıralarını kontrol eder. Özel sekmeleri yerleşik olanların sonrasına yerleştirmek için daha yüksek değerler kullanın (ör. 50). +### Alan bileşenleri + +Bir `FIELD` bileşeni, kaydın tek bir alanını görüntüler. İlişki alanları için, ilişkili kayıtların bir listesini de gömebilir: + +```ts +{ + universalIdentifier: 'c1c2c3c4-c5c6-4000-8000-000000000003', + title: 'People → Opportunities', + type: 'FIELD', + configuration: { + configurationType: 'FIELD', + fieldMetadataId: PEOPLE_FIELD_UNIVERSAL_IDENTIFIER, + fieldDisplayMode: 'TABLE', + nestedRelationFieldMetadataId: OPPORTUNITIES_FIELD_UNIVERSAL_IDENTIFIER, + }, +} +``` + +* `fieldMetadataId`, yerleşimin nesnesindeki bir alanın evrensel tanımlayıcısını alır. +* `fieldDisplayMode`, `'FIELD'`, `'CARD'`, `'EDITOR'`, `'VIEW'` veya `'TABLE'` değerlerinden biridir. `TABLE`, bire-çok ilişki alanının kayıtlarını listeleyen bir görünümü gömer. +* `nestedRelationFieldMetadataId` isteğe bağlıdır ve ilişki hedef nesnesi üzerinde, iki ilişki adımı uzaktaki kayıtları listelemek için bire-çok ilişki alanının evrensel tanımlayıcısını alır (örneğin, bir Şirket sayfasının şirketin kişilerinin fırsatlarını listelemesi veya bir Kişi sayfasının kişinin şirketinin fırsatlarını listelemesi gibi). İlk adım bire-çok veya çoktan-bire ilişki alanı olabilir, ikincisi mutlaka bire-çok olmalıdır (bağlantı ilişkileri desteklenmez) ve `fieldDisplayMode: 'TABLE'` gerektirir — bunu başka herhangi bir görüntüleme modu ile birleştirmek bir doğrulama hatasıdır, çünkü iç içe bir bileşen her zaman gömülü bir görünüm olarak işlenir. + ## definePageLayoutTab Bunu yalnızca mevcut bir düzene **sekme eklemek** istediğinizde kullanın — örneğin, standart Company sayfasında bir analitik sekmesi veya kendi nesnenizin düzenine eklenmiş bir yapay zeka özeti sekmesi. diff --git a/packages/twenty-docs/l/tr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx b/packages/twenty-docs/l/tr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx index 508ce37fce..b8567ce990 100644 --- a/packages/twenty-docs/l/tr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/apps/tutorials/document-generator/building-the-ui.mdx @@ -265,6 +265,9 @@ Herhangi bir belgeyi açın — **Preview** sekmesi, belgeyi paylaşılabilir we ``` Bir `RICH_TEXT` alanı, hem editörün blok JSON'unu hem de bir Markdown izdüşümünü saklar. Oluşturma hattı bu Markdown izdüşümünü okur, böylece yer tutucular, PDF ve paylaşılabilir web sayfası hiç değişmeden çalışmaya devam eder — tam [`template-record.page-layout.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/document-generator/src/page-layouts/template-record.page-layout.ts) dosyasına bakın. +`FIELD` bileşenleri, ayrıca iki adım uzaktaki iç içe geçmiş bir ilişkideki +kayıtların listelenmesi de dahil olmak üzere, diğer görüntüleme modlarını ve seçenekleri de destekler — bkz. +[alan bileşeni referansı](/l/tr/developers/extend/apps/layout/page-layouts#field-widgets). Artık editörler, şablonları düzgün bir zengin metin editöründe yazıyor: