Step 9: Delete Icon
Let’s add a delete action icon to each displayed note. Add a new file, NoteControl.jsx
to the components
folder with the following content:
import PropTypes from "prop-types";
import { Accordion, ActionIcon, Box } from "@mantine/core";
import { IconTrashX } from "@tabler/icons";
function NoteControl(props) {
const { note } = props;
const handleOnRemove = () => {
// TODO remove the note!
};
return (
<Box sx={{ display: "flex", alignItems: "center" }}>
<Accordion.Control>{note.title}</Accordion.Control>
<ActionIcon onClick={handleOnRemove} size="lg">
<IconTrashX size={16} />
</ActionIcon>
</Box>
);
}
export default NoteControl;
NoteControl.propTypes = {
note: PropTypes.shape({
title: PropTypes.string.isRequired,
text: PropTypes.string.isRequired,
}),
};
Next, update the Note.jsx
as follows
+ import NoteControl from "./NoteControl";
function Note(props) {
return (
<Accordion.Item value={note.title}>
- <Accordion.Control>{note.title}</Accordion.Control>
+ <NoteControl note={note} />
<Accordion.Panel>{note.text}</Accordion.Panel>
</Accordion.Item>
);
}
Observer the changes in the UI: