import * as React from "react";
import { useStyletron } from "baseui";
import { Input, StyledInput } from "baseui/input";
import { Tag, VARIANT as TAG_VARIANT } from "baseui/tag";
const InputReplacement = React.forwardRef(
({ tags, removeTag, ...restProps }: any, ref) => {
const [css] = useStyletron();
return (
{tags.map((tag: string, index: number) => (
removeTag(tag)}
key={index}
>
{tag}
))}
);
},
);
export default function Example() {
const [value, setValue] = React.useState("");
const [tags, setTags] = React.useState(["hello"]);
const addTag = (tag: string) => {
setTags([...tags, tag]);
};
const removeTag = (tag: string) => {
setTags(tags.filter((t) => t !== tag));
};
const handleKeyDown = (event: React.KeyboardEvent) => {
switch (event.keyCode) {
// Enter
case 13: {
if (!value) return;
addTag(value);
setValue("");
return;
}
// Backspace
case 8: {
if (value || !tags.length) return;
removeTag(tags[tags.length - 1]);
return;
}
}
};
return (
setValue(e.currentTarget.value)}
overrides={{
Input: {
style: { width: "auto", flexGrow: 1 },
component: InputReplacement,
props: {
tags: tags,
removeTag: removeTag,
onKeyDown: handleKeyDown,
},
},
}}
/>
);
}