Zum Inhalt springen

Mehrfachauswahl (MultiSelect)

Mit MultiSelect können Benutzer mehrere Optionen aus einer Dropdown-Liste auswählen. Es unterstützt Öffnen- und Schließen-Zustände, benutzerdefiniertes Wert-Rendering und Tastaturnavigation neben anderen Funktionen.

Um MultiSelect zu verwenden, importieren Sie es zusammen mit seiner Item-Komponente. Sie können Eigenschaften wie value, onMultiValueChange, size, label, disabled und viele mehr übergeben, um Verhalten und Erscheinungsbild anzupassen.

Ein einfaches Beispiel, das die grundlegende Verwendung der MultiSelect-Komponente demonstriert.

import * as React from "react";
import { MultiSelect, MultiSelectItem } from "@firecms/ui";
export default function MultiSelectBasicDemo() {
const [selectedValues, setSelectedValues] = React.useState<string[]>([]);
return (
<MultiSelect
value={selectedValues}
onValueChange={setSelectedValues}
label="Basic MultiSelect">
<MultiSelectItem value="option1">Option 1</MultiSelectItem>
<MultiSelectItem value="option2">Option 2</MultiSelectItem>
<MultiSelectItem value="option3">Option 3</MultiSelectItem>
</MultiSelect>
);
}

Dieses Beispiel zeigt, wie das Rendern ausgewählter Werte angepasst wird.

import * as React from "react";
import { MultiSelect, MultiSelectItem } from "@firecms/ui";
export default function MultiSelectCustomRenderDemo() {
const [selectedValues, setSelectedValues] = React.useState<string[]>([]);
return (
<MultiSelect
value={selectedValues}
onValueChange={setSelectedValues}
label="Custom Render MultiSelect"
renderValues={(values) => (values.map((value, index) =>
<span key={index} style={{
marginRight: 8,
background: "#eee",
padding: 4
}}>
{value}
</span>)
)}>
<MultiSelectItem value="red">Red</MultiSelectItem>
<MultiSelectItem value="green">Green</MultiSelectItem>
<MultiSelectItem value="blue">Blue</MultiSelectItem>
</MultiSelect>
);
}

Ein Beispiel zur Demonstration einer MultiSelect-Komponente im deaktivierten Zustand.

import * as React from "react";
import { MultiSelect, MultiSelectItem } from "@firecms/ui";
export default function MultiSelectDisabledDemo() {
return (
<MultiSelect
disabled
label="Disabled MultiSelect"
value={["option1"]}
renderValues={(values) => (values.map((value) =>
<span
key={value}
style={{
marginRight: 8,
background: "#eee",
padding: 4
}}>
{value}
</span>)
)}>
<MultiSelectItem value="option1">Option 1</MultiSelectItem>
<MultiSelectItem value="option2">Option 2 is disabled</MultiSelectItem>
<MultiSelectItem value="option3">Option 3 is disabled</MultiSelectItem>
</MultiSelect>
);
}