From d3b70042343e0f3617daa48871ab7ad91f422bb8 Mon Sep 17 00:00:00 2001 From: Antoine M Date: Wed, 6 May 2026 11:15:10 +0200 Subject: [PATCH] FEATURE introducing statistques collections --- .../statistiques-collections/block.json | 26 ++++++ .../statistiques-collections.php | 85 +++++++++++++++++++ .../statistiques-collections/view.js | 50 +++++++++++ plugins/carhop-blocks/carhop-blocks.php | 1 + 4 files changed, 162 insertions(+) create mode 100644 plugins/carhop-blocks/acf-blocks/statistiques-collections/block.json create mode 100644 plugins/carhop-blocks/acf-blocks/statistiques-collections/statistiques-collections.php create mode 100644 plugins/carhop-blocks/acf-blocks/statistiques-collections/view.js diff --git a/plugins/carhop-blocks/acf-blocks/statistiques-collections/block.json b/plugins/carhop-blocks/acf-blocks/statistiques-collections/block.json new file mode 100644 index 0000000..21f04b9 --- /dev/null +++ b/plugins/carhop-blocks/acf-blocks/statistiques-collections/block.json @@ -0,0 +1,26 @@ +{ + "name": "acf/statistiques-collections", + "title": "Statistiques collections", + "category": "carhop-blocks", + "multiple": true, + "icon": { + "foreground": "#136f63", + "src": "universal-access-alt" + }, + "keywords": [ + "statistiques", + "collections" + ], + "supports": { + "align": [ + "full", + "wide" + ] + }, + "acf": { + "mode": "auto", + "renderTemplate": "statistiques-collections.php" + }, + "align": "full", + "viewScript": "file:./view.js" +} \ No newline at end of file diff --git a/plugins/carhop-blocks/acf-blocks/statistiques-collections/statistiques-collections.php b/plugins/carhop-blocks/acf-blocks/statistiques-collections/statistiques-collections.php new file mode 100644 index 0000000..a43eea9 --- /dev/null +++ b/plugins/carhop-blocks/acf-blocks/statistiques-collections/statistiques-collections.php @@ -0,0 +1,85 @@ + + +
'statistiques-collections content-section')); ?>> +
+
+ + $document_statistic) : ?> + + + +
+
+ +
\ No newline at end of file diff --git a/plugins/carhop-blocks/acf-blocks/statistiques-collections/view.js b/plugins/carhop-blocks/acf-blocks/statistiques-collections/view.js new file mode 100644 index 0000000..11f910e --- /dev/null +++ b/plugins/carhop-blocks/acf-blocks/statistiques-collections/view.js @@ -0,0 +1,50 @@ +document.addEventListener("DOMContentLoaded", function () { + const tablist = document.querySelector( + ".statistiques-collections__toolbar .tablist", + ); + if (!tablist) return; + + const tabsButtons = tablist.querySelectorAll("button"); + + function setActiveTab(currentTab) { + tabsButtons.forEach((tab) => { + tab.setAttribute("aria-selected", "false"); + }); + currentTab.setAttribute("aria-selected", "true"); + } + + function setActiveTabPanel(currentTabButton) { + const currentTabPanelId = currentTabButton.getAttribute("aria-controls"); + const currentTabPanel = document.querySelector( + `.statistiques-collections__stats-items #${currentTabPanelId}`, + ); + currentTabPanel.setAttribute("data-active", "true"); + animateBar(currentTabPanel); + } + + function animateBar(currentTabPanel) { + const bar = currentTabPanel.querySelector(".percentage-bar"); + const percentage = bar.getAttribute("data-percentage"); + bar.style.width = "0%"; + requestAnimationFrame(() => { + bar.style.width = `${percentage}%`; + }); + } + + function hideAllTabPanels() { + const tabPanels = document.querySelectorAll( + ".statistiques-collections__stats-items .statistiques-collections__stat-item", + ); + tabPanels.forEach((tabPanel) => { + tabPanel.setAttribute("data-active", "false"); + }); + } + + tabsButtons.forEach((tab) => { + tab.addEventListener("click", () => { + setActiveTab(tab); + hideAllTabPanels(); + setActiveTabPanel(tab); + }); + }); +}); diff --git a/plugins/carhop-blocks/carhop-blocks.php b/plugins/carhop-blocks/carhop-blocks.php index a6ec9f4..f7b4709 100644 --- a/plugins/carhop-blocks/carhop-blocks.php +++ b/plugins/carhop-blocks/carhop-blocks.php @@ -28,6 +28,7 @@ function create_block_carhop_blocks_block_init() register_block_type(__DIR__ . '/acf-blocks/custom-video'); register_block_type(__DIR__ . '/acf-blocks/team-carhop'); register_block_type(__DIR__ . '/acf-blocks/member-card'); + register_block_type(__DIR__ . '/acf-blocks/statistiques-collections'); $manifest_data = require __DIR__ . '/build/blocks-manifest.php'; foreach (array_keys($manifest_data) as $block_type) {