nextui/apps/docs/content/components/select/single-controlled-onchange.ts
Ryo Matsukawa a2133009f7
fix(select): onSelectionChange can handle number (#2937)
* fix: onSelectionChange type for dynamic items in Select component

* docs: remove unnecessary properties

* docs: update highlightedLines

* chore: add changeset
2024-05-19 16:49:06 -03:00

93 lines
2.3 KiB
TypeScript

const data = `export const animals = [
{key: "cat", label: "Cat"},
{key: "dog", label: "Dog"},
{key: "elephant", label: "Elephant"},
{key: "lion", label: "Lion"},
{key: "tiger", label: "Tiger"},
{key: "giraffe", label: "Giraffe"},
{key: "dolphin", label: "Dolphin"},
{key: "penguin", label: "Penguin"},
{key: "zebra", label: "Zebra"},
{key: "shark", label: "Shark"},
{key: "whale", label: "Whale"},
{key: "otter", label: "Otter"},
{key: "crocodile", label: "Crocodile"}
];`;
const App = `import {Select, SelectItem} from "@nextui-org/react";
import {animals} from "./data";
export default function App() {
const [value, setValue] = React.useState("");
const handleSelectionChange = (e) => {
setValue(e.target.value);
};
return (
<div className="flex w-full max-w-xs flex-col gap-2">
<Select
label="Favorite Animal"
variant="bordered"
placeholder="Select an animal"
selectedKeys={[value]}
className="max-w-xs"
onChange={handleSelectionChange}
>
{animals.map((animal) => (
<SelectItem key={animal.key}>
{animal.label}
</SelectItem>
))}
</Select>
<p className="text-small text-default-500">Selected: {value}</p>
</div>
);
}`;
const AppTs = `import {Select, SelectItem} from "@nextui-org/react";
import {animals} from "./data";
export default function App() {
const [value, setValue] = React.useState<string>("");
const handleSelectionChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
setValue(e.target.value);
};
return (
<div className="flex w-full max-w-xs flex-col gap-2">
<Select
label="Favorite Animal"
variant="bordered"
placeholder="Select an animal"
selectedKeys={[value]}
className="max-w-xs"
onChange={handleSelectionChange}
>
{animals.map((animal) => (
<SelectItem key={animal.key}>
{animal.label}
</SelectItem>
))}
</Select>
<p className="text-small text-default-500">Selected: {value}</p>
</div>
);
}`;
const react = {
"/App.jsx": App,
"/data.js": data,
};
const reactTs = {
"/App.tsx": AppTs,
"/data.js": data,
};
export default {
...react,
...reactTs,
};