Atlaskit editable
This example features a tweaked UI, a hover color with dark mode support, and a tooltip. As you can see, we can change the input by setting the as
prop. This design is inspired by the Atlassian inline edit component. Read more about the editable here.
Here are the imports required:
import {
EditablePreview,
Box,
useColorModeValue,
IconButton,
Input,
useDisclosure,
useEditableControls,
ButtonGroup,
SlideFade,
Editable,
Tooltip,
EditableInput,
} from "@chakra-ui/react";
import { CheckIcon, CloseIcon } from "@chakra-ui/icons";
function App() {
/* Here's a custom control */
function EditableControls() {
const {
isEditing,
getSubmitButtonProps,
getCancelButtonProps,
getEditButtonProps,
} = useEditableControls();
return isEditing ? (
<ButtonGroup justifyContent="end" size="sm" w="full" spacing={2} mt={2}>
<IconButton icon={<CheckIcon />} {...getSubmitButtonProps()} />
<IconButton
icon={<CloseIcon boxSize={3} />}
{...getCancelButtonProps()}
/>
</ButtonGroup>
) : null;
}
return (
<Editable
defaultValue="Rasengan ⚡️"
isPreviewFocusable={true}
selectAllOnFocus={false}
>
<Tooltip label="Click to edit">
<EditablePreview
py={2}
px={4}
_hover={{
background: useColorModeValue("gray.100", "gray.700"),
}}
/>
</Tooltip>
<Input py={2} px={4} as={EditableInput} />
<EditableControls />
</Editable>
);
}