Verwendung
Grundrisse ermöglichen es dem Designer, sofort mit der Erstellung seiner Anwendungen zu beginnen. Sie ermöglichen eine konsistente und reaktionsschnelle UI-Komposition über Anwendungstypen hinweg. Designer können aus vier verfügbaren Grundrissen wählen und sich an die Anforderungen der Anwendung anpassen. Ähnlich wie Architekturzeichnungen, die die Form, Größe und Anordnung eines Raumes veranschaulichen, definieren Grundrisse die Form, das Layout und die Komponenten einer Seite. Grundrisse optimieren das Design über mehrere Formfaktoren hinweg. Weitere Informationen erhalten Sie im folgenden Video:
Was sind Grundrisse?
Aufbau

Jutro umfasst derzeit vier verschiedene Grundrisse, die für gängige Anwendungsfälle ausgerichtet sind:
Eine Seitenleiste hat eine maximale Breite von 320 Pixeln. Sie verschiebt den Inhalt in den Hauptinhaltsbereich und zwingt ihn, responsiv zu sein. Hinweis: Seitenleisten überlappen nicht den Hauptinhaltsbereich.
Inhaltslayouts bestimmen die Spaltengrößen für Komponenten im Hauptinhaltsbereich. Fünf Layoutoptionen sind verfügbar:
- Globale Kopfzeile: Die Kopfzeile ermöglicht eine konsistente Navigation über Anwendungserfahrungen hinweg. Sie definiert den obersten Teil einer Seite. Kopfzeilen sind zusammengesetzte Komponenten. Mit anderen Worten, sie kombinieren andere Komponenten, um einen bestimmten Anwendungsfall zu erfüllen.
- Linke Navigation: Die linke Navigation organisiert die Inhaltsstruktur und bietet Kontext zur Orientierung der Benutzer. Sie nimmt die linke Seite des Bildschirms ein und erstreckt sich vertikal von der Kopfzeile bis zum unteren Rand der Seite.
- Rechte Seitenleiste: Die Jutro-Grundrisse bieten Platz für Push- und Overlay-Modelle der rechten Seitenleiste. Das Push-Modell der rechten Seitenleiste enthält Informationen, die sich auf den Hauptinhaltsbereich beziehen. Es ist nützlich, um Informationen zu vergleichen und gegenüberzustellen. Das Overlay-Modell fungiert als Arbeitsbereich. Es ermöglicht Benutzern unter anderem die Eingabe von Informationen, das Umschalten und Festlegen von Daten.
Best Practices
- Trennen nach der Platzierung und Größenanpassung: Grundrisse müssen getrennt werden, um Inhalte darin zu platzieren. Die enthaltenen Komponenten und/oder Stile werden weiterhin aktualisiert.
- Der Zugriff auf die Grundrisse erfolgt über das Menü der Symbolbibliothek oder ein vordefiniertes Symbol auf einer Zeichenfläche mit einem Ebenenraster, das Sie kopieren und in eigenen Dateien einfügen können.
- Alle Grundrisse sind symbolisiert. Um Änderungen vorzunehmen, müssen Sie sie zuerst trennen.
- Überlegen Sie bei der Auswahl eines Grundrisses, welche der folgenden Elemente Sie benötigen: linke Navigation, globale Kopfzeile, rechte Seitenleiste. Alle Grundrisse verfügen über die globale Kopfzeile.
- Verwenden Sie Grundrisse in L-Form, wenn Sie die Kopfzeile und die linke Navigation benötigen.
- Verwenden Sie Grundrisse in I-Form, wenn Sie lediglich die Kopfzeile benötigen.
- Verwenden Sie Grundrisse in C-Form, wenn Sie die Kopfzeile, die linke Navigation und die rechte Seitenleiste benötigen.
- Verwenden Sie Grundrisse in R-Form, wenn Sie die Kopfzeile und die rechte Seitenleiste benötigen.
- Grundrisse in R-Form mit einem Push-Modell eignen sich besonders für einspaltige, 2:1-, 1:2- und 1:1-Layouts.
Reaktionsfähigkeit/Anpassungsfähigkeit
Jutro bietet responsive Layouts, die sich an unterschiedliche Bildschirme und Formfaktoren anpassen. Für die Layouts wird ein 12-Spalten-Raster für Desktop-Geräte, ein 8-Spalten-Raster für Tablets und ein 4-Spalten-Raster für Smartphones verwendet, alle mit einem Abstand von 24 Pixeln zwischen den Spalten.
Für alle Form- und Layoutkombinationen gelten die folgenden Messpunkte.
Karten
Karten werden am Spaltenraster ausgerichtet und sind die primären Container für die Platzierung von Inhalten auf dem Layoutraster im Hauptbereich.
Karten als Panels
Karten als Panels (<Card isPanel />) werden für die linke und rechte Seitenleiste für kontextbezogene Inhalte wie z. B. Navigation oder Steuerelemente verwendet.
Layoutpanels: Beispiele

L-Form 2:1, linker Navigationsbereich reduziert

L-Form 2:1, linker Navigationsbereich erweitert

I-Form 1:1

I-Form 1:1:1
Interaktionen
Die linke Navigation beinhaltet vorgruppierte Komponenten für die Navigation. Wenn Sie aus diesen Elementen auswählen, ändert sich die Ansicht des Hauptinhaltsbereichs entsprechend der Auswahl.
Auch bei der rechten Seitenleiste wird das Push-Modell verwendet, mit dem die Größe des responsiven Hauptbereichs entsprechend geändert und die jeweiligen Kontextinhalte angezeigt werden.
Ikonografie
Die Symbole für die linke Navigation und die globale Kopfzeilenfunktion sind standardmäßig verfügbar. Sie haben jedoch die Möglichkeit, diese zu überschreiben.
Code
Die AppFloorPlan-Komponente legt das Gesamtlayout für die gesamte Anwendung fest. Im Einzelnen steuert sie:
- Anzeige des Navigationsbereichs (links oder oben)
- Kopfzeile
- Fußzeile
- Rechtes Panel
Ihr gesamtes Anwendungslayout wird von einem Grundriss verwaltet. Für spezifische Bereiche der Anwendung können Sie jedoch Jutro-Layoutkomponenten verwenden.
Ganz allgemein:
- Der Grundriss legt das Layout und die Weiterleitung für Ihre Anwendung fest. Er umschließt jede einzelne Seite.
- In jeder Seite wird das jeweilige Layout innerhalb des vom Grundriss vorgegebenen Bereichs verwaltet. Hier fügen Sie eine der verfügbaren Layoutkomponenten ein.
Jutro umfasst vier Layoutkomponenten: Flex, Grid, GridLayout und ColumnsLayout.
Der Grundriss ermöglicht es Designern und Entwicklern, mit einer grundlegenden UI-Anwendungsstruktur anstatt mit einer leeren Seite zu beginnen. Hauptziel ist es, eine einheitliche Benutzererfahrung und Benutzeroberfläche in Guidewire zu fördern und die Entwicklungs- und Designprozesse zu beschleunigen.
Formen
Grundrissformen sind eine Abkürzung für die gesamten Anwendungslayouts. Jede Form gibt an, wo sich die Navigation befindet und ob ein rechter Bereich vorhanden ist.
- I-Form: Festlegen von
routes=[]
- L-Form: Festlegen von
sideRoutes=[]
- C-Form: Festlegen von
sideRoutes wie bei der L-Form, jedoch wird rightSide hinzugefügt.
- R-Form: Festlegen von
routes=[] wie bei der L-Form und Hinzufügen von rightSide
Anwendungsbeispiel für die Grundkonfiguration
Das folgende Beispiel zeigt, wie die verschiedenen Eigenschaften von AppFloorPlan verwendet werden. Die Grundrisskonfiguration wird in einer separaten Metadatendatei erstellt und kann an die Eigenschaft der AppFloorPlanKomponentefloorPlans übergeben werden. Für eine Validierung der Grundrisskonfiguration müssen Sie einen $schema-Pfad in Ihrer Grundriss-JSON-Konfigurationsdatei hinzufügen.
Die Eigenschaft rightSide unterstützt Präsentationsmetadaten und bestimmt den Inhalt des rechten Panels.
{
"$schema": "../metadata.schema.json",
"jutro": "10.11.0",
"floorplan.default": {
"type": "floorplan",
"scrollContent": false,
"showLeftSide": false,
"showRightSide": false,
"routes": [
{
"path": "/",
"exact": true,
"showOnNavBar": false,
"redirect": "/welcome"
},
{
"title": {
"id": "jutro-app.Pages.Welcome.title",
"defaultMessage": "Welcome"
},
"path": "/welcome",
"exact": true,
"component": "Welcome"
},
{
"title": {
"id": "jutro-app.Pages.CodelessForm.FormsMenu",
"defaultMessage": "Forms"
},
"id": "forms",
"path": "/forms",
"routes": [
{
"title": {
"id": "jutro-app.Pages.CodelessForm.title",
"defaultMessage": "Codeless Form"
},
"path": "/forms/codeless",
"exact": true,
"component": "CodelessForm"
}
]
},
{
"title": {
"id": "jutro-app.Pages.Settings.title",
"defaultMessage": "Settings Page"
},
"path": "/settings",
"exact": true,
"component": "SettingsPage"
}
],
"header": {
"showAvatar": true,
"commonAvatarRoutes": [
{
"title": {
"id": "jutro-app.app.commonAvatar.welcomePage",
"defaultMessage": "Go to Welcome Page"
},
"to": "/welcome",
"onClick": "trackClick",
"className": "sampleDropdownLink"
}
],
"showNotifications": true,
"logoSrc": "./images/guidewire-logo-dark.svg",
"showHelp": true,
"showAppSwitcher": false,
"helpPopoverItems": [
{
"id": "heading",
"component": "HelpHeading",
"componentProps": {
"content": {
"id": "jutro.app.help.gwCloud",
"defaultMessage": "Guidewire Cloud"
}
}
},
{
"id": "paragraph",
"component": "HelpParagraph",
"componentProps": {
"content": {
"id": "jutro.app.help.gwCloudDescription",
"defaultMessage": "Guidewire Cloud™ is the optimal way to experience the power of Guidewire InsurancePlatform™, combining Guidewire software, services, and ecosystem in a scalable SaaS model. It scales according to use, provides cost predictability, and transfers IT risk to Guidewire. Expert Guidewire teams and our SaaS-certified partners provide implementation services, security, ongoing management, and regular updates"
}
}
},
{
"id": "link",
"component": "HelpLink",
"componentProps": {
"content": {
"id": "jutro.app.help.readMore",
"defaultMessage": "Read more about GW Cloud"
},
"href": "https://docs.guidewire.com/"
}
}
]
},
"footer": {
"content": [
{
"id": "footer-text",
"type": "element",
"component": "FooterText",
"componentProps": {
"text": {
"id": "jutro.app.footer.legalNotice",
"defaultMessage": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vel augue enim. Sed at maximus urna. Integer ut massa non augue sodales lacinia. Integer vestibulum at mi ac fringilla. Aenean posuere sagittis pharetra. Nunc viverra, ex a eleifend faucibus, lorem leo laoreet lectus, consequat dapibus lacus diam non elit. Cras metus magna, lacinia ac ipsum pharetra, gravida amet."
}
}
},
{
"id": "footer-nav-bar",
"type": "container",
"component": "FooterNavBar",
"content": [
{
"id": "footer-nav-link-1",
"type": "element",
"component": "FooterNavLink",
"componentProps": {
"header": {
"id": "jutro.app.footer.privacyPolicy",
"defaultMessage": "Privacy Policy"
},
"key": "1"
}
},
{
"id": "footer-nav-link-2",
"type": "element",
"component": "FooterNavLink",
"componentProps": {
"header": {
"id": "jutro.app.footer.legalNotes",
"defaultMessage": "Legal Notes"
},
"key": "2"
}
},
{
"id": "footer-nav-link-2",
"type": "element",
"component": "FooterNavLink",
"componentProps": {
"header": {
"id": "jutro.app.footer.contactUs",
"defaultMessage": "Contact Us"
},
"key": "3"
}
}
]
},
{
"id": "footer-copyright",
"type": "element",
"component": "FooterCopyright"
}
]
}
},
"floorplan.welcome": {
"type": "floorplan",
"matches": [
"/welcome"
],
"showFooter": false,
"header": {
"logoSrc": "./images/guidewire-logo-dark.svg",
"showNotifications": false,
"showAppSwitcher": false
}
}
}
Und fügen Sie die Konfiguration der Seite in JSX hinzu:
import config from './config.json5';
import { AppFloorPlan } from '@jutro/floorplan';
export default function MyApp() {
const floorPlans = Object.values(floorPlanConfig).filter(isObject);
return <AppFloorPlan floorPlans={floorPlans} />;
}
Note: Die @jutro/auth Abhängigkeit ist nun optional für
@jutro/router und @jutro/components Pakete.
Allerdings erfordert AppFloorPlan component jetzt, dass
@jutro/auth zu Ihren App-Abhängigkeiten hinzugefügt werden, um verwendet werden zu können.
Routen, Navigation und Seiten
Siehe die Seite zum Routing.
Aktivieren und Deaktivieren verschiedener Bereiche von AppFloorPlan
Sie können die einzelnen Bereiche des Grundrisses deaktivieren oder aktivieren, indem Sie die entsprechende Eigenschaft in der Metadatenkonfiguration auf „false“ bzw. „true“ festlegen. Alle diese Kriterien sind standardmäßig true:
showHeader: Kopfzeile einblenden oder ausblenden, hat Vorrang vor der Eigenschaft header.
showSubHeader: Obere Navigation einblenden oder ausblenden. Damit sie angezeigt wird, ist mindestens eine Route in routes mit showOnNavBar=true erforderlich.
showFooter: Fußzeile einblenden oder ausblenden
showRightSide: Rechte Seite einblenden oder ausblenden. Wenn die Eigenschaft auf „false“ festgelegt ist, wird das rechte Panel nicht angezeigt, auch wenn Sie rightSide konfigurieren.
showLeftSide: Linke Navigation einblenden oder ausblenden. Damit sie angezeigt wird, ist mindestens eine Route in sideRoutes mit showOnNavBar=true erforderlich.
Wenn sich Ihr Kopfzeilendesign erheblich von dem der Basiskonfiguration unterscheidet und die verfügbaren Anpassungsoptionen nicht ausreichen, können Sie mit dem renderHeader-Attribut eine benutzerdefinierte Kopfzeilen-Renderer-Funktion bereitstellen:
const floorplans = {
'floorplan.default': {
...
renderHeader() {
}
}
}
<AppFloorPlan floorPlans={floorplans} />;
Die Funktion renderHeader unterstützt ein Objekt mit Folgendem:
navigationRoutes: Sichtbare Routen (Routen mit showOnNavBar ungleich/festgelegt auf false)
header: Eigenschaften der Kopfzeile des Grundrisses
subHeader: Eigenschaften der untergeordneten Kopfzeile des Grundrisses
Wenn showSubHeader auf false gesetzt ist, können Sie auch Ihre eigene untergeordnete Kopfzeile als Teil der benutzerdefinierten Kopfzeile implementieren. Die benutzerdefinierte Kopfzeilenhöhe ist sowieso nicht begrenzt – Sie können jede Kopfzeile rendern, die Ihnen und Ihrem Designer einfällt!
Important: Die benutzerdefinierte Kopfzeilenoption ist äußerst flexibel, aber denken Sie daran, dass sie Kosten verursacht. Für Aspekte wie Reaktionsfähigkeit und Zugänglichkeit sind Sie selbst verantwortlich. Jutro stellt ein paar kleine Blöcke zur Verfügung, um beim Erstellen einer solchen benutzerdefinierten Kopfzeile zu helfen – siehe das Beispiel für eine benutzerdefinierte Kopfzeile in Storybook.
Rechte Seite
Die rightSide-Eigenschaft verwendet ein Konfigurationsobjekt, das den Inhalt des rechten Bereichs bestimmt. Betrachten Sie dieses Beispiel auf der rechten Seite:
{
"showRightSide": true,
"rightSide": {
"collapsible": true,
"sides": [
{
"label": {
"id": "lelum",
"defaultMessage": "Example right side 1"
},
"icon": "gw-home",
"component": "RightSideContent",
"componentProps": {
"foodItem": "banana"
}
},
{
"label": {
"id": "polelum",
"defaultMessage": "Example right side 2"
},
"icon": "gw-star",
"component": "RightSideContent",
"componentProps": {
"foodItem": "cup of coffee"
}
}
],
"shouldFocusAfterRender": true,
"isInitiallyCollapsed": false
}
}
Damit dieses Beispiel funktioniert, erstellen Sie ein RightSideContent:
function RightSideContent({ foodItem }) {
return <div>Enjoy this {foodItem}!</div>;
}
Bei der Konfiguration wird ein rechter Bereich mit zwei Schaltflächen erstellt. Durch Klicken auf die Schaltflächen wird zwischen zwei Bereichen gewechselt. Einer von ihnen ist beschriftet mit: „Lassen SIe sich diese Banane schmecken!“, und ein anderer mit: „Lassen Sie sich diese Tasse Kaffee schmecken!“.
rightSide unterstützt die folgenden Eigenschaften:
-
collapsible - Im Fall von true kann der Benutzer den Bereich reduzieren. Diese Eigenschaft ist standardmäßig false für Desktop- und true für kleinere Geräte.
-
isInitiallyCollapsed – Im Fall von true wird der Bereich reduziert, wenn der Grundriss gerendert wird. Diese Eigenschaft ist standardmäßig false für Desktop- und true für kleinere Geräte.
-
shouldFocusAfterRender – Im Fall von true wird der Bereich nach dem Erweitern fokussiert. Das ist hilfreich für eine ordnungsgemäße Unterstützung der Barrierefreiheit, weil der Inhalt von einem Screenreader gelesen wird. Wenn der rechte Seitenbereich durch etwas anderes als die Standard-Erweiterungsschaltfläche erweitert wird, z. B. wenn der gesteuerte Modus verwendet wird, ist es für Tastaturbenutzer ebenfalls einfach, durch diese zu navigieren.
-
sides – Ein Array von Objekten, die jeweils die Konfiguration einer Schaltfläche und eines Inhaltsabschnitts enthalten. Jedes Objekt kann die folgenden Eigenschaften haben:
id: (optional) eine eindeutige ID, die Sie für die Komponente festlegen können.
label: Beschriftung für die Schaltfläche.
icon: (optional) das Symbol, das auf der Schaltfläche angezeigt werden soll, z. B gw-bathtub. Zur Anzeige sind mindestens 2 Symbole erforderlich.
component: Die zu rendernde Komponente.
componentProps: (optional) Eigenschaften, die an die Komponente übergeben werden.
Wenn der Benutzer auf eine Schaltfläche klickt, wird die entsprechende Komponente im Panel angezeigt.
Grundrissüberschreibungen
Sie können für einzelne Seiten der Anwendung einen anderen Grundriss verwenden. Erstellen Sie eine Grundrisskonfiguration mit einer matches-Eigenschaft mit Pfaden zu Seiten.
"matches": ["/welcome", "/contact"];
Wenn mehrere Überschreibungskonfigurationen für den gleichen Pfad definiert sind, hat die erste Vorrang.
Wenn Sie mehr als eine Grundrisskonfiguration ohne die matches-Eigenschaft haben, wird die erste als Standard betrachtet. Wenn Sie keine Überschreibung für eine Seite angeben, wird der Standardgrundriss verwendet.
Wenn in der Standardkonfiguration Eigenschaften für Kopfzeilen, Fußzeilen etc. angegeben sind, müssen Sie alle Eigenschaften in der Überschreibungskonfiguration überschreiben. Diese werden nicht mit der Standardkonfiguration zusammengeführt.
Durch Hinzufügen der folgenden Grundrissüberschreibung für die Metadaten ändert sich die Konfiguration der Willkommensseite:
{
"$schema": "../metadata.schema.json",
"jutro": "10.11.0",
"floorplan.welcome": {
"type": "floorplan",
"matches": [
"/welcome"
],
"showFooter": false,
"header": {
"logoSrc": "./images/guidewire-logo-dark.svg",
"showNotifications": false,
"showAppSwitcher": false
}
}
}