UNPKG

react-date-heatmap

Version:

A React Component that allows you to visualize an array of dates in form of a heatmap.

119 lines (94 loc) 5.18 kB
# react-date-heatmap A React Component that allows you to visualize an array of dates in form of a heatmap. ![screenshot](./example/example-screenshot.PNG) ## Installation Install `react-date-heatmap` in your project using the following npm command: ```bash npm install react-date-heatmap ``` Or with yarn ```bash yarn add react-date-heatmap ``` After installation, you can use the ReactDateHeatmap component in your React project. ```jsx import React from 'react'; import ReactDateHeatmap from 'react-date-heatmap'; const YourComponent = () => { const arrayOfDates = /* ... */; return ( <ReactDateHeatmap data={arrayOfDates} /> ); } export default YourComponent; ``` ## Usage Example ```jsx import React, { useState } from "react"; import { DateEntry, ReactDateHeatmap } from "react-date-heatmap"; // generate an array of random dates function getRandomDateArray(length: number) { const startDate = new Date(2023, 9, 7); const endDate = new Date(2023, 11, 31); const dateArray: Date[] = []; for (let i = 0; i < length; i++) { const randomTime = startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()); const randomDate = new Date(randomTime); dateArray.push(randomDate); } return dateArray; } function ExampleApp() { const [data, setData] = useState(getRandomDateArray(100)); // Console log the Entry you clicked on const onSquareClick = (entry: DateEntry) => { console.log("You Clicked on entry", entry); }; // Create your own content div that shows up when you hover over a square/entry const TooltipContent = ({ entry }: { entry: DateEntry }) => { return ( <div style={{ display: "flex", flexDirection: "column" }}> <span>{entry.formatted}</span> <span>Entries: {entry.quantity}</span> </div> ); }; return ( <ReactDateHeatmap data={data} tooltipContent={TooltipContent} onSquareClick={onSquareClick} squareColor="#ff0000" /> ); } export default ExampleApp; ``` ## List of Props | Name | Type | Default Value | Description | | ------------------- | -------------------------------------------------- | ------------- | ---------------------------------------------------- | | `data` | `Date[]` | - | An array of dates to be visualized in the heatmap. | | `startDate` | `Date` | - | The start date for the heatmap range. | | `endDate` | `Date` | - | The end date for the heatmap range. | | `rows` | `number` | `7` | Number of rows to display in the heatmap grid. | | `showMonths` | `boolean` | `true` | Display month indicators on the heatmap. | | `showShades` | `boolean` | `true` | Display shades indicating the quantity of each date. | | `squareSize` | `number` | `32` | Size of each square in the heatmap grid. | | `squareColor` | `string` | `"#00ff00"` | Color of the filled squares in the heatmap. | | `textColor` | `string` | `#000000` | Color of the months text. | | `emptySquareColor` | `string` | `"#333333"` | Color of empty squares in the heatmap. | | `onSquareClick` | `(entry: DateEntry) => void` | - | Callback function triggered on square click. | | `hideTooltip` | `boolean` | `false` | Hide tooltips on square hover. | | `tooltipContent` | `({ entry }: { entry: DateEntry }) => JSX.Element` | - | Custom tooltip content for each square. | | `tooltipBackground` | `string` | `"#ffffff"` | Background color of the tooltip. | | `tooltipTextColor` | `string` | `"#000000"` | Text color of the tooltip. | ## Types ### DateEntry | Name | Type | Description | | ----------- | --------- | ---------------------------------------------- | | `date` | `Date` | The date represented by the entry. | | `formatted` | `string` | A formatted string representation of the date. | | `active` | `boolean` | Indicates whether the date is active or not. | | `quantity` | `number` | Quantity associated with the date. |