@ovok/native 1.8.0 → 1.8.1
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/lib/commonjs/modules/ui/components/calendar-grid.js +156 -0
- package/lib/commonjs/modules/ui/components/calendar-grid.js.map +1 -0
- package/lib/commonjs/modules/ui/components/calendar.js +137 -0
- package/lib/commonjs/modules/ui/components/calendar.js.map +1 -0
- package/lib/commonjs/modules/ui/components/period-calendar.js +127 -0
- package/lib/commonjs/modules/ui/components/period-calendar.js.map +1 -0
- package/lib/commonjs/modules/ui/index.js +22 -0
- package/lib/commonjs/modules/ui/index.js.map +1 -1
- package/lib/commonjs/modules/ui/utils/calendar-date.js +44 -0
- package/lib/commonjs/modules/ui/utils/calendar-date.js.map +1 -0
- package/lib/module/modules/ui/components/calendar-grid.js +152 -0
- package/lib/module/modules/ui/components/calendar-grid.js.map +1 -0
- package/lib/module/modules/ui/components/calendar.js +133 -0
- package/lib/module/modules/ui/components/calendar.js.map +1 -0
- package/lib/module/modules/ui/components/period-calendar.js +122 -0
- package/lib/module/modules/ui/components/period-calendar.js.map +1 -0
- package/lib/module/modules/ui/index.js +2 -0
- package/lib/module/modules/ui/index.js.map +1 -1
- package/lib/module/modules/ui/utils/calendar-date.js +36 -0
- package/lib/module/modules/ui/utils/calendar-date.js.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/calendar-grid.d.ts +23 -0
- package/lib/typescript/commonjs/src/modules/ui/components/calendar-grid.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/calendar.d.ts +32 -0
- package/lib/typescript/commonjs/src/modules/ui/components/calendar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/components/period-calendar.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/ui/components/period-calendar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/ui/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/ui/utils/calendar-date.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/ui/utils/calendar-date.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/calendar-grid.d.ts +23 -0
- package/lib/typescript/module/src/modules/ui/components/calendar-grid.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/calendar.d.ts +32 -0
- package/lib/typescript/module/src/modules/ui/components/calendar.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/components/period-calendar.d.ts +16 -0
- package/lib/typescript/module/src/modules/ui/components/period-calendar.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/ui/index.d.ts +2 -0
- package/lib/typescript/module/src/modules/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/ui/utils/calendar-date.d.ts +9 -0
- package/lib/typescript/module/src/modules/ui/utils/calendar-date.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Pressable, StyleSheet, View } from "react-native";
|
|
5
|
+
import { calendarDateKey, calendarGridDates, toCalendarDate } from "../utils/calendar-date.js";
|
|
6
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const CalendarGridComponent = ({
|
|
8
|
+
activeMonth,
|
|
9
|
+
selectedDate,
|
|
10
|
+
minDate,
|
|
11
|
+
maxDate,
|
|
12
|
+
isDateDisabled,
|
|
13
|
+
markers,
|
|
14
|
+
getMarkerForDate,
|
|
15
|
+
labelForDate,
|
|
16
|
+
locale,
|
|
17
|
+
weekStartsOn,
|
|
18
|
+
testID,
|
|
19
|
+
theme,
|
|
20
|
+
Text,
|
|
21
|
+
onSelectDate
|
|
22
|
+
}) => {
|
|
23
|
+
const dates = calendarGridDates(activeMonth, weekStartsOn);
|
|
24
|
+
const firstWeek = calendarGridDates(new Date(2024, 0, 1), weekStartsOn).slice(0, 7);
|
|
25
|
+
const weekdays = firstWeek.map(date => ({
|
|
26
|
+
short: new Intl.DateTimeFormat(locale, {
|
|
27
|
+
weekday: "short"
|
|
28
|
+
}).format(date),
|
|
29
|
+
full: new Intl.DateTimeFormat(locale, {
|
|
30
|
+
weekday: "long"
|
|
31
|
+
}).format(date)
|
|
32
|
+
}));
|
|
33
|
+
const dateFormatter = new Intl.DateTimeFormat(locale, {
|
|
34
|
+
dateStyle: "full"
|
|
35
|
+
});
|
|
36
|
+
const selectedKey = selectedDate ? calendarDateKey(selectedDate) : undefined;
|
|
37
|
+
const min = toCalendarDate(minDate);
|
|
38
|
+
const max = toCalendarDate(maxDate);
|
|
39
|
+
const minKey = min ? calendarDateKey(min) : undefined;
|
|
40
|
+
const maxKey = max ? calendarDateKey(max) : undefined;
|
|
41
|
+
const todayKey = calendarDateKey(new Date());
|
|
42
|
+
const markerByDate = new Map();
|
|
43
|
+
for (const marker of markers) {
|
|
44
|
+
const date = toCalendarDate(marker.date);
|
|
45
|
+
if (date) {
|
|
46
|
+
markerByDate.set(calendarDateKey(date), marker);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
50
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
51
|
+
accessibilityRole: "list",
|
|
52
|
+
style: styles.weekRow,
|
|
53
|
+
children: weekdays.map((weekday, index) => /*#__PURE__*/_jsx(View, {
|
|
54
|
+
accessibilityLabel: weekday.full,
|
|
55
|
+
style: styles.weekdayCell,
|
|
56
|
+
testID: `${testID}-weekday-${index}`,
|
|
57
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
58
|
+
theme: theme,
|
|
59
|
+
variant: "labelSmall",
|
|
60
|
+
style: {
|
|
61
|
+
color: theme.colors.onSurfaceVariant
|
|
62
|
+
},
|
|
63
|
+
children: weekday.short
|
|
64
|
+
})
|
|
65
|
+
}, `${weekday.full}-${index}`))
|
|
66
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
67
|
+
style: styles.grid,
|
|
68
|
+
children: Array.from({
|
|
69
|
+
length: 6
|
|
70
|
+
}, (_, week) => /*#__PURE__*/_jsx(View, {
|
|
71
|
+
style: styles.weekRow,
|
|
72
|
+
children: dates.slice(week * 7, week * 7 + 7).map((date, weekdayIndex) => {
|
|
73
|
+
const key = calendarDateKey(date);
|
|
74
|
+
const marker = getMarkerForDate?.(date) ?? markerByDate.get(key);
|
|
75
|
+
const disabled = minKey !== undefined && key < minKey || maxKey !== undefined && key > maxKey || Boolean(isDateDisabled?.(date));
|
|
76
|
+
const selected = key === selectedKey;
|
|
77
|
+
const isCurrentMonth = date.getMonth() === activeMonth.getMonth();
|
|
78
|
+
const accessibleDate = labelForDate?.(date) ?? dateFormatter.format(date);
|
|
79
|
+
const markerStartsBand = marker && (marker.rangePosition === "single" || marker.rangePosition === "start" || weekdayIndex === 0);
|
|
80
|
+
const markerEndsBand = marker && (marker.rangePosition === "single" || marker.rangePosition === "end" || weekdayIndex === 6);
|
|
81
|
+
const markerStyle = marker?.rangePosition ? {
|
|
82
|
+
backgroundColor: marker.backgroundColor,
|
|
83
|
+
borderBottomLeftRadius: markerStartsBand ? 18 : 0,
|
|
84
|
+
borderBottomRightRadius: markerEndsBand ? 18 : 0,
|
|
85
|
+
borderTopLeftRadius: markerStartsBand ? 18 : 0,
|
|
86
|
+
borderTopRightRadius: markerEndsBand ? 18 : 0
|
|
87
|
+
} : {
|
|
88
|
+
backgroundColor: marker?.backgroundColor,
|
|
89
|
+
borderRadius: 18
|
|
90
|
+
};
|
|
91
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
92
|
+
accessibilityRole: "button",
|
|
93
|
+
accessibilityLabel: marker?.label ? `${accessibleDate}, ${marker.label}` : accessibleDate,
|
|
94
|
+
accessibilityState: {
|
|
95
|
+
selected,
|
|
96
|
+
disabled
|
|
97
|
+
},
|
|
98
|
+
disabled: disabled,
|
|
99
|
+
onPress: () => onSelectDate(date),
|
|
100
|
+
style: ({
|
|
101
|
+
pressed
|
|
102
|
+
}) => [styles.dayCell, markerStyle, selected && {
|
|
103
|
+
borderColor: theme.colors.primary,
|
|
104
|
+
borderWidth: 2
|
|
105
|
+
}, !selected && key === todayKey && {
|
|
106
|
+
borderColor: theme.colors.outline,
|
|
107
|
+
borderWidth: 1
|
|
108
|
+
}, disabled && styles.disabledDay, pressed && !disabled && styles.pressedDay],
|
|
109
|
+
testID: `${testID}-day-${key}`,
|
|
110
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
111
|
+
theme: theme,
|
|
112
|
+
variant: selected ? "titleSmall" : "bodyMedium",
|
|
113
|
+
style: {
|
|
114
|
+
color: marker?.color ?? (selected ? theme.colors.primary : isCurrentMonth ? theme.colors.onSurface : theme.colors.onSurfaceVariant)
|
|
115
|
+
},
|
|
116
|
+
children: date.getDate()
|
|
117
|
+
})
|
|
118
|
+
}, key);
|
|
119
|
+
})
|
|
120
|
+
}, week))
|
|
121
|
+
})]
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
const CalendarGrid = /*#__PURE__*/React.memo(CalendarGridComponent);
|
|
125
|
+
const styles = StyleSheet.create({
|
|
126
|
+
weekRow: {
|
|
127
|
+
flexDirection: "row"
|
|
128
|
+
},
|
|
129
|
+
weekdayCell: {
|
|
130
|
+
alignItems: "center",
|
|
131
|
+
flex: 1,
|
|
132
|
+
justifyContent: "center",
|
|
133
|
+
minHeight: 28
|
|
134
|
+
},
|
|
135
|
+
grid: {
|
|
136
|
+
width: "100%"
|
|
137
|
+
},
|
|
138
|
+
dayCell: {
|
|
139
|
+
alignItems: "center",
|
|
140
|
+
flex: 1,
|
|
141
|
+
height: 40,
|
|
142
|
+
justifyContent: "center"
|
|
143
|
+
},
|
|
144
|
+
disabledDay: {
|
|
145
|
+
opacity: 0.35
|
|
146
|
+
},
|
|
147
|
+
pressedDay: {
|
|
148
|
+
opacity: 0.65
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
export { CalendarGrid };
|
|
152
|
+
//# sourceMappingURL=calendar-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Pressable","StyleSheet","View","calendarDateKey","calendarGridDates","toCalendarDate","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CalendarGridComponent","activeMonth","selectedDate","minDate","maxDate","isDateDisabled","markers","getMarkerForDate","labelForDate","locale","weekStartsOn","testID","theme","Text","onSelectDate","dates","firstWeek","Date","slice","weekdays","map","date","short","Intl","DateTimeFormat","weekday","format","full","dateFormatter","dateStyle","selectedKey","undefined","min","max","minKey","maxKey","todayKey","markerByDate","Map","marker","set","children","accessibilityRole","style","styles","weekRow","index","accessibilityLabel","weekdayCell","variant","color","colors","onSurfaceVariant","grid","Array","from","length","_","week","weekdayIndex","key","get","disabled","Boolean","selected","isCurrentMonth","getMonth","accessibleDate","markerStartsBand","rangePosition","markerEndsBand","markerStyle","backgroundColor","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","borderRadius","label","accessibilityState","onPress","pressed","dayCell","borderColor","primary","borderWidth","outline","disabledDay","pressedDay","onSurface","getDate","CalendarGrid","memo","create","flexDirection","alignItems","flex","justifyContent","minHeight","width","height","opacity"],"sourceRoot":"../../../../../src","sources":["modules/ui/components/calendar-grid.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Pressable, StyleSheet, View } from "react-native";
|
|
5
|
+
import { Text as PaperText } from "react-native-paper";
|
|
6
|
+
import { useOvokUi } from "../use-ovok-ui.js";
|
|
7
|
+
import { firstOfMonth, monthBy, toCalendarDate } from "../utils/calendar-date.js";
|
|
8
|
+
import { CalendarGrid } from "./calendar-grid.js";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const CalendarComponent = ({
|
|
11
|
+
selectedDate,
|
|
12
|
+
defaultSelectedDate,
|
|
13
|
+
onDateSelect,
|
|
14
|
+
visibleMonth,
|
|
15
|
+
defaultVisibleMonth,
|
|
16
|
+
onVisibleMonthChange,
|
|
17
|
+
locale,
|
|
18
|
+
weekStartsOn = 1,
|
|
19
|
+
minDate,
|
|
20
|
+
maxDate,
|
|
21
|
+
isDateDisabled,
|
|
22
|
+
markers = [],
|
|
23
|
+
getMarkerForDate,
|
|
24
|
+
labelForDate,
|
|
25
|
+
previousMonthLabel = "Previous month",
|
|
26
|
+
nextMonthLabel = "Next month",
|
|
27
|
+
testID = "calendar",
|
|
28
|
+
...uiProps
|
|
29
|
+
}) => {
|
|
30
|
+
const {
|
|
31
|
+
theme,
|
|
32
|
+
slots
|
|
33
|
+
} = useOvokUi(uiProps);
|
|
34
|
+
const Text = slots.Text ?? PaperText;
|
|
35
|
+
const [internalVisibleMonth, setInternalVisibleMonth] = React.useState(() => firstOfMonth(toCalendarDate(defaultVisibleMonth) ?? toCalendarDate(visibleMonth) ?? toCalendarDate(defaultSelectedDate) ?? toCalendarDate(selectedDate ?? undefined) ?? new Date()));
|
|
36
|
+
const [internalSelectedDate, setInternalSelectedDate] = React.useState(() => toCalendarDate(defaultSelectedDate));
|
|
37
|
+
const activeMonth = firstOfMonth(toCalendarDate(visibleMonth) ?? internalVisibleMonth);
|
|
38
|
+
const activeSelectedDate = selectedDate === undefined ? internalSelectedDate : toCalendarDate(selectedDate ?? undefined);
|
|
39
|
+
const monthLabel = new Intl.DateTimeFormat(locale, {
|
|
40
|
+
month: "long",
|
|
41
|
+
year: "numeric"
|
|
42
|
+
}).format(activeMonth);
|
|
43
|
+
const changeMonth = amount => {
|
|
44
|
+
const nextMonth = monthBy(activeMonth, amount);
|
|
45
|
+
if (visibleMonth === undefined) {
|
|
46
|
+
setInternalVisibleMonth(nextMonth);
|
|
47
|
+
}
|
|
48
|
+
onVisibleMonthChange?.(nextMonth);
|
|
49
|
+
};
|
|
50
|
+
const selectDate = date => {
|
|
51
|
+
if (selectedDate === undefined) {
|
|
52
|
+
setInternalSelectedDate(date);
|
|
53
|
+
}
|
|
54
|
+
if (date.getMonth() !== activeMonth.getMonth() || date.getFullYear() !== activeMonth.getFullYear()) {
|
|
55
|
+
if (visibleMonth === undefined) {
|
|
56
|
+
setInternalVisibleMonth(firstOfMonth(date));
|
|
57
|
+
}
|
|
58
|
+
onVisibleMonthChange?.(firstOfMonth(date));
|
|
59
|
+
}
|
|
60
|
+
onDateSelect?.(date);
|
|
61
|
+
};
|
|
62
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
63
|
+
testID: testID,
|
|
64
|
+
style: [styles.container, {
|
|
65
|
+
gap: theme.spacing(1)
|
|
66
|
+
}],
|
|
67
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
68
|
+
style: styles.monthHeader,
|
|
69
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
70
|
+
accessibilityRole: "button",
|
|
71
|
+
accessibilityLabel: previousMonthLabel,
|
|
72
|
+
onPress: () => changeMonth(-1),
|
|
73
|
+
style: styles.navigationButton,
|
|
74
|
+
testID: `${testID}-previous-month`,
|
|
75
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
76
|
+
theme: theme,
|
|
77
|
+
variant: "titleLarge",
|
|
78
|
+
children: "\u2039"
|
|
79
|
+
})
|
|
80
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
81
|
+
accessibilityRole: "header",
|
|
82
|
+
theme: theme,
|
|
83
|
+
variant: "titleMedium",
|
|
84
|
+
children: monthLabel
|
|
85
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
86
|
+
accessibilityRole: "button",
|
|
87
|
+
accessibilityLabel: nextMonthLabel,
|
|
88
|
+
onPress: () => changeMonth(1),
|
|
89
|
+
style: styles.navigationButton,
|
|
90
|
+
testID: `${testID}-next-month`,
|
|
91
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
92
|
+
theme: theme,
|
|
93
|
+
variant: "titleLarge",
|
|
94
|
+
children: "\u203A"
|
|
95
|
+
})
|
|
96
|
+
})]
|
|
97
|
+
}), /*#__PURE__*/_jsx(CalendarGrid, {
|
|
98
|
+
activeMonth: activeMonth,
|
|
99
|
+
selectedDate: activeSelectedDate,
|
|
100
|
+
minDate: minDate,
|
|
101
|
+
maxDate: maxDate,
|
|
102
|
+
isDateDisabled: isDateDisabled,
|
|
103
|
+
markers: markers,
|
|
104
|
+
getMarkerForDate: getMarkerForDate,
|
|
105
|
+
labelForDate: labelForDate,
|
|
106
|
+
locale: locale,
|
|
107
|
+
weekStartsOn: weekStartsOn,
|
|
108
|
+
testID: testID,
|
|
109
|
+
theme: theme,
|
|
110
|
+
Text: Text,
|
|
111
|
+
onSelectDate: selectDate
|
|
112
|
+
})]
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
const Calendar = /*#__PURE__*/React.memo(CalendarComponent);
|
|
116
|
+
const styles = StyleSheet.create({
|
|
117
|
+
container: {
|
|
118
|
+
width: "100%"
|
|
119
|
+
},
|
|
120
|
+
monthHeader: {
|
|
121
|
+
alignItems: "center",
|
|
122
|
+
flexDirection: "row",
|
|
123
|
+
justifyContent: "space-between"
|
|
124
|
+
},
|
|
125
|
+
navigationButton: {
|
|
126
|
+
alignItems: "center",
|
|
127
|
+
height: 40,
|
|
128
|
+
justifyContent: "center",
|
|
129
|
+
width: 40
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
export { Calendar };
|
|
133
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Pressable","StyleSheet","View","Text","PaperText","useOvokUi","firstOfMonth","monthBy","toCalendarDate","CalendarGrid","jsx","_jsx","jsxs","_jsxs","CalendarComponent","selectedDate","defaultSelectedDate","onDateSelect","visibleMonth","defaultVisibleMonth","onVisibleMonthChange","locale","weekStartsOn","minDate","maxDate","isDateDisabled","markers","getMarkerForDate","labelForDate","previousMonthLabel","nextMonthLabel","testID","uiProps","theme","slots","internalVisibleMonth","setInternalVisibleMonth","useState","undefined","Date","internalSelectedDate","setInternalSelectedDate","activeMonth","activeSelectedDate","monthLabel","Intl","DateTimeFormat","month","year","format","changeMonth","amount","nextMonth","selectDate","date","getMonth","getFullYear","style","styles","container","gap","spacing","children","monthHeader","accessibilityRole","accessibilityLabel","onPress","navigationButton","variant","onSelectDate","Calendar","memo","create","width","alignItems","flexDirection","justifyContent","height"],"sourceRoot":"../../../../../src","sources":["modules/ui/components/calendar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { StyleSheet, View } from "react-native";
|
|
5
|
+
import { Text as PaperText } from "react-native-paper";
|
|
6
|
+
import { useOvokUi } from "../use-ovok-ui.js";
|
|
7
|
+
import { calendarDateKey, toCalendarDate } from "../utils/calendar-date.js";
|
|
8
|
+
import { Calendar } from "./calendar.js";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const normalizePeriods = periods => {
|
|
11
|
+
const valid = periods.flatMap(({
|
|
12
|
+
startDate,
|
|
13
|
+
endDate
|
|
14
|
+
}) => {
|
|
15
|
+
const start = toCalendarDate(startDate);
|
|
16
|
+
const end = toCalendarDate(endDate);
|
|
17
|
+
if (!start || !end || end < start) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
return [{
|
|
21
|
+
start,
|
|
22
|
+
end
|
|
23
|
+
}];
|
|
24
|
+
}).sort((left, right) => left.start.getTime() - right.start.getTime());
|
|
25
|
+
const merged = [];
|
|
26
|
+
for (const period of valid) {
|
|
27
|
+
const previous = merged[merged.length - 1];
|
|
28
|
+
const dayAfterPrevious = previous ? new Date(previous.end.getFullYear(), previous.end.getMonth(), previous.end.getDate() + 1) : undefined;
|
|
29
|
+
if (previous && dayAfterPrevious && period.start <= dayAfterPrevious) {
|
|
30
|
+
if (period.end > previous.end) {
|
|
31
|
+
previous.end = period.end;
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
merged.push({
|
|
35
|
+
...period
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return merged.map(({
|
|
40
|
+
start,
|
|
41
|
+
end
|
|
42
|
+
}) => ({
|
|
43
|
+
start,
|
|
44
|
+
end,
|
|
45
|
+
startKey: calendarDateKey(start),
|
|
46
|
+
endKey: calendarDateKey(end)
|
|
47
|
+
}));
|
|
48
|
+
};
|
|
49
|
+
const PeriodCalendar = ({
|
|
50
|
+
periods,
|
|
51
|
+
periodLabel = "Period",
|
|
52
|
+
labelForPeriodDate,
|
|
53
|
+
showLegend = true,
|
|
54
|
+
testID = "period-calendar",
|
|
55
|
+
...calendarProps
|
|
56
|
+
}) => {
|
|
57
|
+
const {
|
|
58
|
+
theme,
|
|
59
|
+
slots
|
|
60
|
+
} = useOvokUi(calendarProps);
|
|
61
|
+
const Text = slots.Text ?? PaperText;
|
|
62
|
+
const normalizedPeriods = React.useMemo(() => normalizePeriods(periods), [periods]);
|
|
63
|
+
const getMarkerForDate = React.useCallback(date => {
|
|
64
|
+
const key = calendarDateKey(date);
|
|
65
|
+
const period = normalizedPeriods.find(({
|
|
66
|
+
startKey,
|
|
67
|
+
endKey
|
|
68
|
+
}) => key >= startKey && key <= endKey);
|
|
69
|
+
if (!period) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const isStart = key === period.startKey;
|
|
73
|
+
const isEnd = key === period.endKey;
|
|
74
|
+
return {
|
|
75
|
+
date,
|
|
76
|
+
label: labelForPeriodDate?.(date) ?? periodLabel,
|
|
77
|
+
backgroundColor: theme.colors.tertiaryContainer,
|
|
78
|
+
color: theme.colors.onTertiaryContainer,
|
|
79
|
+
rangePosition: isStart && isEnd ? "single" : isStart ? "start" : isEnd ? "end" : "middle"
|
|
80
|
+
};
|
|
81
|
+
}, [labelForPeriodDate, normalizedPeriods, periodLabel, theme.colors.onTertiaryContainer, theme.colors.tertiaryContainer]);
|
|
82
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
83
|
+
testID: testID,
|
|
84
|
+
style: styles.container,
|
|
85
|
+
children: [/*#__PURE__*/_jsx(Calendar, {
|
|
86
|
+
...calendarProps,
|
|
87
|
+
getMarkerForDate: getMarkerForDate,
|
|
88
|
+
testID: testID
|
|
89
|
+
}), showLegend && /*#__PURE__*/_jsxs(View, {
|
|
90
|
+
accessibilityRole: "text",
|
|
91
|
+
style: styles.legend,
|
|
92
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
93
|
+
accessible: false,
|
|
94
|
+
style: [styles.legendMarker, {
|
|
95
|
+
backgroundColor: theme.colors.tertiaryContainer
|
|
96
|
+
}]
|
|
97
|
+
}), /*#__PURE__*/_jsxs(Text, {
|
|
98
|
+
theme: theme,
|
|
99
|
+
variant: "bodySmall",
|
|
100
|
+
children: [periodLabel, " days"]
|
|
101
|
+
})]
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const styles = StyleSheet.create({
|
|
106
|
+
container: {
|
|
107
|
+
gap: 12,
|
|
108
|
+
width: "100%"
|
|
109
|
+
},
|
|
110
|
+
legend: {
|
|
111
|
+
alignItems: "center",
|
|
112
|
+
flexDirection: "row",
|
|
113
|
+
gap: 8
|
|
114
|
+
},
|
|
115
|
+
legendMarker: {
|
|
116
|
+
borderRadius: 8,
|
|
117
|
+
height: 16,
|
|
118
|
+
width: 16
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
export { PeriodCalendar };
|
|
122
|
+
//# sourceMappingURL=period-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","Text","PaperText","useOvokUi","calendarDateKey","toCalendarDate","Calendar","jsx","_jsx","jsxs","_jsxs","normalizePeriods","periods","valid","flatMap","startDate","endDate","start","end","sort","left","right","getTime","merged","period","previous","length","dayAfterPrevious","Date","getFullYear","getMonth","getDate","undefined","push","map","startKey","endKey","PeriodCalendar","periodLabel","labelForPeriodDate","showLegend","testID","calendarProps","theme","slots","normalizedPeriods","useMemo","getMarkerForDate","useCallback","date","key","find","isStart","isEnd","label","backgroundColor","colors","tertiaryContainer","color","onTertiaryContainer","rangePosition","style","styles","container","children","accessibilityRole","legend","accessible","legendMarker","variant","create","gap","width","alignItems","flexDirection","borderRadius","height"],"sourceRoot":"../../../../../src","sources":["modules/ui/components/period-calendar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,4 +11,6 @@ export * from "./components/urine-test-result.js";
|
|
|
11
11
|
export * from "./components/health-import-card.js";
|
|
12
12
|
export * from "./components/background-sync-setting.js";
|
|
13
13
|
export * from "./components/measurement-trend-chart.js";
|
|
14
|
+
export * from "./components/calendar.js";
|
|
15
|
+
export * from "./components/period-calendar.js";
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/ui/index.ts"],"mappings":";;AAAA,cAAc,YAAS;AACvB,cAAc,kBAAe;AAC7B,cAAc,kCAA+B;AAC7C,cAAc,mCAAgC;AAC9C,cAAc,gDAA6C;AAC3D,cAAc,wCAAqC;AACnD,cAAc,8BAA2B;AACzC,cAAc,mCAAgC;AAC9C,cAAc,oCAAiC;AAC/C,cAAc,yCAAsC;AACpD,cAAc,yCAAsC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["modules/ui/index.ts"],"mappings":";;AAAA,cAAc,YAAS;AACvB,cAAc,kBAAe;AAC7B,cAAc,kCAA+B;AAC7C,cAAc,mCAAgC;AAC9C,cAAc,gDAA6C;AAC3D,cAAc,wCAAqC;AACnD,cAAc,8BAA2B;AACzC,cAAc,mCAAgC;AAC9C,cAAc,oCAAiC;AAC/C,cAAc,yCAAsC;AACpD,cAAc,yCAAsC;AACpD,cAAc,0BAAuB;AACrC,cAAc,iCAA8B","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const toCalendarDate = value => {
|
|
4
|
+
if (value === undefined) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
if (value instanceof Date) {
|
|
8
|
+
if (Number.isNaN(value.getTime())) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return new Date(value.getFullYear(), value.getMonth(), value.getDate());
|
|
12
|
+
}
|
|
13
|
+
const dateOnly = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
|
|
14
|
+
if (dateOnly) {
|
|
15
|
+
const year = Number(dateOnly[1]);
|
|
16
|
+
const month = Number(dateOnly[2]) - 1;
|
|
17
|
+
const day = Number(dateOnly[3]);
|
|
18
|
+
const date = new Date(year, month, day);
|
|
19
|
+
return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day ? date : undefined;
|
|
20
|
+
}
|
|
21
|
+
const parsed = new Date(value);
|
|
22
|
+
return Number.isNaN(parsed.getTime()) ? undefined : new Date(parsed.getFullYear(), parsed.getMonth(), parsed.getDate());
|
|
23
|
+
};
|
|
24
|
+
const calendarDateKey = date => `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
|
|
25
|
+
const firstOfMonth = date => new Date(date.getFullYear(), date.getMonth(), 1);
|
|
26
|
+
const calendarGridDates = (visibleMonth, weekStartsOn) => {
|
|
27
|
+
const first = firstOfMonth(visibleMonth);
|
|
28
|
+
const offset = (first.getDay() - weekStartsOn + 7) % 7;
|
|
29
|
+
const gridStart = new Date(first.getFullYear(), first.getMonth(), 1 - offset);
|
|
30
|
+
return Array.from({
|
|
31
|
+
length: 42
|
|
32
|
+
}, (_, index) => new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + index));
|
|
33
|
+
};
|
|
34
|
+
const monthBy = (date, amount) => new Date(date.getFullYear(), date.getMonth() + amount, 1);
|
|
35
|
+
export { calendarDateKey, calendarGridDates, firstOfMonth, monthBy, toCalendarDate };
|
|
36
|
+
//# sourceMappingURL=calendar-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toCalendarDate","value","undefined","Date","Number","isNaN","getTime","getFullYear","getMonth","getDate","dateOnly","exec","year","month","day","date","parsed","calendarDateKey","String","padStart","firstOfMonth","calendarGridDates","visibleMonth","weekStartsOn","first","offset","getDay","gridStart","Array","from","length","_","index","monthBy","amount"],"sourceRoot":"../../../../../src","sources":["modules/ui/utils/calendar-date.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { OvokTheme, OvokUiSlots } from "../types";
|
|
3
|
+
import type { CalendarDayMarker } from "./calendar";
|
|
4
|
+
import { type CalendarDateInput, type WeekStartsOn } from "../utils/calendar-date";
|
|
5
|
+
interface CalendarGridProps {
|
|
6
|
+
activeMonth: Date;
|
|
7
|
+
selectedDate?: Date;
|
|
8
|
+
minDate?: CalendarDateInput;
|
|
9
|
+
maxDate?: CalendarDateInput;
|
|
10
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
11
|
+
markers: readonly CalendarDayMarker[];
|
|
12
|
+
getMarkerForDate?: (date: Date) => CalendarDayMarker | undefined;
|
|
13
|
+
labelForDate?: (date: Date) => string;
|
|
14
|
+
locale?: string;
|
|
15
|
+
weekStartsOn: WeekStartsOn;
|
|
16
|
+
testID: string;
|
|
17
|
+
theme: OvokTheme;
|
|
18
|
+
Text: OvokUiSlots["Text"];
|
|
19
|
+
onSelectDate: (date: Date) => void;
|
|
20
|
+
}
|
|
21
|
+
declare const CalendarGrid: React.MemoExoticComponent<({ activeMonth, selectedDate, minDate, maxDate, isDateDisabled, markers, getMarkerForDate, labelForDate, locale, weekStartsOn, testID, theme, Text, onSelectDate, }: CalendarGridProps) => React.JSX.Element>;
|
|
22
|
+
export { CalendarGrid };
|
|
23
|
+
//# sourceMappingURL=calendar-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-grid.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/ui/components/calendar-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAGL,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,iBAAiB;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,GAAG,SAAS,CAAC;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACpC;AAuID,QAAA,MAAM,YAAY,iMAtHf,iBAAiB,uBAsHkC,CAAC;AAqBvD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { OvokUiProps } from "../types";
|
|
3
|
+
import type { CalendarDateInput, WeekStartsOn } from "../utils/calendar-date";
|
|
4
|
+
interface CalendarDayMarker {
|
|
5
|
+
date: CalendarDateInput;
|
|
6
|
+
label?: string;
|
|
7
|
+
backgroundColor?: string;
|
|
8
|
+
color?: string;
|
|
9
|
+
rangePosition?: "single" | "start" | "middle" | "end";
|
|
10
|
+
}
|
|
11
|
+
interface CalendarProps extends OvokUiProps {
|
|
12
|
+
selectedDate?: CalendarDateInput | null;
|
|
13
|
+
defaultSelectedDate?: CalendarDateInput;
|
|
14
|
+
onDateSelect?: (date: Date) => void;
|
|
15
|
+
visibleMonth?: CalendarDateInput;
|
|
16
|
+
defaultVisibleMonth?: CalendarDateInput;
|
|
17
|
+
onVisibleMonthChange?: (month: Date) => void;
|
|
18
|
+
locale?: string;
|
|
19
|
+
weekStartsOn?: WeekStartsOn;
|
|
20
|
+
minDate?: CalendarDateInput;
|
|
21
|
+
maxDate?: CalendarDateInput;
|
|
22
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
23
|
+
markers?: readonly CalendarDayMarker[];
|
|
24
|
+
getMarkerForDate?: (date: Date) => CalendarDayMarker | undefined;
|
|
25
|
+
labelForDate?: (date: Date) => string;
|
|
26
|
+
previousMonthLabel?: string;
|
|
27
|
+
nextMonthLabel?: string;
|
|
28
|
+
testID?: string;
|
|
29
|
+
}
|
|
30
|
+
declare const Calendar: React.MemoExoticComponent<({ selectedDate, defaultSelectedDate, onDateSelect, visibleMonth, defaultVisibleMonth, onVisibleMonthChange, locale, weekStartsOn, minDate, maxDate, isDateDisabled, markers, getMarkerForDate, labelForDate, previousMonthLabel, nextMonthLabel, testID, ...uiProps }: CalendarProps) => React.JSX.Element>;
|
|
31
|
+
export { Calendar, type CalendarDayMarker, type CalendarProps };
|
|
32
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/ui/components/calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO9E,UAAU,iBAAiB;IACzB,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvD;AAED,UAAU,aAAc,SAAQ,WAAW;IACzC,YAAY,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,GAAG,SAAS,CAAC;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwHD,QAAA,MAAM,QAAQ,oSAnGX,aAAa,uBAmG8B,CAAC;AAiB/C,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { CalendarProps } from "./calendar";
|
|
3
|
+
import type { CalendarDateInput } from "../utils/calendar-date";
|
|
4
|
+
interface PeriodDateRange {
|
|
5
|
+
startDate: CalendarDateInput;
|
|
6
|
+
endDate: CalendarDateInput;
|
|
7
|
+
}
|
|
8
|
+
type PeriodCalendarProps = Omit<CalendarProps, "markers" | "getMarkerForDate"> & {
|
|
9
|
+
periods: readonly PeriodDateRange[];
|
|
10
|
+
periodLabel?: string;
|
|
11
|
+
labelForPeriodDate?: (date: Date) => string;
|
|
12
|
+
showLegend?: boolean;
|
|
13
|
+
};
|
|
14
|
+
declare const PeriodCalendar: ({ periods, periodLabel, labelForPeriodDate, showLegend, testID, ...calendarProps }: PeriodCalendarProps) => React.JSX.Element;
|
|
15
|
+
export { PeriodCalendar, type PeriodCalendarProps, type PeriodDateRange };
|
|
16
|
+
//# sourceMappingURL=period-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"period-calendar.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/ui/components/period-calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAOhE,UAAU,eAAe;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,kBAAkB,CAAC,GAAG;IAC/E,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AA+CF,QAAA,MAAM,cAAc,GAAI,oFAOrB,mBAAmB,sBA2CrB,CAAC;AAQF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,CAAC"}
|
|
@@ -9,4 +9,6 @@ export * from "./components/urine-test-result";
|
|
|
9
9
|
export * from "./components/health-import-card";
|
|
10
10
|
export * from "./components/background-sync-setting";
|
|
11
11
|
export * from "./components/measurement-trend-chart";
|
|
12
|
+
export * from "./components/calendar";
|
|
13
|
+
export * from "./components/period-calendar";
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type CalendarDateInput = Date | string;
|
|
2
|
+
type WeekStartsOn = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
3
|
+
declare const toCalendarDate: (value: CalendarDateInput | undefined) => Date | undefined;
|
|
4
|
+
declare const calendarDateKey: (date: Date) => string;
|
|
5
|
+
declare const firstOfMonth: (date: Date) => Date;
|
|
6
|
+
declare const calendarGridDates: (visibleMonth: Date, weekStartsOn: WeekStartsOn) => Date[];
|
|
7
|
+
declare const monthBy: (date: Date, amount: number) => Date;
|
|
8
|
+
export { calendarDateKey, calendarGridDates, firstOfMonth, monthBy, toCalendarDate, type CalendarDateInput, type WeekStartsOn, };
|
|
9
|
+
//# sourceMappingURL=calendar-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-date.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/ui/utils/calendar-date.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEvC,KAAK,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,QAAA,MAAM,cAAc,GAClB,OAAO,iBAAiB,GAAG,SAAS,KACnC,IAAI,GAAG,SAiCT,CAAC;AAEF,QAAA,MAAM,eAAe,GAAI,MAAM,IAAI,KAAG,MAC8E,CAAC;AAErH,QAAA,MAAM,YAAY,GAAI,MAAM,IAAI,KAAG,IACe,CAAC;AAEnD,QAAA,MAAM,iBAAiB,GACrB,cAAc,IAAI,EAClB,cAAc,YAAY,KACzB,IAAI,EASN,CAAC;AAEF,QAAA,MAAM,OAAO,GAAI,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAG,IACa,CAAC;AAE5D,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,CAAC"}
|