Skip to content

Commit 80248ca

Browse files
committed
fix
1 parent 99915a1 commit 80248ca

3 files changed

Lines changed: 70 additions & 13 deletions

File tree

public/dist/.vite/manifest.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
"src": "src/Assets/js/cardEvent.js",
3434
"isEntry": true,
3535
"imports": [
36-
"src/Assets/js/cardUtilities.js"
36+
"src/Assets/js/cardUtilities.js",
37+
"_countUp.min.bkv6uBOp.min.js"
3738
]
3839
},
3940
"src/Assets/js/cardStream.js": {
@@ -42,14 +43,18 @@
4243
"src": "src/Assets/js/cardStream.js",
4344
"isEntry": true,
4445
"imports": [
45-
"src/Assets/js/cardUtilities.js"
46+
"src/Assets/js/cardUtilities.js",
47+
"_countUp.min.bkv6uBOp.min.js"
4648
]
4749
},
4850
"src/Assets/js/cardUtilities.js": {
4951
"file": "cardUtilities.min.js",
5052
"name": "cardUtilities",
5153
"src": "src/Assets/js/cardUtilities.js",
52-
"isEntry": true
54+
"isEntry": true,
55+
"imports": [
56+
"_countUp.min.bkv6uBOp.min.js"
57+
]
5358
},
5459
"src/Assets/js/event.js": {
5560
"file": "event.min.js",

src/Assets/js/cardUtilities.js

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,59 @@
1+
import { CountUp } from 'countup.js';
2+
3+
const countUpOptions = {
4+
separator: ' ',
5+
decimal: ',',
6+
suffix: ' €',
7+
duration: 1.5,
8+
};
9+
10+
let amountCountUp = null;
11+
let lastDonorCount = null;
12+
13+
function initCountUp() {
14+
if (!amountCountUp) {
15+
const amountEl = document.getElementById('card-amount');
16+
if (amountEl && typeof CountUp !== 'undefined') {
17+
const startVal = window.currentAmount / 100;
18+
amountCountUp = new CountUp('card-amount', startVal, countUpOptions);
19+
if (!amountCountUp.error) {
20+
amountCountUp.start();
21+
}
22+
}
23+
}
24+
}
25+
126
function updateCardWidget() {
227
const currentAmountUnit = window.currentAmount / 100;
328
const goal = window.goalAmount || 1;
429
const percentage = Math.min(100, Math.round((currentAmountUnit / goal) * 100));
530

6-
const amountEl = document.getElementById('card-amount');
731
const barFill = document.getElementById('card-bar-fill');
832
const percentEl = document.getElementById('card-percentage');
933
const donorsEl = document.getElementById('card-donors');
1034

11-
if (amountEl) amountEl.textContent = currentAmountUnit.toLocaleString('fr-FR') + ' €';
35+
// Animate amount with CountUp
36+
initCountUp();
37+
if (amountCountUp) {
38+
amountCountUp.update(currentAmountUnit);
39+
} else {
40+
const amountEl = document.getElementById('card-amount');
41+
if (amountEl) amountEl.textContent = currentAmountUnit.toLocaleString('fr-FR') + ' €';
42+
}
43+
1244
if (barFill) barFill.style.width = percentage + '%';
1345
if (percentEl) percentEl.textContent = percentage + '%';
14-
if (donorsEl) donorsEl.textContent = window.donorCount ?? 0;
46+
47+
// Animate donor count change
48+
const newDonorCount = window.donorCount ?? 0;
49+
if (donorsEl) {
50+
if (lastDonorCount !== null && newDonorCount !== lastDonorCount) {
51+
donorsEl.classList.add('card-widget__pulse');
52+
setTimeout(() => donorsEl.classList.remove('card-widget__pulse'), 600);
53+
}
54+
donorsEl.textContent = newDonorCount;
55+
}
56+
lastDonorCount = newDonorCount;
1557
}
1658

1759
export default updateCardWidget;

src/views/widget/card.html.twig

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,6 @@
8484
overflow: hidden;
8585
}
8686
87-
.card-widget__bar-fill {
88-
height: 100%;
89-
border-radius: 999px;
90-
transition: width 1s ease;
91-
min-width: 2%;
92-
}
93-
9487
.card-widget__goal {
9588
font-size: 13px;
9689
white-space: nowrap;
@@ -110,6 +103,23 @@
110103
.card-widget__stats strong {
111104
font-weight: 700;
112105
}
106+
107+
.card-widget__bar-fill {
108+
height: 100%;
109+
border-radius: 999px;
110+
transition: width 1.5s ease;
111+
min-width: 2%;
112+
}
113+
114+
@keyframes pulse {
115+
0% { transform: scale(1); }
116+
50% { transform: scale(1.2); }
117+
100% { transform: scale(1); }
118+
}
119+
120+
.card-widget__pulse {
121+
animation: pulse 0.6s ease;
122+
}
113123
</style>
114124
{% endblock %}
115125
{% block content %}

0 commit comments

Comments
 (0)