diff --git a/package.json b/package.json index b090b320980..9dcbf411d38 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "@replit/codemirror-lang-svelte": "6.0.0", "@replit/codemirror-vscode-keymap": "6.0.2", "@resvg/resvg-wasm": "2.6.2", - "@silverwind/vue3-calendar-heatmap": "2.1.1", "@vitejs/plugin-vue": "6.0.6", "ansi_up": "6.0.6", "asciinema-player": "3.15.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a05156011e8..fdc569187a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,9 +112,6 @@ importers: '@resvg/resvg-wasm': specifier: 2.6.2 version: 2.6.2 - '@silverwind/vue3-calendar-heatmap': - specifier: 2.1.1 - version: 2.1.1(tippy.js@6.3.7)(vue@3.5.32(typescript@6.0.2)) '@vitejs/plugin-vue': specifier: 6.0.6 version: 6.0.6(vite@8.0.8(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1))(vue@3.5.32(typescript@6.0.2)) @@ -1249,13 +1246,6 @@ packages: '@scarf/scarf@1.4.0': resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} - '@silverwind/vue3-calendar-heatmap@2.1.1': - resolution: {integrity: sha512-RQtLOpkysm0LR3PbUoc+aDcYxzy7xboygb1SQEwrUm2/XB2nmt0BEra2ADXpu4kwFxtk0+IyNwzFvbBai/wvTg==} - engines: {node: '>=16'} - peerDependencies: - tippy.js: ^6.3.7 - vue: ^3.2.29 - '@simonwep/pickr@1.9.0': resolution: {integrity: sha512-oEYvv15PyfZzjoAzvXYt3UyNGwzsrpFxLaZKzkOSd0WYBVwLd19iJerePDONxC1iF6+DpcswPdLIM2KzCJuYFg==} @@ -5052,11 +5042,6 @@ snapshots: '@scarf/scarf@1.4.0': {} - '@silverwind/vue3-calendar-heatmap@2.1.1(tippy.js@6.3.7)(vue@3.5.32(typescript@6.0.2))': - dependencies: - tippy.js: 6.3.7 - vue: 3.5.32(typescript@6.0.2) - '@simonwep/pickr@1.9.0': dependencies: core-js: 3.32.2 diff --git a/tests/e2e/heatmap.test.ts b/tests/e2e/heatmap.test.ts new file mode 100644 index 00000000000..5aabfab196c --- /dev/null +++ b/tests/e2e/heatmap.test.ts @@ -0,0 +1,9 @@ +import {test, expect} from '@playwright/test'; +import {login} from './utils.ts'; + +test('heatmap tooltip shows on hover', async ({page}) => { + await login(page); + await page.goto('/'); + await page.locator('.heatmap-day').first().hover(); + await expect(page.locator('.tippy-box[data-state="visible"]')).toBeVisible(); +}); diff --git a/web_src/css/features/heatmap.css b/web_src/css/features/heatmap.css index e40adf1fe48..a2d8c4ea590 100644 --- a/web_src/css/features/heatmap.css +++ b/web_src/css/features/heatmap.css @@ -32,26 +32,29 @@ fill: currentcolor !important; } -/* root legend */ -#user-heatmap .vch__container > .vch__legend { +#user-heatmap .heatmap-footer { display: flex; font-size: 11px; justify-content: space-between; } -/* for the "Less" and "More" legend */ -#user-heatmap .vch__legend .vch__legend { +/* "Less [colors] More" scale */ +#user-heatmap .heatmap-legend { display: flex; align-items: center; justify-content: right; } -#user-heatmap .vch__legend .vch__legend div:first-child, -#user-heatmap .vch__legend .vch__legend div:last-child { +#user-heatmap .heatmap-legend-svg { + margin-right: -12px; +} + +#user-heatmap .heatmap-legend > div:first-child, +#user-heatmap .heatmap-legend > div:last-child { display: inline-block; padding: 0 5px; } -#user-heatmap .vch__day__square:hover { +#user-heatmap .heatmap-day:hover { outline: 1.5px solid var(--color-text); } diff --git a/web_src/js/components/ActivityHeatmap.vue b/web_src/js/components/ActivityHeatmap.vue index 7c7e0cd94ca..08c590aa16b 100644 --- a/web_src/js/components/ActivityHeatmap.vue +++ b/web_src/js/components/ActivityHeatmap.vue @@ -1,21 +1,23 @@ - - {{ locale.textTotalContributions }} - + + + + + {{ locale.heatMapLocale.months[m.monthIdx] }} + + + + {{ locale.heatMapLocale.days[1] }} + {{ locale.heatMapLocale.days[3] }} + {{ locale.heatMapLocale.days[5] }} + + + + + + + + + + +