AppFloorPlan
Die AppFloorPlan-Komponente legt das Gesamtlayout für die gesamte Anwendung fest, einschließlich des Inhalts für die einzelnen Bereiche. Im Einzelnen steuert sie:
- die Kopfzeile
- die Fußzeile
- die Anzeige des Navigationsbereichs: links (Seitenbereich) oder oben (Unterkopfzeile)
- den rechten Bereich
Das Gesamtlayout der Anwendung wird durch eine AppFloorPlan-Komponente verwaltet. Für spezifische Bereiche der Anwendung können Sie jedoch Jutro-Layoutinhaltskomponenten wie Grid oder Flex oder benutzerdefinierte Komponenten verwenden.
Ganz allgemein:
- Die
AppFloorPlan-Komponente legt das Layout und die Routen für Ihre Anwendung fest. Sie umschließt jede einzelne Seite. - Auf jeder Seite wird das jeweilige Layout innerhalb des von
AppFloorPlanvorgegebenen Bereichs verwaltet. Hier fügen Sie eine der verfügbaren Layoutinhaltskomponenten ein.
AppFloorPlan-Komponente übergeben werden, ist es möglich, unterschiedliche Seitenlayoutstrukturen zu erstellen, indem der vordefinierte Inhalt verwendet oder benutzerdefinierte Komponenten bereitgestellt werden.Code
Die @jutro/auth -Abhängigkeit ist nun optional für
@jutro/router und @jutro/components-Pakete.
Allerdings erfordert die AppFloorPlan-Komponente, dass
@jutro/auth zu Ihren App-Abhängigkeiten hinzugefügt wird, um verwendet werden zu können.
Importanweisung
import { AppFloorPlan } from '@jutro/floorplan';
Komponentenvertrag
Eigenschaften
className- Typ
stringBeschreibungCSS class name for this component.
contentAsSectionElement- Typ
booleanBeschreibungIf set to
true, content is rendered within<section>HTML tags, otherwise<main>is used. This is used when the page contains nested floorplans as only one element withmainrole is recommended. contentClassName- Typ
stringBeschreibungAdditional class name for the main component.
contentLayout- Typ
'canvas' | 'default' | 'center'BeschreibungLayout type of the main content.
excludeScrollToTopRoutes- TypBeschreibung
Routes to be excluded from automatic scroll to the top on a location change.
header- Beschreibung
Properties for the application's Header component.
leftSide- Typ
objectclassName- Typ
stringBeschreibungCSS class name for this component.
collapsed- Typ
booleanBeschreibungIf set to
true, component is currently collapsed. collapsible- Typ
booleanBeschreibungIf set to
true, component can be collapsed. contextSwitcher- Beschreibung
Context switcher object.
renderContextSwitcher- Typ
RenderContextSwitcherBeschreibungCallback to render custom ContextSwitcher instead of default one.
BeschreibungProps passed to SideNavigation component.
noContentPadding- Typ
booleanBeschreibungIf set to
true, padding of the page content will be removed. renderFooter- Typ
({ className }: { className: string }) => ReactNodeBeschreibungFunction to render a custom footer.
rightSide- Typ
objectcollapsible- Typ
booleanBeschreibungIf set to
true, component can be collapsed. This prop isfalseby default for desktop andtruefor smaller devices. isInitiallyCollapsed- Typ
booleanBeschreibungIf set to
true, component will be collapsed on initial render. This prop isfalseby default for desktop andtruefor smaller devices. shouldFocusAfterRender- Typ
booleanBeschreibungIf set to
true, component will be in focus after render. This is useful for proper accessibility support because the content will be automatically read by a screen reader. sides- Typ
SideContentShape[]componenterforderlich- Typ
ReactComponentBeschreibungComponent to render as content.
labelerforderlich- Beschreibung
The aria-label describing the content. This text is not rendered and is only used for accessibility.
componentProps- Typ
objectBeschreibungProps to pass to the component passed to the
componentproperty. The type depends on the value of thecomponentproperty. icon- Typ
string | IconBeschreibungAn Icon component to render on the component. The value must be an
Iconcomponent or the icon's name. For example,CheckIconor'gw-check'. id- Typ
stringBeschreibungUnique identifier for the component.
BeschreibungList of pages to render in the panel.
BeschreibungRight panel config.
routes- TypBeschreibung
App routes to be shown in the subheader or, if the screen is mall, the burger menu.
scrollContent- Typ
booleanBeschreibungIf set to
true, the height of the content is set to the height of the screen and the footer will be displayed at the bottom of the screen. showFooter- Typ
booleanBeschreibungIf set to
false, the footer will not be shown. showHeader- Typ
booleanBeschreibungIf set to
false, the header will not be shown. showLeftSide- Typ
booleanBeschreibungIf set to
trueand if a value has been passed tosideRoutes, then the left side panel will be shown. showRightSide- Typ
booleanBeschreibungIf set to
false, the right side panel will not be shown. showSubHeader- Typ
booleanBeschreibungIf set to
false, the subheader will not be shown. sideRoutes- TypBeschreibung
App routes to be shown in leftSide.
subHeader- Typ
objectclassName- Typ
stringBeschreibungCSS class name for this component.
contextSwitcher- Beschreibung
Context switcher component that will be rendered in the left side of the header.
renderContextSwitcher- Typ
RenderContextSwitcherBeschreibungCallback to render custom ContextSwitcher instead of default one.
renderCustomComponent- Typ
JSXElementConstructor<Record<string, never>>BeschreibungCustom component placed on the right side of subheader or in burger menu.
BeschreibungSub header config.
Kopfzeileneigenschaften
Die Eigenschaft header in der AppFloorPlan-Komponente unterstützt ein Objekt mit den folgenden Eigenschaften:
appSwitcherCollapsibleGroupsThreshold- Typ
numberBeschreibungNumber of items from which the groups in AppSwitcher are collapsible and the search field is displayed.
appSwitcherFooterText- Typ
IntlMessageShape | LinkPropTypesBeschreibungText displayed on the footer link in AppSwitcher. See IntlMessageShape and Link for more detailed information on the accepted types.
appSwitcherFooterUrl- Typ
Record<string, (...args: any[]) => void>BeschreibungURL to which the footer link in the AppSwitcher leads.
appSwitcherHideFooter- Typ
booleanBeschreibungIf set to
true, the footer in the AppSwitcher is hidden. appSwitcherItems- Beschreibung
Array of items to be displayed in the App Switcher menu.
appSwitcherSearchEnabled- Typ
booleanBeschreibungIf set to
true, enables the search field in AppSwitcher if the number of items are equal to or above theappSwitcherCollapsibleGroupsThresholdvalue. avatarChildren- Typ
React.ReactNodeBeschreibungAvatar content to be rendered before routes links.
avatarProps- Typ
AvatarPropTypesBeschreibungAvatar props to be passed down if not using auth info (username, imageSource, title, subtitle).
burgerMenuRoutes- TypBeschreibung
Routes to be rendered in the burger menu, for breakpoints smaller than
desktop. callbackMap- Typ
Record<string, (...args: any[]) => void>BeschreibungMap to resolve callbacks on avatar links.
className- Typ
stringBeschreibungCSS class name for this component.
commonAvatarRoutes- Typ
Array<DropdownMenuLinkShape>BeschreibungArray of items to be displayed as common Avatar content.
contextSwitcher- Beschreibung
Context switcher object.
helpPopoverItems- Typ
React.ReactNode[]BeschreibungHelp popover items.
helpUrl- Beschreibung
The link path for the help page.
languageSelectorProps- Beschreibung
Props passed to Language Selector.
logoAlt- Beschreibung
Logo image's
altprop. logoSrc- Typ
stringBeschreibungDisplay a logo from source.
logoTitle- Beschreibung
The title for the logo.
logoUrl- Typ
stringBeschreibungLink path to a logo.
notificationChildren- Typ
React.ReactNodeBeschreibungNotification content to be rendered.
onAppSwitcherFooterClick- Typ
(event: React.SyntheticEvent) => voidBeschreibungCallback which will be triggered when the footer link in the AppSwitcher is clicked.
onLoadValues- Typ
functionBeschreibungFunction for asynchronous data loading in the search field.
onSearchValueChange- Typ
functionBeschreibungDisplay a search field. Callback for the search field value change.
renderBurgerMenuCustomItem- Typ
JSXElementConstructor<Record<string, never>>BeschreibungComponent to be rendered inside burger menu after navigation.
renderContextSwitcher- Typ
RenderContextSwitcherBeschreibungCallback to render custom ContextSwitcher instead of default one.
renderCustomComponent- Typ
JSXElementConstructor<Record<string, never>>BeschreibungCustom component to be rendered in the application header. It will be rendered on the left of actions menu.
renderHeader- Typ
(props: RenderHeaderProps) => ReactNodeBeschreibungFunction to render a custom header.
renderHelpPopoverItems- Typ
() => ReactElementBeschreibungRender custom help popover items.
searchAvailableValues- Typ
LookupOptionShape[]BeschreibungAn array of choice objects to display, works only if
onLoadValuesis not supplied. searchFieldPlaceholder- Beschreibung
Search field placeholder text.
searchOptionTypes- Typ
LookupOptionType[]BeschreibungArray of option types variants in the search lookup field.
showAppSwitcher- Typ
booleanBeschreibungIf set to
true, will show App Switcher. showAvatar- Typ
booleanBeschreibungDisplay the avatar.
showHelp- Typ
booleanBeschreibungIf set to
true, shows the Help dropdown. showLanguageSelector- Typ
booleanBeschreibungIf set to
true, shows the Language Selector. showNotifications- Typ
booleanBeschreibungDisplay the notification icon.
useAuthInfo- Typ
booleanBeschreibungIf set to
true,uses Okta auth information.
Aktivieren und Deaktivieren verschiedener Bereiche von AppFloorPlan
Sie können die einzelnen Bereiche von AppFloorPlan deaktivieren oder aktivieren, indem Sie die entsprechende Eigenschaft auf false bzw. true festlegen. Alle folgenden Eigenschaften sind standardmäßig auf true festgelegt:
showHeader: Kopfzeile einblenden oder ausblenden, hat Vorrang vor der Eigenschaftheader.showSubHeader: Obere Navigation einblenden oder ausblenden. Damit sie angezeigt wird, ist mindestens eine Route inroutesmitshowOnNavBar=trueerforderlich.showFooter: Fußzeile einblenden oder ausblendenshowRightSide: Rechte Seite einblenden oder ausblenden. Wenn die Eigenschaft auffalsefestgelegt ist, wird der rechte Bereich nicht angezeigt, auch wenn SierightSidekonfigurieren.showLeftSide: Linke Navigation einblenden oder ausblenden. Damit sie angezeigt wird, ist mindestens eine Route insideRoutesmitshowOnNavBar=trueerforderlich.
Routen, Navigation und Seiten
Sie können Routen mit der Eigenschaft routes oder sideRoutes von AppFloorPlan steuern. Um Ihrer App neue Seiten hinzuzufügen, fügen Sie sie einer dieser Eigenschaften hinzu.
Die Einstellung sideRoutes sorgt dafür, dass die Navigation auf der linken Seite angezeigt wird. Die Einstellung routes bewirkt, dass die Navigation oben in der Unterkopfzeile angezeigt wird. Wenn Sie die Navigation sowohl oben als auch links wünschen, können Sie sowohl sideRoutes als auch routes festlegen.
Diese Routen haben die folgende Form:
export type Route = {
// react-router-dom Route and Redirect props
//URL path of the route
path?: string,
// If true, will only match if the path matches
// the location.pathname exactly
exact?: boolean,
//If true, a path that has a trailing slash will
// only match a location.pathname with a trailing slash
strict?: boolean,
// Match is case sensitive
sensitive?: boolean,
//Path to which redirect when entering the current page
redirect?: string,
//When true, redirecting will push a new entry onto
// the history instead of replacing the current one
push?: boolean,
//The location to redirect to
to?: IntlToShape,
//A pathname to redirect from
from?: string,
// end of react-router-dom
//Identifier for the route
id?: string,
// Component to be rendered as the destination page
// for this route
component?: ReactComponent,
//Properties for the component to be rendered
componentProps?: Record<string, unknown>,
//Title to be displayed for the route
title?: IntlMessageShape,
//Defines whether the route should be shown in the navigation
showOnNavBar?: boolean,
//Nav link properties
navLink?: NavLinkPropTypes,
//Array of sub-routes
routes?: Route[],
//An external path
href?: string,
};
Weitere Informationen finden Sie auf der Seite zum Routing.
Grundrissüberschreibungen
Sie können für einzelne Seiten der Anwendung eine andere Definition verwenden. Erstellen Sie eine Konfiguration (FloorplanOverride) 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.
Bei mehreren Konfigurationen ohne die matches-Eigenschaft gilt die erste als Standardkonfiguration. Wenn Sie keine Überschreibung für eine Seite angeben, wird die Standardkonfiguration verwendet.
In der Überschreibungskonfiguration müssen nur die Unterschiede zur Standardkonfiguration angegeben werden, da sie mit dieser zusammengeführt wird.
export const example2PageDefinition = (): FloorPlanOverride {
return {
// Configuration override for the /example2 path only
showRightSide: false,
matches: '/example2'
}
}
export const floorPlanDefinition = (): FloorPlan {
return {
// Default `AppFloorPlan` configuration definition
contentLayout: 'canvas'
showRightSide: true,
rightSide: {
...
}
}
}
export function Jutro(): JSX.Element {
return <AppFloorPlan
floorPlans={[floorPlanDefinition(), example2PageDefinition()]} />;
}
Inhaltslayout
In AppFloorPlan können Sie beim Anwenden des Innenabstandslayouts für einen Hauptinhaltscontainer die Eigenschaft contentLayout mit einer ihrer Varianten verwenden:
center: maximale Breite und horizontal zentriertcanvas: ohne Innenabstanddefault: mit Guidewire-Standardinnenabstand
contentLayout legt das Standardlayout für alle Seiten in einer Anwendung fest. Wenn Sie das Layout für Unterseiten abweichend vom Standard ändern möchten, müssen Sie die gewünschten Einstellungen definieren über FloorplanOverrides:
export const example2PageDefinition = (): FloorPlanOverride {
return {
contentLayout: 'center',
matches: '/example2'
}
}
export const floorPlanDefinition = (): FloorPlan {
return {
// Default configuration
contentLayout: 'canvas'
}
}
export function Jutro(): JSX.Element {
return <AppFloorPlan
floorPlans={[floorPlanDefinition(), example2PageDefinition()]} />;
}
contentClassName{#contentclassname-prop}-Eigenschaft.
Sie können zudem eine contentClassName-Eigenschaft verwenden, um benutzerdefinierte CSS im Hauptinhaltscontainer zu platzieren und so Hintergründe und andere Stile zu ändern.
Beispiele
In den Abschnitten Verwendung und Code finden Sie weitere Einzelheiten sowie Konfigurationsoptionen und Beispiele.
Basiskonfiguration
Das folgende Beispiel zeigt, wie die verschiedenen Eigenschaften von AppFloorPlan verwendet werden. Eine Seite mit Kopfzeile sowie linkem und rechtem Bereich wird angezeigt, jeweils mit mehreren untergeordneten Elementen.

import React from 'react';
import { AppFloorPlan } from '@jutro/floorplan';
import { FloorPlan } from '@jutro/floorplan';
import { ChatIcon, MailIcon } from '@jutro/icons';
import { Card } from '@jutro/components';
export const floorPlanDefinition = (): FloorPlan {
return {
showHeader: true,
header: {
showNotifications: true,
logoSrc: './images/guidewire-logo-dark.svg',
logoTitle: 'Guidewire',
showHelp: true,
showAppSwitcher: true,
showLanguageSelector: false,
},
showSubHeader: false,
showLeftSide: true,
leftSide: {
collapsible: true,
},
sideRoutes: [
{
path: '/',
exact: true,
showOnNavBar: false,
redirect: '/example',
},
{
title: 'Example page',
path: '/example',
exact: true,
component: PageExample,
},
{
title: 'Example page 2',
path: '/example2',
exact: true,
component: PageExample,
},
],
showRightSide: true,
rightSide: {
collapsible: true,
isInitiallyCollapsed: true,
sides: [
{
label: "Open chat",
icon: ChatIcon,
component: RightSideExample,
},
{
label: "Email",
icon: MailIcon,
component: RightSideExample,
}
],
},
showFooter: false,
};
};
export function Jutro(): JSX.Element {
return <AppFloorPlan floorPlans={[floorPlanDefinition()]} />;
}
const PageExample = (): JSX.Element {
return <Card title="Example page"
subTitle="This can be any type of component" isPanel></Card>
}
const RightSideExample = (): JSX.Element {
return <Card title="Example page"
subTitle="This can be any type of component"></Card>
}
Benutzerdefinierte Kopfzeile
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() {
// myCustomHeaderRenderer implementation
}
}
}
<AppFloorPlan floorPlans={floorplans} />;
Die Funktion renderHeader hat folgende Argumente:
navigationRoutes: Sichtbare Routen (Routen mitshowOnNavBarnicht festgelegt auffalse)header: Eigenschaften der Kopfzeile vonAppFloorPlansubHeader: Eigenschaften der Unterkopfzeile vonAppFloorPlan
Wenn showSubHeader auf false festgelegt ist, können Sie auch eine eigene Unterkopfzeile als Teil der benutzerdefinierten Kopfzeile implementieren. Die Höhe der benutzerdefinierten Kopfzeile ist dabei in keiner Weise begrenzt.
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": "example1",
"defaultMessage": "Example right side 1"
},
"icon": "gw-home",
"component": "RightSideContent",
"componentProps": {
"foodItem": "banana"
}
},
{
"label": {
"id": "example2",
"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!“.
Die Eigenschaften, die von rightSide unterstützt werden, finden Sie in der Liste der Eigenschaften auf der Registerkarte „Code“.