Strukturansicht
Verwendung
Demnächst verfügbar.
Code
<TreeView>
<TreeNode
id="1"
label="Fruit">
<TreeNode
id="2"
label="Banana"
/>
<TreeNode
id="3"
label="Apple"
/>
</TreeNode>
<TreeNode
id="4"
label="Vegetables (coming soon!)"
/>
</TreeView>
Importanweisung
import { TreeView, TreeNode, TreeNodeHeader } from '@jutro/components';
Komponentenvertrag
Vergewissern Sie sich, dass Sie die API-Oberfläche der Design System-Komponenten und die damit verbundenen Auswirkungen und Kompromisse verstehen. Erfahren Sie mehr in unserer Einführung zur Komponenten-API.
Eigenschaften
Eigenschaften für Strukturansicht
children- Typ
React.ReactNode[]BeschreibungReact nodes to be rendered in a tree view. This is usually tree node components wrapped by the tree view component. Either
nodesorchildrenis required. nodes- Typ
TreeNodeData[]BeschreibungReact nodes to be rendered in a tree view. This is usually an array of objects with the same properties as tree node components. Either
nodesorchildrenis required. className- Typ
stringBeschreibungCSS class name for this component.
defaultEndIcon- Typ
string | IconBeschreibungDefault icon to be rendered on the last node of the tree. The value is an Icon component or an icon name. For example,
CheckIconor'gw-check'. defaultExpandIcon- Typ
string | IconBeschreibungDefault icon to be rendered when a tree node can be expanded. The value is an Icon component or an icon name. For example,
CheckIconor'gw-check'. defaultIcon- Typ
string | IconBeschreibungDefault icon component. The value is an Icon component or an icon name. For example,
CheckIconor'gw-check'. defaultParentIcon- Typ
string | IconBeschreibungDefault icon to be rendered when node is a parent. The value is an Icon component or an icon name. For example,
CheckIconor'gw-check'. defaultRenderChildren- Typ
JSXElementConstructor<{ nodeId: string, expanded: boolean, isEndNode: boolean }>BeschreibungDefault children render function.
defaultRenderHeader- Typ
JSXElementConstructor<{ nodeId: string, expanded: boolean, isEndNode: boolean }>BeschreibungDefault header render function or component.
filterCallback- Typ
(value: string, query: string) => Array<{ start: number, end: number }> | undefined;BeschreibungCustom comparison function, which takes translated label value as first argument and filtering query as second. It must return null if value is not matched to query, otherwise it returns an array of matching parts indices.
filterProps- Typ
objectBeschreibungProperties passed to filter input.
hideCollapseAll- Typ
booleanBeschreibungIf set to
true, the 'Collapse/Expand all' button will be hidden. onClick- Typ
function (React.MouseEvent<HTMLElement>)BeschreibungOn click event handler.
renderCollapseAll- Typ
JSXElementConstructor<{ nodeId: string, expanded: boolean, isEndNode: boolean; }>BeschreibungFunction or component used to render a custom 'Collapse/Expand all' button.
renderFilter- Typ
(onChange: TreeViewFilterProps['onChange']) => ReactNodeBeschreibungCustom function for rendering the filter component.
renderNodes- Typ
JSXElementConstructor<{ nodeId: string, expanded: boolean, isEndNode: boolean }>BeschreibungThe nodes render function. This is only used when using nodes config.
showFilter- Typ
booleanBeschreibungIf set to
true, a filter input will be visible. defaultRenderExpandIconVerworfen- Typ
JSXElementConstructor<{ nodeId: string, expanded: boolean, isEndNode: boolean }>BeschreibungDefault expand icon render function or component. Deprecated: since 10.9.0, please use
defaultExpandIconprop instead. defaultRenderIconVerworfen- Typ
JSXElementConstructor<{ nodeId: string, expanded: boolean, isEndNode: boolean }>BeschreibungDefault icon render function or component. Deprecated: since 10.9.0, please use
defaultIconprop instead.
Eigenschaften für Strukturknoten
iderforderlich- Typ
stringBeschreibungUnique identifier for the component.
labelerforderlich- Beschreibung
Text label for the node.
className- Typ
stringBeschreibungCSS class name for this component.
disabled- Typ
booleanBeschreibungIf set to
true, the node is disabled. expandIcon- Typ
JSXElementConstructor<{ 'data-nodeid': string, expanded: boolean, isEndNode: boolean }>BeschreibungRender function for the expand icon header render function or component.
hideIcon- Typ
booleanBeschreibungIf set to
true, the icon will be hidden. 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'. nodeHeaderClassName- Typ
stringBeschreibungCSS class name for the node header.
onClick- Typ
(args: { id: string, hasNodes: boolean, expanded?: boolean | undefined }) => voidBeschreibungThe tree node's handler for click events.
renderChildren- Typ
JSXElementConstructor<{ nodeId: string, children: ReactNode, expanded: boolean }>BeschreibungThe tree node's render function or component. Used only when using nodes config.
renderHeader- Beschreibung
The tree node's header render function or component. .
renderExpandIconVerworfen- Typ
JSXElementConstructor<{ icon?: string | Icon, nodeId: string }>;BeschreibungThe node's expand icon render function or component. Deprecated since 10.9.0, please use the
iconprop instead. renderIconVerworfen- Typ
JSXElementConstructor<{ icon?: string | Icon, nodeId: string }>;BeschreibungThe node's header icon render function or component. Will be passed to the
renderHeaderproperty. Deprecated since 10.9.0, please use theiconprop instead.
Eigenschaften für Kopfzeilen von Strukturknoten
iderforderlich- Typ
stringBeschreibungUnique identifier for the component.
labelerforderlich- Typ
stringBeschreibungThe header's translated label.
nodeIderforderlich- Typ
stringBeschreibungThe ID for the current node.
hideIcon- Typ
booleanBeschreibungIf set to
true, the icon will be hidden. 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'. labelMatches- Typ
Array<{ start: number, end: number }>BeschreibungArray of indices to highlight.
renderIconVerworfen- Typ
JSXElementConstructor<{ icon?: string | Icon, nodeId: string }>;BeschreibungThe node's header icon render function or component. Will be passed to the
renderHeaderproperty. Deprecated since 10.9.0, please use theiconprop instead.
Hooks
Für tree view sind keine Hooks verfügbar.
Übersetzungsschlüssel
Der TreeView-Komponente sind sechs Übersetzungsschlüssel zugeordnet:
| Schlüssel | Verwendet für |
|---|---|
| jutro-components.TreeView.filterLabel | aria-label-Wert für den Strukturansichtsfilter. |
| jutro-components.TreeView.filterPlaceholder | Platzhaltertext für den Strukturansichtsfilter. |
| jutro-components.TreeView.collapseAll | Textbeschriftung für die Schaltfläche Alle reduzieren. |
| jutro-components.TreeView.expandAll | Textbeschriftung für die Schaltfläche Alle erweitern. |
| jutro-components.TreeView.noMatchesFound | Angezeigter Text, wenn mit dem Filter keine Übereinstimmungen gefunden werden. |
| jutro-components.TreeView.clearFilter | aria-label-Wert für die Schaltfläche Filter löschen. |
Escape Hatches
Weitere Informationen finden Sie in unserer Dokumentation über Escape Hatches.
Beispiele
Im Abschnitt Verwendung finden Sie Informationen zum korrekten Design einer Strukturansicht und den verschiedenen von Guidewire bereitgestellten Konfigurationsoptionen.
Beispiel für eine einfache Strukturansicht
Eine einfache Strukturansicht ist eine TreeView-Komponente, die eine oder mehrere TreeNode-Komponenten umschließt. Jeder Knoten der Baumstruktur kann auch eigene verschachtelte TreeNode-Komponenten enthalten.
<TreeView>
<TreeNode
id="1"
label="Fruit">
<TreeNode
id="2"
label="Banana"
/>
<TreeNode
id="3"
label="Apple"
/>
</TreeNode>
<TreeNode
id="4"
label="Vegetables (coming soon!)"
/>
</TreeView>
Beispiel für die nodes-Eigenschaft
Sie können die nodes-Eigenschaft verwenden, um die Knoten für die Strukturansicht als Array von Objekten zu übergeben. Weitere Informationen zu den Werten, die an diese Eigenschaft übergeben werden können, finden Sie in der Aufstellung der Eigenschaften für Strukturknoten.
const foods = [
{
id: 'fruit',
label: { id: 'foods.Fruit', defaultMessage: 'Fruit' },
nodes: [
{
id: 'banana',
label: { id: 'foods.Banana', defaultMessage: 'Banana' },
},
{
id: 'apple',
label: { id: 'foods.Apple', defaultMessage: 'Apple' },
},
],
},
{
id: 'vegetables',
label: {
id: 'foods.Vegetables',
defaultMessage: 'Vegetables (coming soon!)',
},
},
];
<TreeView nodes={foods} />;
Beispiel für das Rendern von Knoten
Wenn Sie bei der Verwendung der nodes-Eigenschaften bestimmte Werte der Knoten überschreiben möchten, können Sie dazu die renderNodes-Eigenschaft verwenden.
Das props-Objekt von renderNodes enthält Folgendes:
nodeId– die dem Knoten der Baumstruktur zugewieseneidnodes– das an den Knoten der Baumstruktur übergebene Knotenobjekt
Das nodes-Objekt enthält verschachtelte Knoten, sodass Sie rekursiv vorgehen müssen, um die gesamte Baumstruktur darzustellen.
Wenn Sie beispielsweise bestimmte Stile auf jeden Knoten anwenden möchten, können Sie eine benutzerdefinierte Komponente erstellen, die die Liste der Knoten enthält und diese rekursiv als Strukturknoten rendert, während die Stile auf jeden einzelnen Knoten angewendet werden.
const foods = [ ... ]
const TomatoNodes = ({ nodes }) => {
return (
<>
{nodes.map(({ id, label, nodes: childNodes }) => (
<TreeNode
id={id}
label={label}
style={{
backgroundColor: 'tomato',
color: 'blue',
border: '1px solid yellow',
}}>
{childNodes && <TomatoNodes nodes={childNodes} />}
</TreeNode>
))}
</>
);
};
<TreeView
nodes={foods}
renderNodes={TomatoNodes}
/>
Beispiel für einen Filter
Wenn Sie ein Filterfeld in Ihre Strukturansicht aufnehmen wollen, fügen Sie die showFilter-Eigenschaft hinzu. Das Feld verwendet eine Standardfilterfunktion. Wenn Sie diese überschreiben möchten, verwenden Sie die filterCallback-Eigenschaft.
Die filterCallback-Funktion benötigt zwei Argumente:
- die übersetzte Beschriftung des Elements der Baumstruktur
- die Filterabfrage, die der Benutzer in das Filterfeld eingegeben hat
Die Funktion muss ein Array von Indizes zurückgeben, die Bereiche anzeigen, in denen die Bezeichnung mit der Abfrage übereinstimmt, z. B. [{ start: 2, end: 4 }, { start: 7, end: 9 }].
Wenn die Abfrage nicht übereinstimmt, muss die Funktion null zurückgeben.
Im folgenden Beispiel werden nur Einträge gefunden, deren Beschriftung mit der Abfrage beginnt (Groß- und Kleinschreibung wird berücksichtigt).
const foods = [ ... ]
const filterFunction (value, query) => {
if (value.startsWith(query)) {
return [{ start: 0, end: query.length }];
}
return null;
}
<TreeView
showFilter
nodes={foods}
filterCallback={filterFunction}
/>
Beispiel für einen Filter mit Eigenschaften
Das Filterfeld ist ein standardmäßiges Jutro-Texteingabefeld. Mit der Eigenschaft filterProps können Sie zusätzliche Eigenschaften übergeben.
const foods = [ ... ]
const filterFunction (value, query) => { ... }
<TreeView
showFilter
filterCallback={filterFunction}
filterProps={{
placeholder: 'Item starts with...',
}}
/>
Änderungsprotokoll
10.9.0
-
Es wurde eine neue Opt-in-Funktion eingeführt, die die automatische Ereignisveröffentlichung für die Komponente TreeView deaktiviert. Sie können diese Funktion aktivieren, indem Sie der
.env-Datei im Stammverzeichnis Ihrer Jutro-AnwendungJUTRO_DISABLE_AUTO_EVENTS_PUBLISHING=truehinzufügen. Wenn diese Option aktiviert ist, veröffentlichen ältere Komponenten standardmäßig keine Ereignisse mehr. Weitere Informationen zu Ereignissen und zum Einrichten neuer Ereignisse finden Sie in der Dokumentation zu Ereignissen.
Symbol-Eigenschaftstypen erweitert
Der Typ der Eigenschaften 'defaultParentIcon' und 'defaultEndIcon' für TreeView und die Eigenschaft icon für TreeNode wurden auf string | React.ComponentType erweitert.
Abkündigungen
Die Übergabe von string als Wert an die Eigenschaften 'defaultParentIcon' und 'defaultEndIcon' für TreeView und die Eigenschaft icon für TreeNode wurde abgekündigt.