@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.
Files changed (41) hide show
  1. package/lib/commonjs/modules/ui/components/calendar-grid.js +156 -0
  2. package/lib/commonjs/modules/ui/components/calendar-grid.js.map +1 -0
  3. package/lib/commonjs/modules/ui/components/calendar.js +137 -0
  4. package/lib/commonjs/modules/ui/components/calendar.js.map +1 -0
  5. package/lib/commonjs/modules/ui/components/period-calendar.js +127 -0
  6. package/lib/commonjs/modules/ui/components/period-calendar.js.map +1 -0
  7. package/lib/commonjs/modules/ui/index.js +22 -0
  8. package/lib/commonjs/modules/ui/index.js.map +1 -1
  9. package/lib/commonjs/modules/ui/utils/calendar-date.js +44 -0
  10. package/lib/commonjs/modules/ui/utils/calendar-date.js.map +1 -0
  11. package/lib/module/modules/ui/components/calendar-grid.js +152 -0
  12. package/lib/module/modules/ui/components/calendar-grid.js.map +1 -0
  13. package/lib/module/modules/ui/components/calendar.js +133 -0
  14. package/lib/module/modules/ui/components/calendar.js.map +1 -0
  15. package/lib/module/modules/ui/components/period-calendar.js +122 -0
  16. package/lib/module/modules/ui/components/period-calendar.js.map +1 -0
  17. package/lib/module/modules/ui/index.js +2 -0
  18. package/lib/module/modules/ui/index.js.map +1 -1
  19. package/lib/module/modules/ui/utils/calendar-date.js +36 -0
  20. package/lib/module/modules/ui/utils/calendar-date.js.map +1 -0
  21. package/lib/typescript/commonjs/src/modules/ui/components/calendar-grid.d.ts +23 -0
  22. package/lib/typescript/commonjs/src/modules/ui/components/calendar-grid.d.ts.map +1 -0
  23. package/lib/typescript/commonjs/src/modules/ui/components/calendar.d.ts +32 -0
  24. package/lib/typescript/commonjs/src/modules/ui/components/calendar.d.ts.map +1 -0
  25. package/lib/typescript/commonjs/src/modules/ui/components/period-calendar.d.ts +16 -0
  26. package/lib/typescript/commonjs/src/modules/ui/components/period-calendar.d.ts.map +1 -0
  27. package/lib/typescript/commonjs/src/modules/ui/index.d.ts +2 -0
  28. package/lib/typescript/commonjs/src/modules/ui/index.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/src/modules/ui/utils/calendar-date.d.ts +9 -0
  30. package/lib/typescript/commonjs/src/modules/ui/utils/calendar-date.d.ts.map +1 -0
  31. package/lib/typescript/module/src/modules/ui/components/calendar-grid.d.ts +23 -0
  32. package/lib/typescript/module/src/modules/ui/components/calendar-grid.d.ts.map +1 -0
  33. package/lib/typescript/module/src/modules/ui/components/calendar.d.ts +32 -0
  34. package/lib/typescript/module/src/modules/ui/components/calendar.d.ts.map +1 -0
  35. package/lib/typescript/module/src/modules/ui/components/period-calendar.d.ts +16 -0
  36. package/lib/typescript/module/src/modules/ui/components/period-calendar.d.ts.map +1 -0
  37. package/lib/typescript/module/src/modules/ui/index.d.ts +2 -0
  38. package/lib/typescript/module/src/modules/ui/index.d.ts.map +1 -1
  39. package/lib/typescript/module/src/modules/ui/utils/calendar-date.d.ts +9 -0
  40. package/lib/typescript/module/src/modules/ui/utils/calendar-date.d.ts.map +1 -0
  41. 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"}