ferns-ui 0.44.2 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/Common.d.ts +16 -0
  2. package/dist/DateTimeActionSheet.d.ts +1 -1
  3. package/dist/DateTimeActionSheet.js +130 -95
  4. package/dist/DateTimeActionSheet.js.map +1 -1
  5. package/dist/DateTimeField.android.d.ts +1 -1
  6. package/dist/DateTimeField.android.js +20 -20
  7. package/dist/DateTimeField.android.js.map +1 -1
  8. package/dist/DateTimeField.ios.d.ts +1 -1
  9. package/dist/DateTimeField.ios.js +21 -21
  10. package/dist/DateTimeField.ios.js.map +1 -1
  11. package/dist/DateUtilities.d.ts +50 -0
  12. package/dist/DateUtilities.js +240 -0
  13. package/dist/DateUtilities.js.map +1 -0
  14. package/dist/DateUtilities.test.d.ts +1 -0
  15. package/dist/DateUtilities.test.js +270 -0
  16. package/dist/DateUtilities.test.js.map +1 -0
  17. package/dist/Field.d.ts +1 -1
  18. package/dist/Field.js +2 -2
  19. package/dist/Field.js.map +1 -1
  20. package/dist/TextField.d.ts +1 -1
  21. package/dist/TextField.js +36 -34
  22. package/dist/TextField.js.map +1 -1
  23. package/dist/TextFieldNumberActionSheet.js +1 -2
  24. package/dist/TextFieldNumberActionSheet.js.map +1 -1
  25. package/dist/TimezonePicker.d.ts +3 -0
  26. package/dist/TimezonePicker.js +26 -0
  27. package/dist/TimezonePicker.js.map +1 -0
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.js +1 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/setupTests.d.ts +0 -0
  32. package/dist/setupTests.js +3 -0
  33. package/dist/setupTests.js.map +1 -0
  34. package/package.json +37 -54
  35. package/src/Common.ts +19 -0
  36. package/src/DateTimeActionSheet.tsx +178 -119
  37. package/src/DateTimeField.android.tsx +18 -17
  38. package/src/DateTimeField.ios.tsx +19 -18
  39. package/src/DateUtilities.test.ts +417 -0
  40. package/src/DateUtilities.tsx +296 -0
  41. package/src/Field.tsx +2 -0
  42. package/src/TextField.tsx +34 -31
  43. package/src/TextFieldNumberActionSheet.tsx +1 -2
  44. package/src/TimezonePicker.tsx +52 -0
  45. package/src/index.tsx +1 -0
  46. package/src/setupTests.ts +1 -0
  47. package/dist/dayjsExtended.d.ts +0 -2
  48. package/dist/dayjsExtended.js +0 -10
  49. package/dist/dayjsExtended.js.map +0 -1
  50. package/src/dayjsExtended.ts +0 -11
@@ -0,0 +1,50 @@
1
+ export declare function isTomorrow(date: string, { timezone }?: {
2
+ timezone?: string;
3
+ }): boolean;
4
+ export declare function isYesterday(date: string, { timezone }?: {
5
+ timezone?: string;
6
+ }): boolean;
7
+ export declare function isToday(date: string, { timezone }?: {
8
+ timezone?: string;
9
+ }): boolean;
10
+ export declare function isThisYear(date: string, { timezone }?: {
11
+ timezone?: string;
12
+ }): boolean;
13
+ export declare function isWithinWeek(date: string, { timezone }?: {
14
+ timezone?: string;
15
+ }): boolean;
16
+ export declare function humanDate(date: string, { timezone, dontShowTime }?: {
17
+ timezone?: string;
18
+ dontShowTime?: boolean;
19
+ }): string;
20
+ export declare function humanDateAndTime(date: string, { timezone, showTimezone }?: {
21
+ timezone?: string;
22
+ showTimezone?: boolean;
23
+ }): string;
24
+ export declare const printDate: (date?: string, { timezone, showTimezone, ignoreTime, defaultValue, }?: {
25
+ timezone?: string | undefined;
26
+ showTimezone?: boolean | undefined;
27
+ ignoreTime?: boolean | undefined;
28
+ defaultValue?: string | undefined;
29
+ }) => string;
30
+ export declare const printOnlyDate: (date?: string, { defaultValue, }?: {
31
+ defaultValue?: string | undefined;
32
+ }) => string;
33
+ export declare function printTime(date?: string, { timezone, showTimezone, defaultValue, }?: {
34
+ timezone: string;
35
+ showTimezone?: boolean;
36
+ defaultValue?: string;
37
+ }): string;
38
+ export declare function printDateAndTime(date?: string, { timezone, showTimezone, defaultValue, }?: {
39
+ timezone?: string;
40
+ showTimezone?: boolean;
41
+ defaultValue?: string;
42
+ }): string;
43
+ export declare function printDateRange(start: string, end: string, { timezone, showTimezone }: {
44
+ timezone: string;
45
+ showTimezone?: boolean;
46
+ }): string;
47
+ export declare function printSince(date: string, { timezone, showAgo }?: {
48
+ timezone?: string;
49
+ showAgo?: boolean;
50
+ }): string;
@@ -0,0 +1,240 @@
1
+ import { DateTime } from "luxon";
2
+ function getDate(date, { timezone } = {}) {
3
+ if (!date) {
4
+ throw new Error("Passed undefined");
5
+ }
6
+ if (typeof date !== "string") {
7
+ throw new Error(`Invalid date type: ${typeof date}`);
8
+ }
9
+ const clonedDate = timezone ? DateTime.fromISO(date).setZone(timezone) : DateTime.fromISO(date);
10
+ if (!clonedDate.isValid) {
11
+ throw new Error(`Invalid date: ${date}`);
12
+ }
13
+ return clonedDate;
14
+ }
15
+ export function isTomorrow(date, { timezone } = {}) {
16
+ const clonedDate = getDate(date, { timezone });
17
+ const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
18
+ const diff = now.startOf("day").diff(clonedDate.startOf("day"), "days");
19
+ return diff.days <= -1 && diff.days > -2;
20
+ }
21
+ export function isYesterday(date, { timezone } = {}) {
22
+ const clonedDate = getDate(date, { timezone });
23
+ const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
24
+ const diff = now.startOf("day").diff(clonedDate.startOf("day"), "days");
25
+ return diff.days <= 1 && diff.days > -1;
26
+ }
27
+ export function isToday(date, { timezone } = {}) {
28
+ const clonedDate = getDate(date, { timezone });
29
+ const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
30
+ const diff = now.startOf("day").diff(clonedDate.startOf("day"), "days");
31
+ return diff.days === 0;
32
+ }
33
+ export function isThisYear(date, { timezone } = {}) {
34
+ const clonedDate = getDate(date, { timezone });
35
+ const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
36
+ return clonedDate.year === now.year;
37
+ }
38
+ export function isWithinWeek(date, { timezone } = {}) {
39
+ const clonedDate = getDate(date, { timezone });
40
+ const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
41
+ const diff = now.startOf("day").diff(clonedDate.startOf("day"), "days");
42
+ return diff.days > -7 && diff.days < 7;
43
+ }
44
+ // Prints a human friendly date, e.g. "Tomorrow", "Yesterday", "Monday", "June 19", "December 25,
45
+ // 2022".
46
+ export function humanDate(date, { timezone, dontShowTime } = {}) {
47
+ let clonedDate;
48
+ try {
49
+ clonedDate = getDate(date, { timezone });
50
+ }
51
+ catch (error) {
52
+ throw new Error(`humanDate: ${error.message}`);
53
+ }
54
+ if (isTomorrow(date, { timezone })) {
55
+ return "Tomorrow";
56
+ }
57
+ else if (isToday(date, { timezone })) {
58
+ if (dontShowTime) {
59
+ return "Today";
60
+ }
61
+ else {
62
+ return clonedDate.toFormat("h:mm a");
63
+ }
64
+ }
65
+ else if (isYesterday(date, { timezone })) {
66
+ return "Yesterday";
67
+ }
68
+ else if (isWithinWeek(date, { timezone })) {
69
+ // E.g. Monday
70
+ return clonedDate.toFormat("EEEE");
71
+ }
72
+ else if (isThisYear(date, { timezone })) {
73
+ // E.g. June 19
74
+ return clonedDate.toFormat("MMM d");
75
+ }
76
+ else {
77
+ // December 25, 2022
78
+ return clonedDate.toFormat("MMM d, iiii");
79
+ }
80
+ }
81
+ // Prints a human friendly date and time, e.g. "Tomorrow 9:00 AM", "Yesterday 9:00 AM", "Monday
82
+ // 9:00 AM", "June 19 9:00 AM", "December 25, 2022 9:00 AM".
83
+ export function humanDateAndTime(date, { timezone, showTimezone = true } = {}) {
84
+ let clonedDate;
85
+ try {
86
+ clonedDate = getDate(date, { timezone });
87
+ }
88
+ catch (error) {
89
+ throw new Error(`humanDateAndTime: ${error.message}`);
90
+ }
91
+ // This should maybe use printTime()
92
+ let time = clonedDate.toFormat("h:mm a");
93
+ if (showTimezone) {
94
+ time += ` ${clonedDate.offsetNameShort}`;
95
+ }
96
+ if (isTomorrow(date, { timezone })) {
97
+ return `Tomorrow ${time}`;
98
+ }
99
+ else if (isToday(date, { timezone })) {
100
+ return time;
101
+ }
102
+ else if (isYesterday(date, { timezone })) {
103
+ return `Yesterday ${time}`;
104
+ }
105
+ else if (isWithinWeek(date, { timezone })) {
106
+ // E.g. Monday 9:00 AM
107
+ return `${clonedDate.toFormat("EEEE")} ${time}`;
108
+ }
109
+ else if (isThisYear(date, { timezone })) {
110
+ // E.g. June 19
111
+ return `${clonedDate.toFormat("MMM d")} ${time}`;
112
+ }
113
+ else {
114
+ // December 25, 2022
115
+ return `${clonedDate.toFormat("MMM d, iiii")} ${time}`;
116
+ }
117
+ }
118
+ // Print date in the format of M/D/YY, taking timezones into account.
119
+ export const printDate = (date, { timezone, showTimezone, ignoreTime, defaultValue, } = {}) => {
120
+ if (!date) {
121
+ return defaultValue !== null && defaultValue !== void 0 ? defaultValue : "Invalid Date";
122
+ }
123
+ if (showTimezone) {
124
+ console.warn("showTimezone is not supported for printDate");
125
+ }
126
+ let clonedDate;
127
+ try {
128
+ clonedDate = getDate(date, { timezone });
129
+ }
130
+ catch (error) {
131
+ throw new Error(`printDate: ${error.message}`);
132
+ }
133
+ if (ignoreTime) {
134
+ if (!date) {
135
+ throw new Error("printDate: Passed undefined");
136
+ }
137
+ // Use only the date component, ignore the time.
138
+ const justDate = DateTime.fromISO(date);
139
+ // We force it into UTC so we can get the correct date.
140
+ return justDate.setZone("UTC").toFormat("M/d/yyyy");
141
+ }
142
+ return clonedDate.toLocaleString(DateTime.DATE_SHORT);
143
+ };
144
+ // For printing dates from date times, ignoring the time. These should end in T00:00:00.000Z.
145
+ // For example, the dates returned by Field type="date".
146
+ export const printOnlyDate = (date, { defaultValue, } = {}) => {
147
+ if (!date) {
148
+ return defaultValue !== null && defaultValue !== void 0 ? defaultValue : "Invalid Date";
149
+ }
150
+ if (!(date === null || date === void 0 ? void 0 : date.endsWith("T00:00:00.000Z"))) {
151
+ console.warn("printOnlyDate, but the time is not set to midnight UTC. " +
152
+ "This may cause unexpected behavior.");
153
+ }
154
+ // Use only the date component, ignore the time.
155
+ const justDate = DateTime.fromISO(date, { zone: "UTC" });
156
+ // We force it into UTC so we can get the correct date.
157
+ return justDate.toFormat("M/d/yyyy");
158
+ };
159
+ // Print time in the format of HH:mm A, taking timezones into account.
160
+ export function printTime(date, { timezone, showTimezone, defaultValue, } = { timezone: "America/New_York", defaultValue: "Invalid Date" }) {
161
+ if (!date) {
162
+ return defaultValue !== null && defaultValue !== void 0 ? defaultValue : "Invalid Date";
163
+ }
164
+ let clonedDate;
165
+ if (!timezone) {
166
+ throw new Error("printTime: timezone is required");
167
+ }
168
+ try {
169
+ clonedDate = getDate(date, { timezone });
170
+ }
171
+ catch (error) {
172
+ throw new Error(`printTime: ${error.message}`);
173
+ }
174
+ if (showTimezone) {
175
+ return clonedDate.toFormat("h:mm a ZZZZ");
176
+ }
177
+ else {
178
+ return clonedDate.toLocaleString(DateTime.TIME_SIMPLE);
179
+ }
180
+ }
181
+ // Print date in the format of M/D/YY HH:mm A, taking timezones into account.
182
+ export function printDateAndTime(date, { timezone, showTimezone, defaultValue, } = {}) {
183
+ if (!date) {
184
+ return defaultValue !== null && defaultValue !== void 0 ? defaultValue : "Invalid Datetime";
185
+ }
186
+ let clonedDate;
187
+ try {
188
+ clonedDate = getDate(date, { timezone });
189
+ }
190
+ catch (error) {
191
+ throw new Error(`printDateAndTime: ${error.message}`);
192
+ }
193
+ let dateString = clonedDate.toLocaleString(DateTime.DATETIME_SHORT);
194
+ if (showTimezone) {
195
+ dateString += ` ${clonedDate.offsetNameShort}`;
196
+ }
197
+ return dateString;
198
+ }
199
+ // Prints a date range in the format of M/D/YY HH:mm A - M/D/YY HH:mm A EST, taking timezones into
200
+ // account. If the dates are the same, it will print the date only once, e.g. M/D/YY HH:mm A - HH:mm
201
+ // A EST.
202
+ export function printDateRange(start, end, { timezone, showTimezone = true }) {
203
+ const startDate = printDate(start, { timezone, showTimezone: false });
204
+ const endDate = printDate(end, { timezone, showTimezone: false });
205
+ const startTime = printTime(start, { timezone, showTimezone: false });
206
+ const endTime = printTime(end, { timezone, showTimezone });
207
+ if (startDate === endDate) {
208
+ return `${startDate} ${startTime} - ${endTime}`;
209
+ }
210
+ else {
211
+ return `${startDate} ${startTime} - ${endDate} ${endTime}`;
212
+ }
213
+ }
214
+ // Print since nicely. If less than 2 months, print days, otherwise print months. If over 1 year,
215
+ // print years.
216
+ export function printSince(date, { timezone, showAgo = true } = {}) {
217
+ let clonedDate;
218
+ const ago = showAgo ? " ago" : "";
219
+ try {
220
+ clonedDate = getDate(date, { timezone });
221
+ }
222
+ catch (error) {
223
+ throw new Error(`printSince: ${error.message}`);
224
+ }
225
+ const now = timezone ? DateTime.now().setZone(timezone) : DateTime.now();
226
+ const diff = now.diff(clonedDate, "months");
227
+ if (diff.months < 2) {
228
+ const days = Math.floor(now.diff(clonedDate, "days").days);
229
+ return `${days} ${days === 1 ? "day" : "days"}${ago}`;
230
+ }
231
+ else if (diff.months < 12) {
232
+ const months = Math.floor(diff.months);
233
+ return `${months} ${months === 1 ? "month" : "months"}${ago}`;
234
+ }
235
+ else {
236
+ const years = Math.floor(now.diff(clonedDate, "years").years);
237
+ return `${years} ${years === 1 ? "year" : "years"}${ago}`;
238
+ }
239
+ }
240
+ //# sourceMappingURL=DateUtilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateUtilities.js","sourceRoot":"","sources":["../src/DateUtilities.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,270 @@
1
+ // Write a jest test for the DateUtilities functions
2
+ import { humanDate, humanDateAndTime, printDate, printDateAndTime, printDateRange, printOnlyDate, printSince, printTime, } from "./DateUtilities";
3
+ describe("DateUtilities", function () {
4
+ beforeEach(() => {
5
+ jest.useFakeTimers();
6
+ jest.setSystemTime(new Date("2022-12-24T12:00:00.000Z"));
7
+ });
8
+ describe("humanDate", function () {
9
+ it("should return invalid date if date is undefined", function () {
10
+ expect(() => humanDate(undefined, { timezone: "America/New_York" })).toThrow("humanDate: Passed undefined");
11
+ });
12
+ it("should throw an error if date is invalid", function () {
13
+ expect(() => humanDate("invalid date")).toThrow("humanDate: Invalid date: invalid date");
14
+ });
15
+ it("should return 'Tomorrow' if the date is tomorrow", function () {
16
+ expect(humanDate("2022-12-25T12:00:00.000Z")).toBe("Tomorrow");
17
+ });
18
+ it("should return the time if the date is today", function () {
19
+ expect(humanDate("2022-12-24T12:00:00.000Z")).toBe("7:00 AM");
20
+ });
21
+ it("should return the date if the date is today and don't show date is true", function () {
22
+ expect(humanDate("2022-12-24T12:00:00.000Z", { dontShowTime: true })).toBe("Today");
23
+ });
24
+ it("should return 'Yesterday' if the date is yesterday", function () {
25
+ expect(humanDate("2022-12-23T12:00:00.000Z")).toBe("Yesterday");
26
+ });
27
+ it("should return the day of the week if the date is within the last week", function () {
28
+ expect(humanDate("2022-12-18T12:00:00.000Z")).toBe("Sunday");
29
+ });
30
+ it("should return the month and day if the date is within the current year", function () {
31
+ expect(humanDate("2022-06-19T12:00:00.000Z")).toBe("Jun 19");
32
+ });
33
+ it("should return the month, day, and year if the date is not within the current year", function () {
34
+ expect(humanDate("2023-12-25T12:00:00.000Z")).toBe("Dec 25, 2023");
35
+ });
36
+ it("should use the timezone properly around the day boundary", function () {
37
+ // Today is 2022-12-24T05:00:00.000 to 2022-12-25T04:59:59.999
38
+ expect(humanDate("2022-12-24T04:00:00.000Z", { timezone: "America/New_York" })).toBe("Yesterday");
39
+ expect(humanDate("2022-12-24T05:00:00.000Z", { timezone: "America/New_York" })).toBe("12:00 AM");
40
+ expect(humanDate("2022-12-25T04:00:00.000Z", { timezone: "America/New_York" })).toBe("11:00 PM");
41
+ expect(humanDate("2022-12-25T05:00:00.000Z", { timezone: "America/New_York" })).toBe("Tomorrow");
42
+ // Switch to Chicago
43
+ expect(humanDate("2022-12-24T04:00:00.000Z", { timezone: "America/Chicago" })).toBe("Yesterday");
44
+ // Still yesterday in Chicago
45
+ expect(humanDate("2022-12-24T05:00:00.000Z", { timezone: "America/Chicago" })).toBe("Yesterday");
46
+ expect(humanDate("2022-12-24T06:00:00.000Z", { timezone: "America/Chicago" })).toBe("12:00 AM");
47
+ // 5/6am UTC is 11/12pm in Chicago
48
+ expect(humanDate("2022-12-25T05:00:00.000Z", { timezone: "America/Chicago" })).toBe("11:00 PM");
49
+ expect(humanDate("2022-12-25T07:00:00.000Z", { timezone: "America/Chicago" })).toBe("Tomorrow");
50
+ });
51
+ });
52
+ describe("humanDateTime", function () {
53
+ it("should return invalid date if date is undefined", function () {
54
+ expect(() => humanDateAndTime(undefined, { timezone: "America/New_York" })).toThrow("humanDateAndTime: Passed undefined");
55
+ });
56
+ it("should throw an error if date is invalid", function () {
57
+ expect(() => humanDateAndTime("invalid date")).toThrow("humanDateAndTime: Invalid date: invalid date");
58
+ });
59
+ it("should return 'Tomorrow' if the date is tomorrow", function () {
60
+ expect(humanDateAndTime("2022-12-25T12:00:00.000Z")).toBe("Tomorrow 7:00 AM EST");
61
+ });
62
+ it("should return the time if the date is today", function () {
63
+ expect(humanDateAndTime("2022-12-24T12:00:00.000Z")).toBe("7:00 AM EST");
64
+ });
65
+ it("should return 'Yesterday' if the date is yesterday", function () {
66
+ expect(humanDateAndTime("2022-12-23T12:00:00.000Z")).toBe("Yesterday 7:00 AM EST");
67
+ });
68
+ it("should return the day of the week if the date is within the last week", function () {
69
+ expect(humanDateAndTime("2022-12-18T12:00:00.000Z")).toBe("Sunday 7:00 AM EST");
70
+ });
71
+ it("should return the month and day if the date is within the current year", function () {
72
+ expect(humanDateAndTime("2022-06-19T12:00:00.000Z")).toBe("Jun 19 8:00 AM EDT");
73
+ });
74
+ it("should return the month, day, and year if the date is not within the current year", function () {
75
+ expect(humanDateAndTime("2023-12-25T12:00:00.000Z")).toBe("Dec 25, 2023 7:00 AM EST");
76
+ });
77
+ it("should use the timezone properly around the day boundary", function () {
78
+ // Today is 2022-12-24T05:00:00.000 to 2022-12-25T04:59:59.999
79
+ expect(humanDateAndTime("2022-12-24T04:00:00.000Z", { timezone: "America/New_York" })).toBe("Yesterday 11:00 PM EST");
80
+ expect(humanDateAndTime("2022-12-24T05:00:00.000Z", { timezone: "America/New_York" })).toBe("12:00 AM EST");
81
+ expect(humanDateAndTime("2022-12-25T04:00:00.000Z", { timezone: "America/New_York" })).toBe("11:00 PM EST");
82
+ expect(humanDateAndTime("2022-12-25T05:00:00.000Z", { timezone: "America/New_York" })).toBe("Tomorrow 12:00 AM EST");
83
+ // Switch to Chicago
84
+ expect(humanDateAndTime("2022-12-24T04:00:00.000Z", { timezone: "America/Chicago" })).toBe("Yesterday 10:00 PM CST");
85
+ // Still yesterday in Chicago
86
+ expect(humanDateAndTime("2022-12-24T05:00:00.000Z", { timezone: "America/Chicago" })).toBe("Yesterday 11:00 PM CST");
87
+ expect(humanDateAndTime("2022-12-24T06:00:00.000Z", { timezone: "America/Chicago" })).toBe("12:00 AM CST");
88
+ // 5/6am UTC is 11/12pm in Chicago
89
+ expect(humanDateAndTime("2022-12-25T05:00:00.000Z", { timezone: "America/Chicago" })).toBe("11:00 PM CST");
90
+ expect(humanDateAndTime("2022-12-25T06:00:00.000Z", { timezone: "America/Chicago" })).toBe("Tomorrow 12:00 AM CST");
91
+ });
92
+ it("should show the timezone properly around the day boundary", function () {
93
+ // Today is 2022-12-24T05:00:00.000 to 2022-12-25T04:59:59.999
94
+ expect(humanDateAndTime("2022-12-24T04:00:00.000Z", {
95
+ showTimezone: true,
96
+ timezone: "America/New_York",
97
+ })).toBe("Yesterday 11:00 PM EST");
98
+ expect(humanDateAndTime("2022-12-24T05:00:00.000Z", {
99
+ showTimezone: true,
100
+ timezone: "America/New_York",
101
+ })).toBe("12:00 AM EST");
102
+ expect(humanDateAndTime("2022-12-25T04:00:00.000Z", {
103
+ showTimezone: true,
104
+ timezone: "America/New_York",
105
+ })).toBe("11:00 PM EST");
106
+ expect(humanDateAndTime("2022-12-25T05:00:00.000Z", {
107
+ showTimezone: true,
108
+ timezone: "America/New_York",
109
+ })).toBe("Tomorrow 12:00 AM EST");
110
+ // Switch to Chicago
111
+ expect(humanDateAndTime("2022-12-24T04:00:00.000Z", {
112
+ showTimezone: true,
113
+ timezone: "America/Chicago",
114
+ })).toBe("Yesterday 10:00 PM CST");
115
+ // Still yesterday in Chicago
116
+ expect(humanDateAndTime("2022-12-24T05:00:00.000Z", {
117
+ showTimezone: true,
118
+ timezone: "America/Chicago",
119
+ })).toBe("Yesterday 11:00 PM CST");
120
+ expect(humanDateAndTime("2022-12-24T06:00:00.000Z", {
121
+ showTimezone: true,
122
+ timezone: "America/Chicago",
123
+ })).toBe("12:00 AM CST");
124
+ // 5/6am UTC is 11/12pm in Chicago
125
+ expect(humanDateAndTime("2022-12-25T05:00:00.000Z", {
126
+ showTimezone: true,
127
+ timezone: "America/Chicago",
128
+ })).toBe("11:00 PM CST");
129
+ expect(humanDateAndTime("2022-12-25T06:00:00.000Z", {
130
+ showTimezone: true,
131
+ timezone: "America/Chicago",
132
+ })).toBe("Tomorrow 12:00 AM CST");
133
+ });
134
+ });
135
+ describe("printDate", function () {
136
+ it("should throw an error if date is undefined", function () {
137
+ expect(printDate(undefined)).toBe("Invalid Date");
138
+ });
139
+ it("should throw an error if date is invalid", function () {
140
+ expect(() => printDate("invalid date")).toThrow("printDate: Invalid date: invalid date");
141
+ });
142
+ it("should return the date in the default format", function () {
143
+ expect(printDate("2022-12-24T12:00:00.000Z")).toBe("12/24/2022");
144
+ });
145
+ it("handles timezones correctly", function () {
146
+ expect(printDate("2022-12-24T12:00:00.000Z", {})).toBe("12/24/2022");
147
+ expect(printDate("2022-12-24T12:00:00.000Z", { timezone: "America/New_York" })).toBe("12/24/2022");
148
+ expect(printDate("2022-12-24T12:00:00.000Z", { timezone: "America/Chicago" })).toBe("12/24/2022");
149
+ expect(printDate("2022-12-24T12:00:00.000Z", { timezone: "America/Denver" })).toBe("12/24/2022");
150
+ expect(printDate("2022-12-24T12:00:00.000Z", { timezone: "America/Los_Angeles" })).toBe("12/24/2022");
151
+ expect(printDate("2022-12-24T12:00:00.000Z", { timezone: "UTC" })).toBe("12/24/2022");
152
+ });
153
+ it("should ignore time if ignoreTime is true", function () {
154
+ expect(printDate("2022-12-24T12:00:00.000Z", { ignoreTime: true })).toBe("12/24/2022");
155
+ expect(printDate("2022-12-24T00:00:00.000Z", { ignoreTime: true })).toBe("12/24/2022");
156
+ expect(printDate("2022-12-24T23:59:59.999Z", { ignoreTime: true })).toBe("12/24/2022");
157
+ expect(printDate("2022-12-24T23:59:59.999Z", { ignoreTime: true })).toBe("12/24/2022");
158
+ });
159
+ });
160
+ describe("printOnlyDate", function () {
161
+ it("should print invalid if no date and no default", function () {
162
+ expect(printOnlyDate(undefined)).toBe("Invalid Date");
163
+ });
164
+ it("should print default if no date and default", function () {
165
+ expect(printOnlyDate(undefined, { defaultValue: "default" })).toBe("default");
166
+ });
167
+ it("should print the date in the default format", function () {
168
+ // This should be a warning but still work.
169
+ expect(printOnlyDate("2022-12-24T23:00:00.000Z")).toBe("12/24/2022");
170
+ // This should print 12/24 even though it's 12/23 in EST.
171
+ expect(printOnlyDate("2022-12-24T00:00:00.000Z")).toBe("12/24/2022");
172
+ });
173
+ });
174
+ describe("printDateTime", function () {
175
+ it("should return invalid date if date is undefined", function () {
176
+ expect(printDateAndTime(undefined, { timezone: "America/New_York" })).toBe("Invalid Datetime");
177
+ });
178
+ it("should throw an error if date is invalid", function () {
179
+ expect(() => printDateAndTime("invalid date")).toThrow("printDateAndTime: Invalid date: invalid date");
180
+ });
181
+ it("should return the date in the default format", function () {
182
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z")).toBe("12/24/2022, 7:00 AM");
183
+ });
184
+ it("shows timezones correctly", function () {
185
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z", { showTimezone: true })).toBe("12/24/2022, 7:00 AM EST");
186
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z", {
187
+ showTimezone: true,
188
+ timezone: "America/New_York",
189
+ })).toBe("12/24/2022, 7:00 AM EST");
190
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z", {
191
+ showTimezone: true,
192
+ timezone: "America/Chicago",
193
+ })).toBe("12/24/2022, 6:00 AM CST");
194
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z", {
195
+ showTimezone: true,
196
+ timezone: "America/Denver",
197
+ })).toBe("12/24/2022, 5:00 AM MST");
198
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z", {
199
+ showTimezone: true,
200
+ timezone: "America/Los_Angeles",
201
+ })).toBe("12/24/2022, 4:00 AM PST");
202
+ // UTC does a weird thing with a non breaking space between the AM/PM
203
+ expect(printDateAndTime("2022-12-24T12:00:00.000Z", { showTimezone: true, timezone: "UTC" })).toBe("12/24/2022, 12:00 PM UTC");
204
+ });
205
+ });
206
+ describe("printTime", function () {
207
+ it("should return invalid date if date is undefined", function () {
208
+ expect(printTime(undefined, { timezone: "America/New_York" })).toBe("Invalid Date");
209
+ });
210
+ it("should throw an error if date is invalid", function () {
211
+ expect(() => printTime("invalid date", { timezone: "America/New_York" })).toThrow("printTime: Invalid date: invalid date");
212
+ });
213
+ it("should throw an error with no timezone", function () {
214
+ expect(() => printTime("2022-12-24T12:00:00.000Z", {})).toThrow("printTime: timezone is required");
215
+ });
216
+ it("should return the time in the default format", function () {
217
+ expect(printTime("2022-12-24T12:00:00.000Z", { timezone: "America/New_York" })).toBe("7:00 AM");
218
+ });
219
+ it("should return the time in the default format", function () {
220
+ expect(printTime("2022-12-24T12:00:00.000Z", { timezone: "America/Chicago" })).toBe("6:00 AM");
221
+ });
222
+ });
223
+ describe("printDateRange", function () {
224
+ it("should print just dates if day is different", function () {
225
+ // 2022-12-24T12:00:00.000Z to 2022-12-25T12:00:00.000Z
226
+ expect(printDateRange("2022-12-24T12:00:00.000Z", "2022-12-25T12:00:00.000Z", {
227
+ timezone: "America/New_York",
228
+ })).toBe("12/24/2022 7:00 AM - 12/25/2022 7:00 AM EST");
229
+ });
230
+ it("should print dates and time if day is same with timezone", function () {
231
+ // 2022-12-24T12:00:00.000Z to 2022-12-24T18:00:00.000Z
232
+ expect(printDateRange("2022-12-24T12:00:00.000Z", "2022-12-24T18:00:00.000Z", {
233
+ timezone: "America/New_York",
234
+ })).toBe("12/24/2022 7:00 AM - 1:00 PM EST");
235
+ });
236
+ it("should hide timezone", function () {
237
+ // 2022-12-24T12:00:00.000Z to 2022-12-24T18:00:00.000Z
238
+ expect(printDateRange("2022-12-24T12:00:00.000Z", "2022-12-24T18:00:00.000Z", {
239
+ timezone: "America/New_York",
240
+ showTimezone: false,
241
+ })).toBe("12/24/2022 7:00 AM - 1:00 PM");
242
+ });
243
+ });
244
+ describe("printSince", function () {
245
+ it("should print the days", function () {
246
+ // print since in days
247
+ expect(printSince("2022-12-23T11:00:00.000Z")).toBe("1 day ago");
248
+ expect(printSince("2022-12-22T11:10:01.000Z")).toBe("2 days ago");
249
+ // print without ago
250
+ expect(printSince("2022-12-22T11:10:01.000Z", { showAgo: false })).toBe("2 days");
251
+ });
252
+ it("should print the months", function () {
253
+ // print between 1 and 2 months
254
+ expect(printSince("2022-11-21T12:00:01.000Z")).toBe("32 days ago");
255
+ // print months
256
+ expect(printSince("2022-10-23T12:00:01.000Z")).toBe("2 months ago");
257
+ // print without ago
258
+ expect(printSince("2022-10-23T12:00:01.000Z", { showAgo: false })).toBe("2 months");
259
+ });
260
+ it("should print the years", function () {
261
+ // print years
262
+ expect(printSince("2021-12-23T11:00:00.000Z")).toBe("1 year ago");
263
+ // print multiple years
264
+ expect(printSince("2019-12-23T11:00:00.000Z")).toBe("3 years ago");
265
+ // print without ago
266
+ expect(printSince("2019-12-23T11:00:00.000Z", { showAgo: false })).toBe("3 years");
267
+ });
268
+ });
269
+ });
270
+ //# sourceMappingURL=DateUtilities.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateUtilities.test.js","sourceRoot":"","sources":["../src/DateUtilities.test.ts"],"names":[],"mappings":"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"}
package/dist/Field.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "./Common";
3
- export declare const Field: ({ name, label, labelColor, height, type, rows, value, onChange, onBlur, onStart, onEnd, options, placeholder, disabled, errorMessage, errorMessageColor, helperText, helperTextColor, includeCounty, googleMapsApiKey, googlePlacesMobileStyles, testID, }: FieldProps) => React.JSX.Element;
3
+ export declare const Field: ({ name, label, labelColor, height, type, rows, value, onChange, onBlur, onStart, onEnd, options, placeholder, disabled, errorMessage, errorMessageColor, helperText, helperTextColor, includeCounty, googleMapsApiKey, googlePlacesMobileStyles, testID, transformValue, }: FieldProps) => React.JSX.Element;
package/dist/Field.js CHANGED
@@ -11,7 +11,7 @@ import { Text } from "./Text";
11
11
  import { TextArea } from "./TextArea";
12
12
  import { TextField } from "./TextField";
13
13
  import { UnifiedAddressAutoCompleteField } from "./UnifiedAddressAutoComplete";
14
- export const Field = ({ name, label, labelColor, height, type, rows, value, onChange, onBlur, onStart, onEnd, options, placeholder, disabled, errorMessage, errorMessageColor, helperText, helperTextColor, includeCounty = false, googleMapsApiKey, googlePlacesMobileStyles, testID, }) => {
14
+ export const Field = ({ name, label, labelColor, height, type, rows, value, onChange, onBlur, onStart, onEnd, options, placeholder, disabled, errorMessage, errorMessageColor, helperText, helperTextColor, includeCounty = false, googleMapsApiKey, googlePlacesMobileStyles, testID, transformValue, }) => {
15
15
  const handleAddressChange = (field, newValue) => {
16
16
  onChange(Object.assign(Object.assign({}, value), { [field]: newValue }));
17
17
  onBlur && onBlur(Object.assign(Object.assign({}, value), { [field]: newValue }));
@@ -68,7 +68,7 @@ export const Field = ({ name, label, labelColor, height, type, rows, value, onCh
68
68
  } }));
69
69
  }
70
70
  else if (type && ["date", "time", "datetime"].includes(type)) {
71
- return (React.createElement(TextField, { disabled: disabled, id: name, placeholder: placeholder, testID: testID, type: type, value: value, onBlur: (result) => {
71
+ return (React.createElement(TextField, { disabled: disabled, id: name, placeholder: placeholder, testID: testID, transformValue: transformValue, type: type, value: value, onBlur: (result) => {
72
72
  onBlur && onBlur(result.value);
73
73
  }, onChange: (result) => onChange(result.value) }));
74
74
  }