Categories: CSSScriptWeb Design

Generate Customizable Heat Maps For Date-based Activities – Heat.js

Heat.js is a lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends.

It uses color shading in calendar blocks to indicate intensity – lighter colors for less activity, darker colors for more.

Inspired by GitHub’s contribution graph, Heat.js is great for showcasing user activity, website traffic, or any other time-based data.

How
Sponsored
to use it:

1. Download the package and load the following JS/CSS files in the document.

<!-- Core -->
<link rel="stylesheet" href="/dist/heat.js.css" />
<script src="/dist/heat.js"></script>

<!-- Light Theme -->
<link rel="stylesheet" href="/dist/theme/heat.js.light.theme.css" />

<!-- Languages -->
<script src="/dist/translations/heat.translations.en.js"></script>
<script src="/dist/translations/heat.translations.es.js"></script>
<script src="/dist/translations/heat.translations.fr.js"></script>
...

2. Create a container to hold the heat map and pass the options via data-heat-js attribute. All possible options and callbacks:

  • view: “map”, “statistics”, or “chart”
  • views.map.showDayNames: true
  • views.map.showMonthDayGaps: true
  • views.map.showMonthNames: true
  • views.map.monthsToShow: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
  • views.map.daysToShow: [ 1, 2, 3, 4, 5, 6, 7 ]
  • views.map.showNoDataMessageWhenDataIsNotAvailable: false
  • views.map.placeMonthNamesOnTheBottom: false
  • views.map.showDaysInReverseOrder: false
  • views.map.showDayNumbers: false
  • views.map.keepScrollPositions: false
  • views.chart.enabled: true
  • views.chart.showMonthNames: true
  • views.chart.monthsToShow: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
  • views.chart.daysToShow: [ 1, 2, 3, 4, 5, 6, 7 ]
  • views.chart.showChartYLabels: true
  • views.chart.showInReverseOrder: false
  • views.chart.showLineNumbers: false
  • views.chart.keepScrollPositions: false
  • views.chart.showToolTips: true
  • views.chart.useGradients: false
  • views.statistics.enabled: true
  • views.statistics.monthsToShow: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
  • views.statistics.showInReverseOrder: false
  • views.statistics.daysToShow: [ 1, 2, 3, 4, 5, 6, 7 ]
  • views.statistics.showChartYLabels: true
  • views.statistics.showColorRangeLabels: true
  • views.statistics.useColorRangeNamesForLabels: false
  • views.statistics.showRangeNumbers: false
  • views.statistics.keepScrollPositions: false
  • views.statistics.showToolTips: true
  • views.statistics.useGradients: false
  • views.map.showMinimalDayNames: false
  • views.map.showMonthsInReverseOrder: false
  • views.map.showDayDateNumbers: false
  • views.map.showToolTips: true
  • views.chart.showLineDateNumbers: false
  • views.days.enabled: true
  • views.days.showChartYLabels: true
  • views.days.showDayNames: true
  • views.days.showInReverseOrder: false
  • views.days.showDayNumbers: false
  • views.days.monthsToShow: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  • views.days.daysToShow: [1, 2, 3, 4, 5, 6, 7]
  • views.days.keepScrollPositions: false
  • views.days.showToolTips: true
  • views.days.useGradients: false
  • views.days.useDifferentBackgroundOpacities: true
  • title.text: “Heat.js”
  • title.showText: true
  • title.showYearSelector: true
  • title.showRefreshButton: false
  • title.showExportButton: false
  • title.extraSelectionYears: 50
  • title.showYearSelectionDropDown: true
  • title.showImportButton: false
  • title.showConfigurationButton: true
  • title.showTitleDropDownButton: true
  • title.showTitleDropDownHeaders: true
  • title.showCurrentYearButton: true
  • title.showSectionText: true
  • title.showToolTips: true
  • description.text: null
  • description.url: null
  • description.urlTarget: ‘_blank’
  • guide.enabled: true
  • guide.colorRangeTogglesEnabled: true
  • guide.showLessAndMoreLabels: true
  • guide.showNumbersInGuide: false
  • guide.showToolTips: true
  • tooltip.delay: 750
  • tooltip.dayText: “{d}{o} {mmmm} {yyyy}”
  • colorRanges: [ { minimum: 10, cssClassName: ‘day-color-1’ } ]).
  • year: the current year
  • exportType: “csv”, “xml”, “txt”, “html”, “md”, “tsv”, or “json”
  • useLocalStorageForData: false
  • allowFileImports: true
  • yearsToHide: []
  • holidays: []
  • dataFetchDelay: 60000
  • showOnlyDataForYearsAvailable: false
  • showHolidaysInDayToolTips: false
  • resizable: false
  • startMonth: 0 for Jan
  • onDayClick: function(date, count, isHoliday){}
  • onBackYear: function(year){}
  • onNextYear: function(year){}
  • onSetYear: function(year){}
  • onRefresh: function(element){}
  • onBeforeRender: function(element){}
  • onRenderComplete: function(element){}
  • onDestroy: function(element){}
  • onExport: function(element){}
  • onTypeSwitch: function(type){}
  • onDayToolTipRender: function(date, count){}
  • onAdd: function(element){}
  • onRemove: function(element){}
  • onReset: function(element){}
  • onTypeSwitch: function(type){}
  • onViewSwitch: function(view){}
  • onColorRangeTypeToggle: function(id, visible){}
  • onImport: function(element){}
  • onStatisticClick: function(colorRange, count, year){}
  • onDataFetch: function(element){}
  • onClear: function(element){}
  • onUpdate: function(element){}
  • onOptionsUpdate: function(option){}
  • onWeekDayClick: function(weekday, dayCount, year){}
  • onDayDblClick( date, count, isHoliday )
  • onWeekDayDblClick( dayNumber, dayCount, year )
  • onStatisticDblClick( colorRange, count )
<div data-heat-js="{ 'showDayNames': true, 'views': { 'map': { 'showDayNames': true } }, onDayClick': onDayClick }">
  ...
</div>

3. Add activities or trends to the heat map.

$heat.addDate(elementId, date, type, [triggerRefresh]):

4. Available configurations.

$heat.setConfiguration({
  safeMode: false,
  domElementTypes: "*",
  observationMode: true,
  text: {
    stText: "st",
    ndText: "nd",
    rdText: "rd",
    thText: "th",
    backButtonText: "Back",
    nextButtonText: "Next",
    refreshButtonText: "Refresh",
    exportButtonText: "Export",
    lessText: "Less",
    moreText: "More",
    dateText: "Date",
    countText: "Count",
    monthNames: '[ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
    dayNames: '[ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ]'),
    dateText: 'Date',
    countText: 'Count',
    mapText: 'Map',
    chartText: 'Chart',
    noChartDataMessage: 'There is currently no data to view.',
    statisticsText: 'Statistics',
    noStatisticsDataMessage: 'There is currently no statistics to view.',
    unknownTrendText: 'Unknown',
    importButtonText: 'Import',
    noMapDataMessage: 'There is currently no data to view.',
    objectErrorText: 'Errors in object: {{error_1}}, {{error_2}}',
    attributeNotValidErrorText: 'The attribute '{{attribute_name}}' is not a valid object.',
    attributeNotSetErrorText: 'The attribute '{{attribute_name}}' has not been set correctly.',
    closeToolTipText: "Close",
    configurationToolTipText: "Configuration",
    configurationTitleText": "Configuration",
    visibleMonthsText": "Visible Months",
    visibleDaysText: "Visible Days",
    dataText: "Data",
    colorRangesText: "Color Ranges",
    yearText: "Year",
    daysText: "Days",
    noDaysDataMessage: "There are currently no days to view.",
    backButtonSymbolText: "←",
    nextButtonSymbolText: "→",
    refreshButtonSymbolText: "↻",
    exportButtonSymbolText: "↓",
    importButtonSymbolText: "↑",
    currentYearSymbolText: "⏎",
    currentYearText: "Current Year",
  }
})

5. More API methods.

// add dates
$heat.addDates(elementId, dates, [triggerRefresh])

// add a date
addDate(elementId, date, [triggerRefresh])

// remove
$heat.removeDate(elementId, date, type, [triggerRefresh]);

// reset
$heat.reset(elementId, [triggerRefresh]);

// refresh
$heat.refresh(elementId);

// refresh all instances
$heat.refreshAll();

// destroy
$heat.destroy(elementId);

// destroy all instances
$heat.destroyAll();

// set year
$heat.setYear(elementId, year)

// get year
$heat.getYear(elementId);

// set options
$heat.setConfiguration(newOptions);

// render a new heat map
$heat.render(element, options);

// render all heat maps
$heat.renderAll();

// set the year
$heat.setYear(elementId, year);
$heat.setYearToHighest(elementId);
$heat.setYearToLowest(elementId);

// import data from an array of file objects
$heat.import(elementID, files)

// export type: defaults to "json", also accepts "json", "xml", "md", "tsv", and "txt"
$heat.export(elementID, exportType);

// return all the IDs of the elements
$heat.getIds();

// reset all
$heat.resetAll();

// move to the prev year
$heat.moveToPreviousYear(elementId);

// move to the next year
$heat.moveToNextYear(elementId);

// move to the current year
$heat.moveToCurrentYear(elementId);

// switch the view
$heat.switchView(elementId, viewName);

// switch the type
$heat.switchType(elementId, type)

// update options
$heat.updateOptions(elementId, newOptions)

// clear a date
$heat.clearDate(elementId, date, [triggerRefresh])

// update a date
$heat.updateDate(elementId, date, count, [triggerRefresh])

5. Override the default CSS variables to create your own styles.

:root {

  // Fonts
  --heat-js-default-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
                          
  --heat-js-text-bold-weight: 400;
  --heat-js-title-bold-weight: 900;
  --heat-js-sub-title-bold-weight: 700;
  --heat-js-text-bold-weight-active: 900;

  // Colors
  --heat-js-color-black: #3b3a3a;
  --heat-js-color-white: #adbac7;
  --heat-js-color-snow-white: #F5F5F5;
  --heat-js-color-gray: #AAAAAA;
  --heat-js-color-light-gray: #BBBBBB;

  // Containers
  --heat-js-container-background-color: #22272e;
  --heat-js-container-border-color: #454c56;

  // Dialog
  --heat-js-dialog-background-color: var(--heat-js-container-background-color);
  --heat-js-dialog-border-color: var(--heat-js-container-border-color);
  --heat-js-dialog-text-color: var(--heat-js-color-white);

  // Year
  --heat-js-years-background-color: #11161e;
  --heat-js-years-border-color: var(--heat-js-container-border-color);
  --heat-js-years-text-color: var(--heat-js-color-white);
  --heat-js-years-background-color-hover: var(--heat-js-button-background-color-hover);
  --heat-js-years-text-color-hover: var(--heat-js-color-snow-white);

  // Title
  --heat-js-title-opener-text-color-hover: var(--heat-js-color-gray);
  --heat-js-title-background-color: var(--heat-js-years-background-color);
  --heat-js-title-border-color: var(--heat-js-container-border-color);
  --heat-js-title-text-color: var(--heat-js-color-white);
  --heat-js-title-background-color-hover: var(--heat-js-button-background-color-hover);
  --heat-js-title-text-color-hover: var(--heat-js-color-snow-white);

  // ToolTip
  --heat-js-tooltip-background-color: var(--heat-js-years-background-color);
  --heat-js-tooltip-border-color: var(--heat-js-container-border-color);
  --heat-js-tooltip-text-color: var(--heat-js-color-white);

  // Holidays
  --heat-js-holiday-background-color: rgba( 210, 43, 43, 0.75 );
  --heat-js-holiday-border-color: rgba( 210, 43, 43, 0.5 );
  --heat-js-holiday-text-color: var(--heat-js-color-black);

  // Days
  --heat-js-day-background-color: #2d333b;
  --heat-js-day-border-color: var(--heat-js-container-border-color);
  --heat-js-day-background-color-hover: var(--heat-js-container-border-color);
  --heat-js-day-spacing: 6.3px;
  --heat-js-day-opacity-hover: 0.7;
  --heat-js-day-opacity-active: 0.5;
  --heat-js-day-size: 1.2rem;
  --heat-js-day-chart-width: 10px;

  // Days - Colors
  --heat-js-day-color-1-background-color: rgba( 80, 200, 120, 0.25 );
  --heat-js-day-color-1-border-color: rgba( 80, 200, 120, 0.15 );
  --heat-js-day-color-1-text-color: var(--heat-js-color-white);
  --heat-js-day-color-2-background-color: rgba( 80, 200, 120, 0.50 );
  --heat-js-day-color-2-border-color: rgba( 80, 200, 120, 0.25 );
  --heat-js-day-color-2-text-color: var(--heat-js-color-white);
  --heat-js-day-color-3-background-color: rgba( 80, 200, 120, 0.75 );
  --heat-js-day-color-3-border-color: rgba( 80, 200, 120, 0.50 );
  --heat-js-day-color-3-text-color: var(--heat-js-color-black);
  --heat-js-day-color-4-background-color: rgba( 80, 200, 120, 1 );
  --heat-js-day-color-4-border-color: rgba( 80, 200, 120, 0.75 );
  --heat-js-day-color-4-text-color: var(--heat-js-color-black);

  // Views - Colors
  --heat-js-view-days-background-color: var(--heat-js-day-color-4-background-color);
  --heat-js-view-days-border-color: var(--heat-js-day-color-4-border-color);
  --heat-js-view-days-text-color: var(--heat-js-day-color-4-text-color);

  // Button
  --heat-js-button-background-color: var(--heat-js-day-background-color);
  --heat-js-button-border-color: var(--heat-js-container-border-color);
  --heat-js-button-text-color: var(--heat-js-color-white);
  --heat-js-button-background-color-hover: var(--heat-js-container-border-color);
  --heat-js-button-text-color-hover: var(--heat-js-color-snow-white);
  --heat-js-button-background-color-active: #616b79;
  --heat-js-button-text-color-active: var(--heat-js-color-snow-white);

  // CheckBox
  --heat-js-checkbox-background-color-checked: rgba( 80, 200, 120, 1 );
  --heat-js-checkbox-background-color: var(--heat-js-color-black);
  --heat-js-checkbox-border-color-checked: --heat-js-checkbox-background-color-checked;
  --heat-js-checkbox-border-color: var(--heat-js-color-white);

  // Panels
  --heat-js-panel-background-color: var(--heat-js-day-background-color);
  --heat-js-panel-border-color: var(--heat-js-container-border-color);

  // Borders
  --heat-js-border-control-radius: 0.25rem;
  --heat-js-border-radius: 0.5rem;
  --heat-js-border-radius-day: 0.35rem;
  --heat-js-border-size: 0.5px;
  --heat-js-border-size-day: 1px;

  // Sizes
  --heat-js-spacing: 10px;
  --heat-js-spacing-font-size: 0.85rem;
  --heat-js-spacing-day-font-size: 0.6rem;
  --heat-js-left-border: 8px;

  // Transitions
  --heat-js-transition: all .3s;
  --heat-js-animation-length: 0.5s;

  // Scroll Bars
  --heat-js-scroll-bar-size: 4px;
  --heat-js-scroll-bar-thumb-color: #3b434e;
  --heat-js-scroll-bar-border-radius: 0.5rem;

}

Changelog:

v4.5.2 (11/30/2025)

  • UI improvements and fixes
  • Add new options

v4.5.1 (11/29/2025)

  • Update and improvement

v4.5.0 (11/27/2025)

  • Added support for custom year-month ranges! So instead of defaulting to Jan-Dec, you can now use something like Apr-Mar. The UI will now show the years when this is used.
  • Added support to export all data to HTML (.html).
  • Added support to export all data to Markdown (.md).
  • Added support to export all data to Tab Separated Values (.tsv).
  • Added support to import data from a Tab Separated Values file (.tsv).
  • When the binding option “exportOnlyDataBeingViewed” is set to true, only data that is visible (months and days) will be exported.
  • BREAKING: The binding option “exportOnlyYearBeingViewed” has been renamed to “exportOnlyDataBeingViewed”.
  • Updated the binding option called “exportType” to have a new default value of “json”.
  • Added a new binding option called “startMonth”, which states the first month in the year that should be displayed (allows an Apr-Mar view, and defaults to 0, for Jan).
  • Added a new binding option called “views.map.showToolTips”, which states if the tooltips should be shown (defaults to true).
  • Added a new binding option called “views.chart.showToolTips”, which states if the tooltips should be shown (defaults to true).
  • Added a new binding option called “views.days.showToolTips”, which states if the tooltips should be shown (defaults to true).
  • Added a new binding option called “views.statistics.showToolTips”, which states if the tooltips should be shown (defaults to true).
  • Added a new binding option called “views.title.showToolTips”, which states if the tooltips should be shown (defaults to true).
  • Added a new binding option called “views.guide.showToolTips”, which states if the tooltips should be shown (defaults to true).
  • Added a new binding option called “views.chart.useGradients”, which states if the bar lines should use a gradient fill (defaults to false).
  • Added a new binding option called “views.days.useGradients”, which states if the bar lines should use a gradient fill (defaults to false).
  • Added a new binding option called “views.statistics.useGradients”, which states if the bar lines should use a gradient fill (defaults to false).
  • Added a new binding custom trigger called “events.onDayDblClick”, which triggers when a day is double-clicked.
  • Added a new binding custom trigger called “events.onWeekDayDblClick”, which triggers when a weekday is double-clicked.
  • Added a new binding custom trigger called “events.onStatisticDblClick”, which triggers when a statistic is double-clicked.
  • The title bar buttons now use a fixed height and width.
  • The title bar buttons now align all content so it’s always central.
  • When the counts/day dates are shown in the display, they are aligned vertically in the center.
  • The side Y labels shown in the “Chart”, “Day”, and “Color Range” views are now always visible, even on mobile devices.
  • Increased the right margin used for the bars in the “Chart” view by 0.5px.
  • Fixed bugs.

v4.4.0 (11/24/2025)

  • Added a new binding option called “resizable”, which states if horizontal resizing is enabled (defaults to false).
  • Added a new configuration option called “observationMode”, which states if looking for new DOM elements with the Heat.js binding should be done automatically (defaults to true).
  • Each day shown in the Map view now has a new attribute called “data-heat-js-map-date”, which stores the date for that map day.
  • Each bar shown in the Chart view now has a new attribute called “data-heat-js-chart-date”, which stores the date for that chart day.
  • Each bar shown in the Days view now has a new attribute called “data-heat-js-day-number”, which stores the day number.
  • Each bar shown in the Color Ranges view now has a new attribute called “data-heat-js-statistics-color-range-name”, which stores the name of the Color Range (if stated).
  • Added a new CSS variable “–heat-js-default-width”, which states what the default width should be.
  • The label links (in the footer) now use a bottom border for the underline effect when hovered (which allows a smooth transition).

v4.3.2 (11/16/2025)

  • Updated all the NPM packages to the latest versions.
  • Added a new “year” parameter for the event “onStatisticClick”, which is now passed after the “rangeCount” parameter.
  • Fixed the out-of-date BindingOptionsEvents for event triggers used when clicking in areas.
  • The left border on the main display is now only shown on larger screens (giving a little more room on smaller/mobile screens).
  • Added a new CSS variable called “–heat-js-scroll-bar-border-radius” (defaults to 0.5rem), which states the border radius the scrollbars should use.
  • The CSS variable “–heat-js-day-size” now defaults to 1.2rem instead of 1.1rem, making the day boxes slightly larger.
  • Added a new binding option called “views.map.showDayDateNumbers”, which states if the date day numbers should be shown (defaults to false).
  • Added a new binding option called “views.chart.showLineDateNumbers”, which states if the date day numbers should be shown (defaults to false).

v4.3.2 (11/16/2025)

  • Updated all the NPM packages to the latest versions.
  • SCSS/CSS improvements (less code).
  • The tooltips in the default dark view are now easier to see against the background.
  • Added a new option called “title.showSectionText” (defaults to true), which states if the current section being shown should be displayed in the title text.
  • Added some more spacing around the configuration dialog check boxes.
  • Increased the size of the scrollbar to make it a bit easier to click.
  • Added a new “isHoliday” parameter for the event “onDayClick”, which is now passed after the “count” parameter.
  • Fixed missing data from the other test events.
  • Updated the JS language usage in the documentation and testing HTML files.
  • Added a new “year” parameter for the event “onWeekDayClick”, which is now passed after the “dayCount” parameter.
  • Added a new “count” parameter for the event “onStatisticClick”, which is now passed after the “colorRange” parameter.

v4.3.1 (03/18/2025)

  • Added a new border to the left side of the main UI to make the control stand out a bit more.
  • The drop-down menus in the default dark view are now easier to see against the background.
  • The day names in the “Map” view remain visible on smaller screens.

v4.3.0 (03/07/2025)

  • Updated all the NPM packages to the latest versions.
  • Updated SASS usages of import to use (with minor accessor updates).
  • Scroll bars are now only shown when required for the views, and are styled using the default theme colors.
  • Fixed an issue that caused scroll bars to appear when not required.

v4.2.2 (10/14/2024)

  • UI improvements and fixes

v4.2.1 (09/02/2024)

  • UI improvements and fixes

v4.2.0 (08/20/2024)

  • UI improvements and fixes
  • Added new options

v4.1.1 (07/25/2024)

  • UI improvements and fixes

v4.1.0 (07/18/2024)

  • Code improvement
  • Add more options

v4.0.5 (07/16/2024)

  • Improvement

v4.0.4 (07/09/2024)

  • Added a “build-all” script option so that everything (including minimized versions) can be built with one command.
  • Minor CSS layout improvements.
  • Removed deprecated “cancelBubble” usages and replaced them with “stopPropagation()”.
  • Rewritten “getStyleValueByName()” to use the modern implementation to get a style.
  • Fixed a type mismatch between the PublicApi structure and the implementation.
  • Improved more type implementations.
  • Internal storage date methods are now exported via the “DateTime.ts” module.
  • The “import” public API function will now show the select files dialog if no files are passed.

v4.0.3 (07/06/2024)

  • Improvements

v4.0.2 (07/06/2024)

  • Bugfixes

v4.0.1 (07/04/2024)

  • Bugfixes

v4.0.0 (07/04/2024)

  • Rewritten in TypeScript

v3.2.0 (06/17/2024)

  • Added new options and methods.
  • Added export support

v3.1.2 (05/31/2024)

  • All text translations now allow empty text to be passed (which will prevent them from defaulting to the English version).

v3.1.1 (05/07/2024)

  • Added more options.
  • Fixed bugs.

v3.1.0 (04/02/2024)

  • Added more options.

v3.0.0 (03/29/2024)

  • Added more options.
  • CSS renames to ensure they do not collide with other libraries, along with internal refactoring.
  • Added a new configuration icon to the main display, which will allow the Days/Months to be toggled easily per view!
  • Added a brand new view called “Days”, which will allow you to see the counts for the days of the week for the entire year.
  • Redesigned the title drop-down menu.
  • Fixed bugs.

v2.8.0 (03/18/2024)

  • Added more options.
  • Added support for import from CSV

v2.7.2 (03/18/2024)

  • The “unload” window event has been replaced with “pagehide”
  • Added more options

v2.7.1 (03/07/2024)

  • Minor improvements

v2.7.0 (03/06/2024)

  • New options
  • Code improvements.
  • Bugfixes.

v2.6.0 (02/26/2024)

Sponsored
  • Added new options, callbacks and methods.
  • Code improvements.
  • Bugfixes.

v2.5.0 (02/21/2024)

  • Added new options, callbacks and methods.
  • Added more translations.
  • Updated UI

v2.4.0 (02/19/2024)

  • Added holiday support
  • Added data pulling support
  • Added new options and callbacks
  • Improved code

v2.3.0 (02/18/2024)

  • Added “Import” button
  • Added new options
  • Bugfixes

v2.2.0 (02/17/2024)

  • Export to TXT support
  • Added new options
  • Changed UI
  • Fixed bugs

v2.1.1 (02/15/2024)

  • Bugfixes

v2.1.0 (02/13/2024)

  • Added file-dropping support to all views, which allows exported JSON data to be re-imported to the currently selected trend type.
  • Updated options
  • Added new options

v2.0.0 (02/11/2024)

  • Added more options
  • Added more translations
  • Added more themes
  • Fixed bugs
  • Updated CSS

1.9.2 (02/06/2024)

  • Added more options

1.9.0 (02/05/2024)

  • Export to XML support
  • Add more API
  • Code improvement
  • Bugfix

1.8.3 (02/04/2024)

  • Minor color and layout adjustments

1.8.2 (02/03/2024)

  • Added 13 languages

1.8.1 (02/02/2024)

  • 15 new languages and fixes

1.8.0 (02/02/2024)

  • Added a new “Statistics” view, which shows the total count per map range type (in a bar chart)
  • Added label support for the bottom right
  • Added more options and API methods

1.7.1 (02/01/2024)

  • Bugfixes

1.7.0 (02/01/2024)

  • Added export to JSON support
  • Added more options and API methods.
  • Added more themes
  • Updated CSS

1.6.4 (01/30/2024)

  • Bugfix

1.6.3 (01/30/2024)

  • Update

1.6.2 (01/29/2024)

  • Added hover effect for the guide day toggles that are turned off.

1.6.1 (01/29/2024)

  • Bugfixes

1.6.0 (01/29/2024)

  • Added more options and API methods.
  • Added custom tooltip support!

1.5.1 (01/27/2024)

  • Added more options
  • Bugfixed

1.5.0 (01/25/2024)

  • Added more options
  • Updated CSS
  • Optimized code

1.4.0 (01/23/2024)

  • Added more options
  • Added more API methods
  • Updated CSS

1.3.0 (01/23/2024)

  • Added more options
  • Added more methods

1.2.1 (01/22/2024)

  • Fixed a minor fault that caused the month names to be centred.
  • Fixed the day name labels shown on the right, so are now the same height/margin as the days, allowing them to align correctly.
  • Added new “:root” variable “–heat-js-border-size-day”, which states the size to use the days/day name heights.
  • Fixed the day name labels not being aligned to the middle vertically.
  • Increased the default size of the days from 0.85rem to 1.1rem.
  • The day names are now hidden in mobile view.
  • The type/guide toggles are now stacked in mobile view and centred (make them much easier to access and see).
  • The export/refresh buttons are now hidden in mobile view.
  • Added new “:root” variable “–heat-js-button-text-color”, which will allow you to override the button text colors.
  • The light mode theme buttons now use a darker background color (so they stand out).
  • Added the button margin back in for the test files.

1.2.0 (01/19/2024)

  • Added new options
  • Updated CSS
  • Added new themes

1.1.0 (01/19/2024)

  • Added more languages

1.0.0 (01/18/2024)

  • Added new options and callbacks
  • Bugfixes

0.9.0 (01/17/2024)

  • Added new options and callbacks
  • Added new CSS variables

0.8.0 (01/17/2024)

  • Added new options and callbacks
  • The heat map layout is now fully responsive with mobile and tablet views.
  • When exporting the map details, the type selected is now included in the filename (if types are available).

0.7.0 (01/15/2024)

  • All “:root” variables now start with “–heat-js-“, which will prevent collisions with other libraries.

0.6.0 (01/14/2024)

  • Added Trend types support
  • The “More” and “Less” labels can now be clicked
  • Renamed the “year” CSS class to “title-bar”
  • Bugfix

0.5.0 (01/11/2024)

  • The heat map can now export all data to a CSV file
  • Added new options and methods.

0.4.0 (01/11/2024)

  • Added new options and methods.

The post Generate Customizable Heat Maps For Date-based Activities – Heat.js appeared first on CSS Script.

rssfeeds-admin

Share
Published by
rssfeeds-admin

Recent Posts

AliExpress Has a 350W Adult Electric Scooter With a Top Speed of 19mph Starting at Just $109

There are many reasons why an electric scooter might be a better fit for you…

19 minutes ago

Alan Wake 2 Deluxe Edition for PS5 Has Hit a New Low Price at Amazon

The arrival of a new Remedy game this year is a great excuse to jump…

19 minutes ago

Android’s Find Hub adds iPhone-like luggage tracking links

A Chipolo Pop tracker. | Photo by Dominic Preston / The Verge Google is rolling…

54 minutes ago

Google’s latest Pixel drop allows Gemini to order groceries for you and more

Google is adding several new features to Pixel phones with its latest March update, including…

54 minutes ago

Google brings Android’s desktop mode to Pixel devices

Google is bringing a new desktop mode to its Pixel phones and tablets. The feature…

54 minutes ago

This $19 Iniu 20,000 Power Bank Quadruples Your Nintendo Switch 2 Play Time

If you're looking for a high-capacity power bank to extend your Nintendo Switch 2 or…

1 hour ago

This website uses cookies.