PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.9.0
GiveWP – Donation Plugin and Fundraising Platform v4.9.0
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 / Admin / utils.ts
give / src / Admin Last commit date
components 9 months ago ajv.ts 9 months ago utils.ts 9 months ago
utils.ts
69 lines
1 import {formatDistanceToNow} from 'date-fns';
2
3 /**
4 * @since 4.0.0
5 */
6 export function amountFormatter(
7 currency: Intl.NumberFormatOptions['currency'],
8 options?: Intl.NumberFormatOptions
9 ): Intl.NumberFormat {
10 return new Intl.NumberFormat(navigator.language, {
11 style: 'currency',
12 currency: currency,
13 ...options,
14 });
15 }
16
17 /**
18 * @since unreleased
19 */
20 export function formatTimestamp(timestamp: string | null | undefined, useComma: boolean = false): string {
21 // Handle null, undefined, or empty string
22 if (!timestamp) {
23 return '';
24 }
25
26 const date = new Date(timestamp);
27
28 // Check if the date is valid
29 if (isNaN(date.getTime())) {
30 return '';
31 }
32
33 const day = date.getDate();
34 const ordinal = (day: number): string => {
35 if (day > 3 && day < 21) return 'th';
36 switch (day % 10) {
37 case 1:
38 return 'st';
39 case 2:
40 return 'nd';
41 case 3:
42 return 'rd';
43 default:
44 return 'th';
45 }
46 };
47
48 const dayWithOrdinal = `${day}${ordinal(day)}`;
49 const month = date.toLocaleString('en-US', {month: 'long'});
50 const year = date.getFullYear();
51 const time = date.toLocaleString('en-US', {hour: 'numeric', minute: '2-digit', hour12: true}).toLowerCase();
52 const separator = useComma ? ', ' : '';
53
54 return `${dayWithOrdinal} ${month} ${year}${separator}${time}`;
55 }
56
57 /**
58 * Returns a relative time string for a given date (e.g. "Today" or "2 days ago")
59 *
60 * @since unreleased
61 */
62 export function getRelativeTimeString(date: Date): string {
63 const now = new Date();
64 if (date.toDateString() === now.toDateString()) {
65 return 'Today';
66 }
67 return formatDistanceToNow(date, {addSuffix: true});
68 }
69