PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Campaigns / resources / admin / components / CampaignDetailsPage / Components / CampaignStats / PercentChangePill.tsx
give / src / Campaigns / resources / admin / components / CampaignDetailsPage / Components / CampaignStats Last commit date
DateRangeFilters.tsx 1 year ago PercentChangePill.tsx 1 year ago StatWidget.tsx 1 year ago index.tsx 9 months ago styles.module.scss 1 year ago types.ts 1 year ago
PercentChangePill.tsx
59 lines
1 import styles from './styles.module.scss';
2 import type {PercentChangePillProps} from './types';
3
4 /**
5 * @since 4.0.0
6 */
7 const getPercentageChange = (previousValue: number, currentValue: number) => {
8 if (previousValue === 0) {
9 return currentValue === 0 ? 0 : 100;
10 }
11
12 const value = currentValue - previousValue / Math.abs(previousValue) * 100;
13 if (value !== 100) {
14 return value.toFixed(1);
15 }
16
17 return value;
18 }
19
20 const IconArrowUp = () => (
21 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
22 <path d="M5.833 11.667 10 7.5l4.167 4.167H5.833z" fill="#2D802F"/>
23 </svg>
24 );
25
26 const IconArrowDown = () => (
27 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
28 <path d="M10 12.5 5.833 8.335h8.334L10 12.501z" fill="#D92D0B"/>
29 </svg>
30 )
31
32 const IconArrowRight = () => (
33 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
34 <path d="M8.334 14.167V5.834l4.166 4.167-4.166 4.166z" fill="#060C1A"/>
35 </svg>
36 )
37
38 /**
39 * @since 4.0.0
40 */
41 const PercentChangePill = ({value, comparison}: PercentChangePillProps) => {
42 const change = getPercentageChange(comparison, value);
43
44 const [color, backgroundColor, symbol] =
45 change === 0
46 ? ['#060c1a', '#f2f2f2', <IconArrowRight />]
47 : Number(change) > 0
48 ? ['#2d802f', '#f2fff3', <IconArrowUp />]
49 : ['#e35f45', '#fff4f2', <IconArrowDown />];
50
51 return (
52 <div className={styles.percentChangePill} style={{backgroundColor: backgroundColor, color: color}}>
53 {symbol} <span>{change}%</span>
54 </div>
55 );
56 };
57
58 export default PercentChangePill;
59