@zag-js/date-utils 0.0.0-dev-20230107115230 → 0.0.0-dev-20230107162034
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.
- package/dist/align.d.ts +4 -4
- package/dist/align.js +20 -24
- package/dist/align.mjs +2 -2
- package/dist/assertion.d.ts +8 -8
- package/dist/assertion.js +15 -16
- package/dist/assertion.mjs +1 -1
- package/dist/chunk-6EJZROXM.mjs +45 -0
- package/dist/{chunk-TCPXGBJP.mjs → chunk-BBE325GQ.mjs} +9 -8
- package/dist/chunk-BUT5IUNZ.mjs +32 -0
- package/dist/{chunk-EXWX3KZT.mjs → chunk-CAV5WKCZ.mjs} +4 -2
- package/dist/chunk-GKU5M6QU.mjs +25 -0
- package/dist/{chunk-XHAL6X5Z.mjs → chunk-HKHGJ6WS.mjs} +3 -3
- package/dist/{chunk-ECAENYV6.mjs → chunk-HUBKWHIN.mjs} +1 -1
- package/dist/{chunk-M4F23P2U.mjs → chunk-JZVHAOWX.mjs} +3 -3
- package/dist/{chunk-2DZ3KIVJ.mjs → chunk-L3YHK2WH.mjs} +1 -1
- package/dist/chunk-MGPXEJO4.mjs +71 -0
- package/dist/chunk-MY373KF2.mjs +198 -0
- package/dist/chunk-URPTPFL3.mjs +31 -0
- package/dist/chunk-ZZPZ2BFS.mjs +52 -0
- package/dist/constrain.d.ts +6 -7
- package/dist/constrain.js +20 -25
- package/dist/constrain.mjs +1 -1
- package/dist/format-range.d.ts +2 -3
- package/dist/format-range.js +3 -3
- package/dist/format-range.mjs +1 -1
- package/dist/format-selected-date.d.ts +3 -3
- package/dist/format-selected-date.js +13 -13
- package/dist/format-selected-date.mjs +3 -4
- package/dist/format-visible-range.d.ts +3 -3
- package/dist/format-visible-range.js +18 -17
- package/dist/format-visible-range.mjs +4 -26
- package/dist/get-formatter.d.ts +4 -3
- package/dist/get-formatter.js +6 -8
- package/dist/get-formatter.mjs +1 -2
- package/dist/get-month-dates.mjs +2 -2
- package/dist/get-week-dates.d.ts +1 -1
- package/dist/get-week-dates.js +2 -2
- package/dist/get-week-dates.mjs +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +284 -181
- package/dist/index.mjs +22 -19
- package/dist/mutation.d.ts +5 -5
- package/dist/mutation.js +16 -43
- package/dist/mutation.mjs +4 -5
- package/dist/pagination.d.ts +29 -10
- package/dist/pagination.js +183 -89
- package/dist/pagination.mjs +3 -2
- package/dist/placeholder.d.ts +1 -1
- package/dist/segment-constants.d.ts +1 -1
- package/dist/segment-limit.d.ts +2 -2
- package/dist/segment-limit.js +1 -1
- package/dist/segment-limit.mjs +1 -1
- package/dist/segment-mutation.d.ts +3 -4
- package/dist/segment-mutation.js +4 -2
- package/dist/segment-mutation.mjs +1 -1
- package/dist/segment-parts.d.ts +2 -2
- package/dist/segment-parts.js +4 -4
- package/dist/segment-parts.mjs +6 -6
- package/dist/types-cbf8b45a.d.ts +35 -0
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-6XKXGQP6.mjs +0 -32
- package/dist/chunk-7JERMWT3.mjs +0 -46
- package/dist/chunk-C4U2N3JC.mjs +0 -65
- package/dist/chunk-DI2YG6VG.mjs +0 -24
- package/dist/chunk-FJMTHABG.mjs +0 -8
- package/dist/chunk-HP2COJGP.mjs +0 -76
- package/dist/chunk-VWVBJ5CB.mjs +0 -110
- package/dist/get-era-format.d.ts +0 -5
- package/dist/get-era-format.js +0 -32
- package/dist/get-era-format.mjs +0 -6
- package/dist/types-9f60d2f1.d.ts +0 -61
package/dist/align.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CalendarDate } from '@internationalized/date';
|
|
2
|
-
import { D as
|
|
1
|
+
import { CalendarDate, DateDuration, DateValue } from '@internationalized/date';
|
|
2
|
+
import { D as DateAlignment } from './types-cbf8b45a.js';
|
|
3
3
|
|
|
4
|
-
declare function alignDate(
|
|
5
|
-
declare function alignStartDate(
|
|
4
|
+
declare function alignDate(date: CalendarDate, alignment: DateAlignment, duration: DateDuration, locale: string, min?: DateValue | undefined, max?: DateValue | undefined): CalendarDate;
|
|
5
|
+
declare function alignStartDate(date: CalendarDate, startDate: CalendarDate, endDate: CalendarDate, duration: DateDuration, locale: string, min?: DateValue | undefined, max?: DateValue | undefined): CalendarDate;
|
|
6
6
|
|
|
7
7
|
export { alignDate, alignStartDate };
|
package/dist/align.js
CHANGED
|
@@ -27,8 +27,7 @@ module.exports = __toCommonJS(align_exports);
|
|
|
27
27
|
|
|
28
28
|
// src/constrain.ts
|
|
29
29
|
var import_date = require("@internationalized/date");
|
|
30
|
-
function alignCenter(
|
|
31
|
-
const { duration } = ctx;
|
|
30
|
+
function alignCenter(date, duration, locale, min, max) {
|
|
32
31
|
let halfDuration = {};
|
|
33
32
|
for (let key in duration) {
|
|
34
33
|
halfDuration[key] = Math.floor(duration[key] / 2);
|
|
@@ -36,11 +35,10 @@ function alignCenter(ctx, date) {
|
|
|
36
35
|
halfDuration[key]--;
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
|
-
let aligned = alignStart(
|
|
40
|
-
return constrainStart(
|
|
38
|
+
let aligned = alignStart(date, duration, locale).subtract(halfDuration);
|
|
39
|
+
return constrainStart(date, aligned, duration, locale, min, max);
|
|
41
40
|
}
|
|
42
|
-
function alignStart(
|
|
43
|
-
let { locale, duration } = ctx;
|
|
41
|
+
function alignStart(date, duration, locale, min, max) {
|
|
44
42
|
let aligned = date;
|
|
45
43
|
if (duration.years) {
|
|
46
44
|
aligned = (0, import_date.startOfYear)(date);
|
|
@@ -49,10 +47,9 @@ function alignStart(ctx, date) {
|
|
|
49
47
|
} else if (duration.weeks) {
|
|
50
48
|
aligned = (0, import_date.startOfWeek)(date, locale);
|
|
51
49
|
}
|
|
52
|
-
return constrainStart(
|
|
50
|
+
return constrainStart(date, aligned, duration, locale, min, max);
|
|
53
51
|
}
|
|
54
|
-
function alignEnd(
|
|
55
|
-
const { duration } = ctx;
|
|
52
|
+
function alignEnd(date, duration, locale, min, max) {
|
|
56
53
|
let d = { ...duration };
|
|
57
54
|
if (d.days) {
|
|
58
55
|
d.days--;
|
|
@@ -63,38 +60,37 @@ function alignEnd(ctx, date) {
|
|
|
63
60
|
} else if (d.years) {
|
|
64
61
|
d.years--;
|
|
65
62
|
}
|
|
66
|
-
let aligned = alignStart(
|
|
67
|
-
return constrainStart(
|
|
63
|
+
let aligned = alignStart(date, duration, locale).subtract(d);
|
|
64
|
+
return constrainStart(date, aligned, duration, locale, min, max);
|
|
68
65
|
}
|
|
69
|
-
function constrainStart(
|
|
70
|
-
let { min, max } = ctx;
|
|
66
|
+
function constrainStart(date, aligned, duration, locale, min, max) {
|
|
71
67
|
if (min && date.compare(min) >= 0) {
|
|
72
|
-
aligned = (0, import_date.maxDate)(aligned, alignStart(
|
|
68
|
+
aligned = (0, import_date.maxDate)(aligned, alignStart((0, import_date.toCalendarDate)(min), duration, locale));
|
|
73
69
|
}
|
|
74
70
|
if (max && date.compare(max) <= 0) {
|
|
75
|
-
aligned = (0, import_date.minDate)(aligned, alignEnd(
|
|
71
|
+
aligned = (0, import_date.minDate)(aligned, alignEnd((0, import_date.toCalendarDate)(max), duration, locale));
|
|
76
72
|
}
|
|
77
73
|
return aligned;
|
|
78
74
|
}
|
|
79
75
|
|
|
80
76
|
// src/align.ts
|
|
81
|
-
function alignDate(
|
|
77
|
+
function alignDate(date, alignment, duration, locale, min, max) {
|
|
82
78
|
switch (alignment) {
|
|
83
79
|
case "start":
|
|
84
|
-
return alignStart(
|
|
80
|
+
return alignStart(date, duration, locale, min, max);
|
|
85
81
|
case "end":
|
|
86
|
-
return alignEnd(
|
|
82
|
+
return alignEnd(date, duration, locale, min, max);
|
|
87
83
|
case "center":
|
|
88
84
|
default:
|
|
89
|
-
return alignCenter(
|
|
85
|
+
return alignCenter(date, duration, locale, min, max);
|
|
90
86
|
}
|
|
91
87
|
}
|
|
92
|
-
function alignStartDate(
|
|
93
|
-
if (
|
|
94
|
-
return alignEnd(
|
|
88
|
+
function alignStartDate(date, startDate, endDate, duration, locale, min, max) {
|
|
89
|
+
if (date.compare(startDate) < 0) {
|
|
90
|
+
return alignEnd(date, duration, locale, min, max);
|
|
95
91
|
}
|
|
96
|
-
if (
|
|
97
|
-
return alignStart(
|
|
92
|
+
if (date.compare(endDate) > 0) {
|
|
93
|
+
return alignStart(date, duration, locale, min, max);
|
|
98
94
|
}
|
|
99
95
|
return startDate;
|
|
100
96
|
}
|
package/dist/align.mjs
CHANGED
package/dist/assertion.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { CalendarDate, DateValue } from '@internationalized/date';
|
|
2
|
-
import {
|
|
2
|
+
import { a as DateAvailableFn } from './types-cbf8b45a.js';
|
|
3
3
|
|
|
4
|
-
declare function isTodayDate(date: CalendarDate,
|
|
5
|
-
declare function isDateEqual(dateA: CalendarDate, dateB: CalendarDate | null
|
|
6
|
-
declare function isDateInvalid(
|
|
7
|
-
declare function isDateDisabled(
|
|
8
|
-
declare function isDateUnavailable(
|
|
4
|
+
declare function isTodayDate(date: CalendarDate, timeZone: string): boolean;
|
|
5
|
+
declare function isDateEqual(dateA: CalendarDate, dateB: CalendarDate | null): boolean;
|
|
6
|
+
declare function isDateInvalid(date: DateValue, minValue: DateValue | null, maxValue: DateValue | null): boolean;
|
|
7
|
+
declare function isDateDisabled(date: DateValue, startDate: DateValue, endDate: DateValue, minValue: DateValue | null, maxValue: DateValue | null): boolean;
|
|
8
|
+
declare function isDateUnavailable(date: DateValue | null, isUnavailable: DateAvailableFn | null, minValue: DateValue | null, maxValue: DateValue | null): boolean;
|
|
9
9
|
declare function isDateOutsideVisibleRange(date: CalendarDate, startDate: CalendarDate, endDate: CalendarDate): boolean;
|
|
10
|
-
declare function isPreviousVisibleRangeInvalid(
|
|
11
|
-
declare function isNextVisibleRangeInvalid(
|
|
10
|
+
declare function isPreviousVisibleRangeInvalid(startDate: CalendarDate, minValue: DateValue | null, maxValue: DateValue | null): boolean;
|
|
11
|
+
declare function isNextVisibleRangeInvalid(endDate: CalendarDate, minValue: DateValue | null, maxValue: DateValue | null): boolean;
|
|
12
12
|
|
|
13
13
|
export { isDateDisabled, isDateEqual, isDateInvalid, isDateOutsideVisibleRange, isDateUnavailable, isNextVisibleRangeInvalid, isPreviousVisibleRangeInvalid, isTodayDate };
|
package/dist/assertion.js
CHANGED
|
@@ -31,38 +31,37 @@ __export(assertion_exports, {
|
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(assertion_exports);
|
|
33
33
|
var import_date = require("@internationalized/date");
|
|
34
|
-
function isTodayDate(date,
|
|
35
|
-
return (0, import_date.isToday)(date,
|
|
34
|
+
function isTodayDate(date, timeZone) {
|
|
35
|
+
return (0, import_date.isToday)(date, timeZone);
|
|
36
36
|
}
|
|
37
37
|
function isDateEqual(dateA, dateB) {
|
|
38
38
|
return dateB != null && (0, import_date.isSameDay)(dateA, dateB);
|
|
39
39
|
}
|
|
40
|
-
function isDateInvalid(
|
|
41
|
-
return
|
|
40
|
+
function isDateInvalid(date, minValue, maxValue) {
|
|
41
|
+
return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
|
|
42
42
|
}
|
|
43
|
-
function isDateDisabled(
|
|
44
|
-
return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(
|
|
43
|
+
function isDateDisabled(date, startDate, endDate, minValue, maxValue) {
|
|
44
|
+
return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue);
|
|
45
45
|
}
|
|
46
|
-
function isDateUnavailable(
|
|
47
|
-
var _a;
|
|
46
|
+
function isDateUnavailable(date, isUnavailable, minValue, maxValue) {
|
|
48
47
|
if (!date) {
|
|
49
48
|
return false;
|
|
50
49
|
}
|
|
51
|
-
if (
|
|
50
|
+
if (isUnavailable == null ? void 0 : isUnavailable(date)) {
|
|
52
51
|
return true;
|
|
53
52
|
}
|
|
54
|
-
return isDateInvalid(
|
|
53
|
+
return isDateInvalid(date, minValue, maxValue);
|
|
55
54
|
}
|
|
56
55
|
function isDateOutsideVisibleRange(date, startDate, endDate) {
|
|
57
56
|
return date.compare(startDate) < 0 || date.compare(endDate) > 0;
|
|
58
57
|
}
|
|
59
|
-
function isPreviousVisibleRangeInvalid(
|
|
60
|
-
|
|
61
|
-
return (0, import_date.isSameDay)(
|
|
58
|
+
function isPreviousVisibleRangeInvalid(startDate, minValue, maxValue) {
|
|
59
|
+
const prevDate = startDate.subtract({ days: 1 });
|
|
60
|
+
return (0, import_date.isSameDay)(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue);
|
|
62
61
|
}
|
|
63
|
-
function isNextVisibleRangeInvalid(
|
|
64
|
-
|
|
65
|
-
return (0, import_date.isSameDay)(
|
|
62
|
+
function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
|
|
63
|
+
const nextDate = endDate.add({ days: 1 });
|
|
64
|
+
return (0, import_date.isSameDay)(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
|
|
66
65
|
}
|
|
67
66
|
// Annotate the CommonJS export names for ESM import in node:
|
|
68
67
|
0 && (module.exports = {
|
package/dist/assertion.mjs
CHANGED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/assertion.ts
|
|
2
|
+
import { isSameDay, isToday } from "@internationalized/date";
|
|
3
|
+
function isTodayDate(date, timeZone) {
|
|
4
|
+
return isToday(date, timeZone);
|
|
5
|
+
}
|
|
6
|
+
function isDateEqual(dateA, dateB) {
|
|
7
|
+
return dateB != null && isSameDay(dateA, dateB);
|
|
8
|
+
}
|
|
9
|
+
function isDateInvalid(date, minValue, maxValue) {
|
|
10
|
+
return minValue != null && date.compare(minValue) < 0 || maxValue != null && date.compare(maxValue) > 0;
|
|
11
|
+
}
|
|
12
|
+
function isDateDisabled(date, startDate, endDate, minValue, maxValue) {
|
|
13
|
+
return date.compare(startDate) < 0 || date.compare(endDate) > 0 || isDateInvalid(date, minValue, maxValue);
|
|
14
|
+
}
|
|
15
|
+
function isDateUnavailable(date, isUnavailable, minValue, maxValue) {
|
|
16
|
+
if (!date) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (isUnavailable == null ? void 0 : isUnavailable(date)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return isDateInvalid(date, minValue, maxValue);
|
|
23
|
+
}
|
|
24
|
+
function isDateOutsideVisibleRange(date, startDate, endDate) {
|
|
25
|
+
return date.compare(startDate) < 0 || date.compare(endDate) > 0;
|
|
26
|
+
}
|
|
27
|
+
function isPreviousVisibleRangeInvalid(startDate, minValue, maxValue) {
|
|
28
|
+
const prevDate = startDate.subtract({ days: 1 });
|
|
29
|
+
return isSameDay(prevDate, startDate) || isDateInvalid(prevDate, minValue, maxValue);
|
|
30
|
+
}
|
|
31
|
+
function isNextVisibleRangeInvalid(endDate, minValue, maxValue) {
|
|
32
|
+
const nextDate = endDate.add({ days: 1 });
|
|
33
|
+
return isSameDay(nextDate, endDate) || isDateInvalid(nextDate, minValue, maxValue);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
isTodayDate,
|
|
38
|
+
isDateEqual,
|
|
39
|
+
isDateInvalid,
|
|
40
|
+
isDateDisabled,
|
|
41
|
+
isDateUnavailable,
|
|
42
|
+
isDateOutsideVisibleRange,
|
|
43
|
+
isPreviousVisibleRangeInvalid,
|
|
44
|
+
isNextVisibleRangeInvalid
|
|
45
|
+
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getEraFormat
|
|
3
|
-
} from "./chunk-FJMTHABG.mjs";
|
|
4
|
-
|
|
5
1
|
// src/get-formatter.ts
|
|
6
|
-
function
|
|
7
|
-
|
|
2
|
+
function getEraFormat(date) {
|
|
3
|
+
return (date == null ? void 0 : date.calendar.identifier) === "gregory" && date.era === "BC" ? "short" : void 0;
|
|
4
|
+
}
|
|
5
|
+
function getDateFormatter(startDate, endDate, getDateFormatter2, timeZone) {
|
|
6
|
+
let start = startDate;
|
|
7
|
+
let end = endDate != null ? endDate : startDate;
|
|
8
8
|
let era = getEraFormat(start) || getEraFormat(end);
|
|
9
9
|
return getDateFormatter2({
|
|
10
10
|
weekday: "long",
|
|
@@ -15,8 +15,9 @@ function getDateFormatter(ctx) {
|
|
|
15
15
|
timeZone
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
-
function getMonthFormatter(
|
|
19
|
-
|
|
18
|
+
function getMonthFormatter(startDate, endDate, getDateFormatter2, timeZone) {
|
|
19
|
+
let start = startDate;
|
|
20
|
+
let end = endDate != null ? endDate : startDate;
|
|
20
21
|
let era = getEraFormat(start) || getEraFormat(end);
|
|
21
22
|
return getDateFormatter2({
|
|
22
23
|
month: "long",
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
alignCenter,
|
|
3
|
+
alignEnd,
|
|
4
|
+
alignStart
|
|
5
|
+
} from "./chunk-MGPXEJO4.mjs";
|
|
6
|
+
|
|
7
|
+
// src/align.ts
|
|
8
|
+
function alignDate(date, alignment, duration, locale, min, max) {
|
|
9
|
+
switch (alignment) {
|
|
10
|
+
case "start":
|
|
11
|
+
return alignStart(date, duration, locale, min, max);
|
|
12
|
+
case "end":
|
|
13
|
+
return alignEnd(date, duration, locale, min, max);
|
|
14
|
+
case "center":
|
|
15
|
+
default:
|
|
16
|
+
return alignCenter(date, duration, locale, min, max);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function alignStartDate(date, startDate, endDate, duration, locale, min, max) {
|
|
20
|
+
if (date.compare(startDate) < 0) {
|
|
21
|
+
return alignEnd(date, duration, locale, min, max);
|
|
22
|
+
}
|
|
23
|
+
if (date.compare(endDate) > 0) {
|
|
24
|
+
return alignStart(date, duration, locale, min, max);
|
|
25
|
+
}
|
|
26
|
+
return startDate;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
alignDate,
|
|
31
|
+
alignStartDate
|
|
32
|
+
};
|
|
@@ -19,10 +19,11 @@ function addSegment(date, part, amount, options) {
|
|
|
19
19
|
case "second":
|
|
20
20
|
return date.cycle(part, amount, {
|
|
21
21
|
round: part !== "hour",
|
|
22
|
-
hourCycle: options.hour12 ? 12 : 24
|
|
22
|
+
hourCycle: (options == null ? void 0 : options.hour12) ? 12 : 24
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
return date;
|
|
26
27
|
}
|
|
27
28
|
function setSegment(date, part, value, options) {
|
|
28
29
|
switch (part) {
|
|
@@ -41,7 +42,7 @@ function setSegment(date, part, value, options) {
|
|
|
41
42
|
return isPM === wasPM ? date : date.set({ hour: wasPM ? hours - 12 : hours + 12 });
|
|
42
43
|
}
|
|
43
44
|
case "hour":
|
|
44
|
-
if (options.hour12) {
|
|
45
|
+
if (options == null ? void 0 : options.hour12) {
|
|
45
46
|
let hours = date.hour;
|
|
46
47
|
let wasPM = hours >= 12;
|
|
47
48
|
if (!wasPM && value === 12) {
|
|
@@ -56,6 +57,7 @@ function setSegment(date, part, value, options) {
|
|
|
56
57
|
return date.set({ [part]: value });
|
|
57
58
|
}
|
|
58
59
|
}
|
|
60
|
+
return date;
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
export {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatRange
|
|
3
|
+
} from "./chunk-HKHGJ6WS.mjs";
|
|
4
|
+
import {
|
|
5
|
+
getDateFormatter
|
|
6
|
+
} from "./chunk-BBE325GQ.mjs";
|
|
7
|
+
|
|
8
|
+
// src/format-selected-date.ts
|
|
9
|
+
import { isSameDay } from "@internationalized/date";
|
|
10
|
+
function formatSelectedDate(startDate, endDate, getFormatter, isSelectingRange, timeZone) {
|
|
11
|
+
let start = startDate;
|
|
12
|
+
let end = endDate != null ? endDate : startDate;
|
|
13
|
+
let formatter = getDateFormatter(start, end, getFormatter, timeZone);
|
|
14
|
+
if (isSelectingRange || start == null || end == null) {
|
|
15
|
+
return "";
|
|
16
|
+
}
|
|
17
|
+
if (isSameDay(start, end)) {
|
|
18
|
+
return formatter.format(start.toDate(timeZone));
|
|
19
|
+
}
|
|
20
|
+
return formatRange(start, end, formatter, (start2, end2) => `${start2} \u2013 ${end2}`, timeZone);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
formatSelectedDate
|
|
25
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/format-range.ts
|
|
2
|
-
function formatRange(
|
|
3
|
-
let parts = formatter.formatRangeToParts(
|
|
2
|
+
function formatRange(startDate, endDate, formatter, toString, timeZone) {
|
|
3
|
+
let parts = formatter.formatRangeToParts(startDate.toDate(timeZone), endDate.toDate(timeZone));
|
|
4
4
|
let separatorIndex = -1;
|
|
5
5
|
for (let i = 0; i < parts.length; i++) {
|
|
6
6
|
let part = parts[i];
|
|
@@ -19,7 +19,7 @@ function formatRange(ctx, formatter) {
|
|
|
19
19
|
end += parts[i].value;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
return
|
|
22
|
+
return toString(start, end);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/get-week-dates.ts
|
|
2
|
-
import { getDayOfWeek, isSameDay, startOfWeek
|
|
2
|
+
import { getDayOfWeek, isSameDay, startOfWeek } from "@internationalized/date";
|
|
3
3
|
function getDatesInWeek(weekIndex, fromDate, locale) {
|
|
4
4
|
let date = fromDate.add({ weeks: weekIndex });
|
|
5
5
|
let dates = [];
|
|
@@ -21,8 +21,8 @@ function getDatesInWeek(weekIndex, fromDate, locale) {
|
|
|
21
21
|
}
|
|
22
22
|
return dates;
|
|
23
23
|
}
|
|
24
|
-
function getWeekDates(timeZone, locale) {
|
|
25
|
-
let weekStart = startOfWeek(
|
|
24
|
+
function getWeekDates(fromDate, timeZone, locale) {
|
|
25
|
+
let weekStart = startOfWeek(fromDate, locale);
|
|
26
26
|
let weekArr = [...new Array(7).keys()];
|
|
27
27
|
return weekArr.map((index) => {
|
|
28
28
|
return weekStart.add({ days: index }).toDate(timeZone);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// src/constrain.ts
|
|
2
|
+
import {
|
|
3
|
+
maxDate,
|
|
4
|
+
minDate,
|
|
5
|
+
startOfMonth,
|
|
6
|
+
startOfWeek,
|
|
7
|
+
startOfYear,
|
|
8
|
+
toCalendarDate
|
|
9
|
+
} from "@internationalized/date";
|
|
10
|
+
function alignCenter(date, duration, locale, min, max) {
|
|
11
|
+
let halfDuration = {};
|
|
12
|
+
for (let key in duration) {
|
|
13
|
+
halfDuration[key] = Math.floor(duration[key] / 2);
|
|
14
|
+
if (halfDuration[key] > 0 && duration[key] % 2 === 0) {
|
|
15
|
+
halfDuration[key]--;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
let aligned = alignStart(date, duration, locale).subtract(halfDuration);
|
|
19
|
+
return constrainStart(date, aligned, duration, locale, min, max);
|
|
20
|
+
}
|
|
21
|
+
function alignStart(date, duration, locale, min, max) {
|
|
22
|
+
let aligned = date;
|
|
23
|
+
if (duration.years) {
|
|
24
|
+
aligned = startOfYear(date);
|
|
25
|
+
} else if (duration.months) {
|
|
26
|
+
aligned = startOfMonth(date);
|
|
27
|
+
} else if (duration.weeks) {
|
|
28
|
+
aligned = startOfWeek(date, locale);
|
|
29
|
+
}
|
|
30
|
+
return constrainStart(date, aligned, duration, locale, min, max);
|
|
31
|
+
}
|
|
32
|
+
function alignEnd(date, duration, locale, min, max) {
|
|
33
|
+
let d = { ...duration };
|
|
34
|
+
if (d.days) {
|
|
35
|
+
d.days--;
|
|
36
|
+
} else if (d.weeks) {
|
|
37
|
+
d.weeks--;
|
|
38
|
+
} else if (d.months) {
|
|
39
|
+
d.months--;
|
|
40
|
+
} else if (d.years) {
|
|
41
|
+
d.years--;
|
|
42
|
+
}
|
|
43
|
+
let aligned = alignStart(date, duration, locale).subtract(d);
|
|
44
|
+
return constrainStart(date, aligned, duration, locale, min, max);
|
|
45
|
+
}
|
|
46
|
+
function constrainStart(date, aligned, duration, locale, min, max) {
|
|
47
|
+
if (min && date.compare(min) >= 0) {
|
|
48
|
+
aligned = maxDate(aligned, alignStart(toCalendarDate(min), duration, locale));
|
|
49
|
+
}
|
|
50
|
+
if (max && date.compare(max) <= 0) {
|
|
51
|
+
aligned = minDate(aligned, alignEnd(toCalendarDate(max), duration, locale));
|
|
52
|
+
}
|
|
53
|
+
return aligned;
|
|
54
|
+
}
|
|
55
|
+
function constrainValue(date, minValue, maxValue) {
|
|
56
|
+
if (minValue) {
|
|
57
|
+
date = maxDate(date, toCalendarDate(minValue));
|
|
58
|
+
}
|
|
59
|
+
if (maxValue) {
|
|
60
|
+
date = minDate(date, toCalendarDate(maxValue));
|
|
61
|
+
}
|
|
62
|
+
return date;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export {
|
|
66
|
+
alignCenter,
|
|
67
|
+
alignStart,
|
|
68
|
+
alignEnd,
|
|
69
|
+
constrainStart,
|
|
70
|
+
constrainValue
|
|
71
|
+
};
|