react-native-ll-calendar 0.8.2 → 0.9.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/README.md CHANGED
@@ -19,7 +19,10 @@ yarn add react-native-ll-calendar
19
19
  ## Usage
20
20
 
21
21
  ```tsx
22
- import { MonthCalendar, CalendarEvent } from 'react-native-ll-calendar';
22
+ import { useState, useRef } from 'react';
23
+ import { View, Button } from 'react-native';
24
+ import dayjs from 'dayjs';
25
+ import { MonthCalendar, CalendarEvent, MonthCalendarRef } from 'react-native-ll-calendar';
23
26
 
24
27
  const events: CalendarEvent[] = [
25
28
  {
@@ -31,51 +34,47 @@ const events: CalendarEvent[] = [
31
34
  borderColor: '#e55353',
32
35
  color: '#0e0e0e',
33
36
  },
34
- {
35
- id: '2',
36
- title: 'Conference',
37
- start: new Date(2025, 9, 10),
38
- end: new Date(2025, 9, 12),
39
- backgroundColor: '#4ecdc4',
40
- borderColor: '#45b7aa',
41
- color: '#0e0e0e',
42
- borderStyle: 'dashed',
43
- borderWidth: 2,
44
- borderRadius: 8,
45
- },
37
+ // ... more events
46
38
  ];
47
39
 
48
40
  function App() {
49
41
  const [date, setDate] = useState(new Date());
50
- const [refreshing, setRefreshing] = useState(false);
42
+ const calendarRef = useRef<MonthCalendarRef>(null);
43
+
44
+ const handleScrollToTop = () => {
45
+ // Scroll to the top of the current month view
46
+ calendarRef.current?.scrollMonthViewToOffset(
47
+ dayjs(date).format('YYYY-MM'),
48
+ 0,
49
+ true
50
+ );
51
+ };
51
52
 
52
- const handleRefresh = () => {
53
- setRefreshing(true);
54
- // Fetch new events or data
55
- setTimeout(() => setRefreshing(false), 1000);
53
+ const checkRowHeight = () => {
54
+ // Get the height of the row containing the specific date
55
+ const height = calendarRef.current?.getMonthRowHeight(
56
+ dayjs(date).format('YYYY-MM'),
57
+ new Date()
58
+ );
59
+ console.log('Row height:', height);
56
60
  };
57
61
 
58
62
  return (
59
- <MonthCalendar
60
- defaultDate={date}
61
- weekStartsOn={1}
62
- onChangeDate={(newDate) => setDate(newDate)}
63
- events={events}
64
- onPressEvent={(event) => console.log('Event pressed:', event.title)}
65
- onLongPressEvent={(event) => console.log('Event long pressed:', event.title)}
66
- delayLongPressEvent={500}
67
- onPressCell={(date) => console.log('Cell pressed:', date)}
68
- onLongPressCell={(date) => console.log('Cell long pressed:', date)}
69
- delayLongPressCell={500}
70
- onRefresh={handleRefresh}
71
- refreshing={refreshing}
72
- todayCellTextStyle={{ fontWeight: 'bold', color: '#007AFF' }}
73
- dayCellTextStyle={(date) => ({
74
- color: date.getDay() === 0 ? '#FF3B30' : '#000000',
75
- })}
76
- stickyHeaderEnabled={true}
77
- cellBorderColor="#CCCCCC"
78
- />
63
+ <View style={{ flex: 1 }}>
64
+ <View style={{ flexDirection: 'row', justifyContent: 'space-around', padding: 10 }}>
65
+ <Button title="Scroll Top" onPress={handleScrollToTop} />
66
+ <Button title="Check Height" onPress={checkRowHeight} />
67
+ </View>
68
+ <MonthCalendar
69
+ ref={calendarRef}
70
+ defaultDate={date}
71
+ weekStartsOn={1}
72
+ onChangeDate={(newDate) => setDate(newDate)}
73
+ events={events}
74
+ onPressEvent={(event) => console.log('Event pressed:', event.title)}
75
+ // ... other props
76
+ />
77
+ </View>
79
78
  );
80
79
  }
81
80
  ```
@@ -112,6 +111,16 @@ function App() {
112
111
  | `eventHeight` | `number` | No | `26` | Height of event items in pixels |
113
112
  | `eventTextStyle` | `(event: CalendarEvent) => TextStyle` | No | - | Style function for event text |
114
113
  | `eventEllipsizeMode` | `'head' \| 'middle' \| 'tail' \| 'clip'` | No | `'tail'` | Ellipsize mode for event text |
114
+ | `bottomSpacing` | `number` | No | - | Bottom spacing in pixels for scrollable content |
115
+
116
+ ### MonthCalendarRef Methods
117
+
118
+ You can access these methods by passing a `ref` to the `MonthCalendar` component.
119
+
120
+ | Method | Signature | Description |
121
+ | ------ | --------- | ----------- |
122
+ | `scrollMonthViewToOffset` | `(monthKey: string, offset: number, animated?: boolean) => void` | Scrolls the view of the specified month (format: 'YYYY-MM') to a vertical offset. |
123
+ | `getMonthRowHeight` | `(monthKey: string, date: Date) => number \| undefined` | Returns the height of the week row containing the specified date in the specified month. |
115
124
 
116
125
  ### CalendarEvent
117
126
 
@@ -146,6 +155,8 @@ function App() {
146
155
  - Font scaling control for text elements
147
156
  - Customizable event height and text styles
148
157
  - Spans 10 years before and after the default date
158
+ - **Programmatic scroll control via Ref**
159
+ - **Dynamic row height retrieval via Ref**
149
160
 
150
161
  ## License
151
162
 
@@ -2,12 +2,12 @@
2
2
 
3
3
  import { useWindowDimensions, FlatList } from 'react-native';
4
4
  import dayjs from 'dayjs';
5
- import { useState } from 'react';
5
+ import { useState, useRef, useImperativeHandle, forwardRef } from 'react';
6
6
  import { MonthCalendarViewItem } from "./view/MonthCalendarViewItem.js";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  const HALF_PANEL_LENGTH = 120; // 10 years
9
9
 
10
- export const MonthCalendar = props => {
10
+ export const MonthCalendar = /*#__PURE__*/forwardRef((props, ref) => {
11
11
  const [dateState] = useState(props.defaultDate);
12
12
  const [_activeIndex, setActiveIndex] = useState(HALF_PANEL_LENGTH);
13
13
  const defaultDateDjs = dayjs(dateState);
@@ -26,6 +26,27 @@ export const MonthCalendar = props => {
26
26
  const {
27
27
  width
28
28
  } = useWindowDimensions();
29
+ const monthViewRefs = useRef({});
30
+ useImperativeHandle(ref, () => ({
31
+ scrollMonthViewToOffset: (monthKey, offset, animated = true) => {
32
+ const targetRef = monthViewRefs.current[monthKey];
33
+ if (targetRef) {
34
+ targetRef.scrollTo({
35
+ y: offset,
36
+ animated
37
+ });
38
+ } else {
39
+ console.warn(`Month view for ${monthKey} is not currently rendered.`);
40
+ }
41
+ },
42
+ getMonthRowHeight: (monthKey, date) => {
43
+ const targetRef = monthViewRefs.current[monthKey];
44
+ if (targetRef) {
45
+ return targetRef.getRowHeight(date);
46
+ }
47
+ return undefined;
48
+ }
49
+ }));
29
50
  return /*#__PURE__*/_jsx(FlatList, {
30
51
  horizontal: true,
31
52
  pagingEnabled: true,
@@ -54,6 +75,13 @@ export const MonthCalendar = props => {
54
75
  index
55
76
  }) => {
56
77
  return /*#__PURE__*/_jsx(MonthCalendarViewItem, {
78
+ ref: r => {
79
+ if (r) {
80
+ monthViewRefs.current[item] = r;
81
+ } else {
82
+ delete monthViewRefs.current[item];
83
+ }
84
+ },
57
85
  month: item,
58
86
  weekStartsOn: props.weekStartsOn ?? 0,
59
87
  events: props.events,
@@ -79,7 +107,8 @@ export const MonthCalendar = props => {
79
107
  allowFontScaling: props.allowFontScaling,
80
108
  eventHeight: props.eventHeight,
81
109
  eventTextStyle: props.eventTextStyle,
82
- eventEllipsizeMode: props.eventEllipsizeMode
110
+ eventEllipsizeMode: props.eventEllipsizeMode,
111
+ bottomSpacing: props.bottomSpacing
83
112
  });
84
113
  },
85
114
  showsHorizontalScrollIndicator: false,
@@ -89,5 +118,5 @@ export const MonthCalendar = props => {
89
118
  maxToRenderPerBatch: 5,
90
119
  removeClippedSubviews: false
91
120
  });
92
- };
121
+ });
93
122
  //# sourceMappingURL=MonthCalendar.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useWindowDimensions","FlatList","dayjs","useState","MonthCalendarViewItem","jsx","_jsx","HALF_PANEL_LENGTH","MonthCalendar","props","dateState","defaultDate","_activeIndex","setActiveIndex","defaultDateDjs","startOfDefaultDateDjs","startOf","prevPanels","Array","from","length","_","i","subtract","format","nextPanels","add","panels","width","horizontal","pagingEnabled","getItemLayout","_data","index","offset","onMomentumScrollEnd","e","scrollX","nativeEvent","contentOffset","x","newIndex","Math","round","month","newDate","Date","onChangeDate","initialScrollIndex","decelerationRate","data","renderItem","item","weekStartsOn","events","onPressEvent","onLongPressEvent","delayLongPressEvent","onPressCell","onLongPressCell","delayLongPressCell","flatListIndex","onRefresh","refreshing","dayCellContainerStyle","dayCellTextStyle","locale","weekdayCellContainerStyle","weekdayCellTextStyle","todayCellTextStyle","hiddenMonth","monthFormat","stickyHeaderEnabled","cellBorderColor","allowFontScaling","eventHeight","eventTextStyle","eventEllipsizeMode","showsHorizontalScrollIndicator","scrollEnabled","windowSize","initialNumToRender","maxToRenderPerBatch","removeClippedSubviews"],"sourceRoot":"../../../../src","sources":["calendar/month-calendar/MonthCalendar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useWindowDimensions","FlatList","dayjs","useState","useRef","useImperativeHandle","forwardRef","MonthCalendarViewItem","jsx","_jsx","HALF_PANEL_LENGTH","MonthCalendar","props","ref","dateState","defaultDate","_activeIndex","setActiveIndex","defaultDateDjs","startOfDefaultDateDjs","startOf","prevPanels","Array","from","length","_","i","subtract","format","nextPanels","add","panels","width","monthViewRefs","scrollMonthViewToOffset","monthKey","offset","animated","targetRef","current","scrollTo","y","console","warn","getMonthRowHeight","date","getRowHeight","undefined","horizontal","pagingEnabled","getItemLayout","_data","index","onMomentumScrollEnd","e","scrollX","nativeEvent","contentOffset","x","newIndex","Math","round","month","newDate","Date","onChangeDate","initialScrollIndex","decelerationRate","data","renderItem","item","r","weekStartsOn","events","onPressEvent","onLongPressEvent","delayLongPressEvent","onPressCell","onLongPressCell","delayLongPressCell","flatListIndex","onRefresh","refreshing","dayCellContainerStyle","dayCellTextStyle","locale","weekdayCellContainerStyle","weekdayCellTextStyle","todayCellTextStyle","hiddenMonth","monthFormat","stickyHeaderEnabled","cellBorderColor","allowFontScaling","eventHeight","eventTextStyle","eventEllipsizeMode","bottomSpacing","showsHorizontalScrollIndicator","scrollEnabled","windowSize","initialNumToRender","maxToRenderPerBatch","removeClippedSubviews"],"sourceRoot":"../../../../src","sources":["calendar/month-calendar/MonthCalendar.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,10 +8,10 @@ import { monthlyEndDate, monthlyStartDate } from "../../../utils/functions.js";
8
8
  import { useEvents } from "../logic/useEvents.js";
9
9
  import { CELL_BORDER_WIDTH } from "../../../constants/size.js";
10
10
  import { RefreshControl } from 'react-native';
11
- import { useCallback, useMemo, useState } from 'react';
11
+ import { useCallback, useMemo, useState, forwardRef, useImperativeHandle, useRef } from 'react';
12
12
  import { MonthCalendarWeekDayRow } from "./MonthCalendarWeekDayRow.js";
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- export const MonthCalendarViewItem = props => {
14
+ export const MonthCalendarViewItem = /*#__PURE__*/forwardRef((props, ref) => {
15
15
  const {
16
16
  width
17
17
  } = useWindowDimensions();
@@ -62,7 +62,27 @@ export const MonthCalendarViewItem = props => {
62
62
  const stickyHeaderIndices = useMemo(() => {
63
63
  return props.stickyHeaderEnabled ? [0] : [];
64
64
  }, [props.stickyHeaderEnabled]);
65
+ const scrollViewRef = useRef(null);
66
+ const weekHeights = useRef(new Map());
67
+ useImperativeHandle(ref, () => ({
68
+ scrollTo: options => {
69
+ scrollViewRef.current?.scrollTo(options);
70
+ },
71
+ scrollToEnd: options => {
72
+ scrollViewRef.current?.scrollToEnd(options);
73
+ },
74
+ getRowHeight: targetDate => {
75
+ const targetDjs = dayjs(targetDate);
76
+ const foundWeek = weeks.find(week => week.some(day => day.isSame(targetDjs, 'day')));
77
+ if (foundWeek && foundWeek[0]) {
78
+ const weekId = foundWeek[0].format('YYYY-MM-DD');
79
+ return weekHeights.current.get(weekId);
80
+ }
81
+ return undefined;
82
+ }
83
+ }));
65
84
  return /*#__PURE__*/_jsxs(ScrollView, {
85
+ ref: scrollViewRef,
66
86
  style: [styles.container, {
67
87
  width,
68
88
  zIndex: props.flatListIndex,
@@ -126,12 +146,19 @@ export const MonthCalendarViewItem = props => {
126
146
  allowFontScaling: props.allowFontScaling,
127
147
  eventHeight: props.eventHeight,
128
148
  eventTextStyle: props.eventTextStyle,
129
- eventEllipsizeMode: props.eventEllipsizeMode
149
+ eventEllipsizeMode: props.eventEllipsizeMode,
150
+ onLayout: e => {
151
+ weekHeights.current.set(weekId, e.nativeEvent.layout.height);
152
+ }
130
153
  }, `row-${index}`);
131
154
  })
155
+ }), /*#__PURE__*/_jsx(View, {
156
+ style: {
157
+ height: props.bottomSpacing
158
+ }
132
159
  })]
133
160
  });
134
- };
161
+ });
135
162
  const styles = StyleSheet.create({
136
163
  container: {
137
164
  height: '100%',
@@ -1 +1 @@
1
- {"version":3,"names":["dayjs","ScrollView","StyleSheet","Text","View","useWindowDimensions","MonthCalendarWeekRow","MonthCalendarEventPosition","monthlyEndDate","monthlyStartDate","useEvents","CELL_BORDER_WIDTH","RefreshControl","useCallback","useMemo","useState","MonthCalendarWeekDayRow","jsx","_jsx","jsxs","_jsxs","MonthCalendarViewItem","props","width","eventPosition","date","Date","month","dateDjs","startDate","weekStartsOn","endDate","endDjs","weeks","currentDate","isBefore","week","Array","from","length","_","i","add","push","eventsGroupByWeekId","events","bodyHeight","setBodyHeight","onLayoutBody","e","nativeEvent","layout","height","monthRowHeight","setMonthRowHeight","onLayoutMonthRow","weekdayRowHeight","setWeekdayRowHeight","onLayoutWeekdayRow","weekRowMinHeight","stickyHeaderIndices","stickyHeaderEnabled","style","styles","container","zIndex","flatListIndex","borderColor","cellBorderColor","refreshControl","refreshing","onRefresh","onLayout","children","hiddenMonth","blankMonthContainer","monthContainer","monthText","allowFontScaling","format","monthFormat","dates","locale","weekdayCellContainerStyle","weekdayCellTextStyle","map","index","firstDayOfWeek","undefined","weekId","weekEvents","onPressEvent","onLongPressEvent","delayLongPressEvent","onPressCell","onLongPressCell","delayLongPressCell","dayCellContainerStyle","dayCellTextStyle","todayCellTextStyle","eventHeight","eventTextStyle","eventEllipsizeMode","create","alignSelf","borderWidth","padding","backgroundColor","textAlign","fontSize"],"sourceRoot":"../../../../../src","sources":["calendar/month-calendar/view/MonthCalendarViewItem.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["dayjs","ScrollView","StyleSheet","Text","View","useWindowDimensions","MonthCalendarWeekRow","MonthCalendarEventPosition","monthlyEndDate","monthlyStartDate","useEvents","CELL_BORDER_WIDTH","RefreshControl","useCallback","useMemo","useState","forwardRef","useImperativeHandle","useRef","MonthCalendarWeekDayRow","jsx","_jsx","jsxs","_jsxs","MonthCalendarViewItem","props","ref","width","eventPosition","date","Date","month","dateDjs","startDate","weekStartsOn","endDate","endDjs","weeks","currentDate","isBefore","week","Array","from","length","_","i","add","push","eventsGroupByWeekId","events","bodyHeight","setBodyHeight","onLayoutBody","e","nativeEvent","layout","height","monthRowHeight","setMonthRowHeight","onLayoutMonthRow","weekdayRowHeight","setWeekdayRowHeight","onLayoutWeekdayRow","weekRowMinHeight","stickyHeaderIndices","stickyHeaderEnabled","scrollViewRef","weekHeights","Map","scrollTo","options","current","scrollToEnd","getRowHeight","targetDate","targetDjs","foundWeek","find","some","day","isSame","weekId","format","get","undefined","style","styles","container","zIndex","flatListIndex","borderColor","cellBorderColor","refreshControl","refreshing","onRefresh","onLayout","children","hiddenMonth","blankMonthContainer","monthContainer","monthText","allowFontScaling","monthFormat","dates","locale","weekdayCellContainerStyle","weekdayCellTextStyle","map","index","firstDayOfWeek","weekEvents","onPressEvent","onLongPressEvent","delayLongPressEvent","onPressCell","onLongPressCell","delayLongPressCell","dayCellContainerStyle","dayCellTextStyle","todayCellTextStyle","eventHeight","eventTextStyle","eventEllipsizeMode","set","bottomSpacing","create","alignSelf","borderWidth","padding","backgroundColor","textAlign","fontSize"],"sourceRoot":"../../../../../src","sources":["calendar/month-calendar/view/MonthCalendarViewItem.tsx"],"mappings":"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","ignoreList":[]}
@@ -17,6 +17,7 @@ export const MonthCalendarWeekRow = props => {
17
17
  }
18
18
  return /*#__PURE__*/_jsx(View, {
19
19
  style: styles.container,
20
+ onLayout: props.onLayout,
20
21
  children: props.dates.map((djs, dateIndex) => {
21
22
  const text = djs.format('D');
22
23
  const filteredEvents = props.events?.filter(event => {
@@ -1 +1 @@
1
- {"version":3,"names":["dayjs","StyleSheet","useWindowDimensions","Text","TouchableOpacity","View","CELL_BORDER_WIDTH","EVENT_GAP","jsx","_jsx","jsxs","_jsxs","MonthCalendarWeekRow","props","eventHeight","width","screenWidth","dateColumnWidth","weekId","dates","format","eventPosition","resetResource","style","styles","container","children","map","djs","dateIndex","text","filteredEvents","events","filter","event","startDjs","start","isBefore","sort","a","b","aStartDjs","bStartDjs","aEndDjs","end","bEndDjs","aDiffDays","startOf","diff","bDiffDays","rowNums","getRowNums","date","toDate","rowsLength","length","eventIndex","ii","includes","push","dayCellCountainer","minHeight","weekRowMinHeight","zIndex","borderColor","cellBorderColor","onPress","onPressCell","onLongPress","onLongPressCell","delayLongPress","delayLongPressCell","dayCellInner","dayCellContainerStyle","dayCellLabel","dayCellText","dayCellTextStyle","isSame","todayCellTextStyle","allowFontScaling","rowIndex","height","marginBottom","rawStartDjs","endDjs","diffDays","isPrevDateEvent","isLastRow","startDate","days","rowNum","backgroundColor","borderStyle","undefined","borderWidth","borderRadius","prevDateEvent","lastRowEvent","onPressEvent","onLongPressEvent","delayLongPressEvent","numberOfLines","ellipsizeMode","eventEllipsizeMode","eventTitle","color","eventTextStyle","title","id","get","create","display","flexDirection","flex","borderRightWidth","borderBottomWidth","position","top","left","right","bottom","paddingVertical","paddingHorizontal","textAlign","fontSize","alignItems","boxShadow","marginTop","marginLeft","borderTopStartRadius","borderBottomStartRadius"],"sourceRoot":"../../../../../src","sources":["calendar/month-calendar/view/MonthCalendarWeekRow.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["dayjs","StyleSheet","useWindowDimensions","Text","TouchableOpacity","View","CELL_BORDER_WIDTH","EVENT_GAP","jsx","_jsx","jsxs","_jsxs","MonthCalendarWeekRow","props","eventHeight","width","screenWidth","dateColumnWidth","weekId","dates","format","eventPosition","resetResource","style","styles","container","onLayout","children","map","djs","dateIndex","text","filteredEvents","events","filter","event","startDjs","start","isBefore","sort","a","b","aStartDjs","bStartDjs","aEndDjs","end","bEndDjs","aDiffDays","startOf","diff","bDiffDays","rowNums","getRowNums","date","toDate","rowsLength","length","eventIndex","ii","includes","push","dayCellCountainer","minHeight","weekRowMinHeight","zIndex","borderColor","cellBorderColor","onPress","onPressCell","onLongPress","onLongPressCell","delayLongPress","delayLongPressCell","dayCellInner","dayCellContainerStyle","dayCellLabel","dayCellText","dayCellTextStyle","isSame","todayCellTextStyle","allowFontScaling","rowIndex","height","marginBottom","rawStartDjs","endDjs","diffDays","isPrevDateEvent","isLastRow","startDate","days","rowNum","backgroundColor","borderStyle","undefined","borderWidth","borderRadius","prevDateEvent","lastRowEvent","onPressEvent","onLongPressEvent","delayLongPressEvent","numberOfLines","ellipsizeMode","eventEllipsizeMode","eventTitle","color","eventTextStyle","title","id","get","create","display","flexDirection","flex","borderRightWidth","borderBottomWidth","position","top","left","right","bottom","paddingVertical","paddingHorizontal","textAlign","fontSize","alignItems","boxShadow","marginTop","marginLeft","borderTopStartRadius","borderBottomStartRadius"],"sourceRoot":"../../../../../src","sources":["calendar/month-calendar/view/MonthCalendarWeekRow.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,10 @@
1
1
  import { type ViewStyle, type TextStyle } from 'react-native';
2
2
  import type { CalendarEvent, WeekdayNum, WeekStartsOn } from '../../types/month-calendar';
3
- export declare const MonthCalendar: (props: {
3
+ export interface MonthCalendarRef {
4
+ scrollMonthViewToOffset: (monthKey: string, offset: number, animated?: boolean) => void;
5
+ getMonthRowHeight: (monthKey: string, date: Date) => number | undefined;
6
+ }
7
+ type MonthCalendarProps = {
4
8
  defaultDate: Date;
5
9
  weekStartsOn?: WeekStartsOn;
6
10
  onChangeDate?: (date: Date) => void;
@@ -26,6 +30,9 @@ export declare const MonthCalendar: (props: {
26
30
  allowFontScaling?: boolean;
27
31
  eventHeight?: number;
28
32
  eventTextStyle?: (event: CalendarEvent) => TextStyle;
29
- eventEllipsizeMode?: "head" | "middle" | "tail" | "clip";
30
- }) => import("react/jsx-runtime").JSX.Element;
33
+ eventEllipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
34
+ bottomSpacing?: number;
35
+ };
36
+ export declare const MonthCalendar: import("react").ForwardRefExoticComponent<MonthCalendarProps & import("react").RefAttributes<MonthCalendarRef>>;
37
+ export {};
31
38
  //# sourceMappingURL=MonthCalendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonthCalendar.d.ts","sourceRoot":"","sources":["../../../../../src/calendar/month-calendar/MonthCalendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAKpC,eAAO,MAAM,aAAa,GAAI,OAAO;IACnC,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAC7D,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1D,4CA2FA,CAAC"}
1
+ {"version":3,"file":"MonthCalendar.d.ts","sourceRoot":"","sources":["../../../../../src/calendar/month-calendar/MonthCalendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAQpC,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,EAAE,CACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;IACV,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC;CACzE;AAED,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAC7D,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,aAAa,iHAiIzB,CAAC"}
@@ -1,6 +1,17 @@
1
1
  import { type TextStyle, type ViewStyle } from 'react-native';
2
2
  import type { CalendarEvent, WeekdayNum, WeekStartsOn } from '../../../types/month-calendar';
3
- export declare const MonthCalendarViewItem: (props: {
3
+ export interface MonthCalendarViewItemRef {
4
+ scrollTo: (options: {
5
+ x?: number;
6
+ y?: number;
7
+ animated?: boolean;
8
+ }) => void;
9
+ scrollToEnd: (options?: {
10
+ animated?: boolean;
11
+ }) => void;
12
+ getRowHeight: (date: Date) => number | undefined;
13
+ }
14
+ type MonthCalendarViewItemProps = {
4
15
  month: string;
5
16
  weekStartsOn: WeekStartsOn;
6
17
  events: CalendarEvent[];
@@ -26,6 +37,9 @@ export declare const MonthCalendarViewItem: (props: {
26
37
  allowFontScaling?: boolean;
27
38
  eventHeight?: number;
28
39
  eventTextStyle?: (event: CalendarEvent) => TextStyle;
29
- eventEllipsizeMode?: "head" | "middle" | "tail" | "clip";
30
- }) => import("react/jsx-runtime").JSX.Element;
40
+ eventEllipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
41
+ bottomSpacing?: number;
42
+ };
43
+ export declare const MonthCalendarViewItem: import("react").ForwardRefExoticComponent<MonthCalendarViewItemProps & import("react").RefAttributes<MonthCalendarViewItemRef>>;
44
+ export {};
31
45
  //# sourceMappingURL=MonthCalendarViewItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonthCalendarViewItem.d.ts","sourceRoot":"","sources":["../../../../../../src/calendar/month-calendar/view/MonthCalendarViewItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,+BAA+B,CAAC;AASvC,eAAO,MAAM,qBAAqB,GAAI,OAAO;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAC7D,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1D,4CA0IA,CAAC"}
1
+ {"version":3,"file":"MonthCalendarViewItem.d.ts","sourceRoot":"","sources":["../../../../../../src/calendar/month-calendar/view/MonthCalendarViewItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,+BAA+B,CAAC;AAgBvC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5E,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC;CAClD;AAED,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAC7D,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,iIA4KhC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import dayjs from 'dayjs';
2
+ import { type LayoutChangeEvent } from 'react-native';
2
3
  import { type ViewStyle } from 'react-native';
3
4
  import type { CalendarEvent, WeekdayNum } from '../../../types/month-calendar';
4
5
  import type MonthCalendarEventPosition from '../../../utils/month-calendar-event-position';
@@ -24,5 +25,6 @@ export declare const MonthCalendarWeekRow: (props: {
24
25
  eventHeight?: number;
25
26
  eventTextStyle?: (event: CalendarEvent) => TextStyle;
26
27
  eventEllipsizeMode?: "head" | "middle" | "tail" | "clip";
28
+ onLayout?: (event: LayoutChangeEvent) => void;
27
29
  }) => import("react/jsx-runtime").JSX.Element;
28
30
  //# sourceMappingURL=MonthCalendarWeekRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonthCalendarWeekRow.d.ts","sourceRoot":"","sources":["../../../../../../src/calendar/month-calendar/view/MonthCalendarWeekRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAE3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,oBAAoB,GAAI,OAAO;IAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC7C,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1D,4CA0LA,CAAC"}
1
+ {"version":3,"file":"MonthCalendarWeekRow.d.ts","sourceRoot":"","sources":["../../../../../../src/calendar/month-calendar/view/MonthCalendarWeekRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAE3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,oBAAoB,GAAI,OAAO;IAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC7C,yBAAyB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C,4CA0LA,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ll-calendar",
3
- "version": "0.8.2",
3
+ "version": "0.9.1",
4
4
  "description": "ReactNative Calendar Library",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -79,7 +79,7 @@
79
79
  "react": "19.1.0",
80
80
  "react-native": "0.81.4",
81
81
  "react-native-builder-bob": "^0.40.13",
82
- "release-it": "^19.0.4",
82
+ "release-it": "^19.0.6",
83
83
  "typescript": "^5.9.2"
84
84
  },
85
85
  "peerDependencies": {
@@ -5,17 +5,29 @@ import {
5
5
  type TextStyle,
6
6
  } from 'react-native';
7
7
  import dayjs from 'dayjs';
8
- import { useState } from 'react';
8
+ import { useState, useRef, useImperativeHandle, forwardRef } from 'react';
9
9
  import type {
10
10
  CalendarEvent,
11
11
  WeekdayNum,
12
12
  WeekStartsOn,
13
13
  } from '../../types/month-calendar';
14
- import { MonthCalendarViewItem } from './view/MonthCalendarViewItem';
14
+ import {
15
+ MonthCalendarViewItem,
16
+ type MonthCalendarViewItemRef,
17
+ } from './view/MonthCalendarViewItem';
15
18
 
16
19
  const HALF_PANEL_LENGTH = 120; // 10 years
17
20
 
18
- export const MonthCalendar = (props: {
21
+ export interface MonthCalendarRef {
22
+ scrollMonthViewToOffset: (
23
+ monthKey: string,
24
+ offset: number,
25
+ animated?: boolean
26
+ ) => void;
27
+ getMonthRowHeight: (monthKey: string, date: Date) => number | undefined;
28
+ }
29
+
30
+ type MonthCalendarProps = {
19
31
  defaultDate: Date;
20
32
  weekStartsOn?: WeekStartsOn;
21
33
  onChangeDate?: (date: Date) => void;
@@ -42,95 +54,136 @@ export const MonthCalendar = (props: {
42
54
  eventHeight?: number;
43
55
  eventTextStyle?: (event: CalendarEvent) => TextStyle;
44
56
  eventEllipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
45
- }) => {
46
- const [dateState] = useState(props.defaultDate);
47
- const [_activeIndex, setActiveIndex] = useState(HALF_PANEL_LENGTH);
48
- const defaultDateDjs = dayjs(dateState);
49
- const startOfDefaultDateDjs = defaultDateDjs.startOf('month');
50
- const prevPanels: string[] = Array.from(
51
- { length: HALF_PANEL_LENGTH },
52
- (_, i) => {
53
- return startOfDefaultDateDjs
54
- .subtract(HALF_PANEL_LENGTH - i, 'month')
55
- .format('YYYY-MM');
56
- }
57
- );
58
- const nextPanels: string[] = Array.from(
59
- { length: HALF_PANEL_LENGTH },
60
- (_, i) => {
61
- return startOfDefaultDateDjs.add(i + 1, 'month').format('YYYY-MM');
62
- }
63
- );
64
- const panels: string[] = [
65
- ...prevPanels,
66
- startOfDefaultDateDjs.format('YYYY-MM'),
67
- ...nextPanels,
68
- ];
57
+ bottomSpacing?: number;
58
+ };
59
+
60
+ export const MonthCalendar = forwardRef<MonthCalendarRef, MonthCalendarProps>(
61
+ (props, ref) => {
62
+ const [dateState] = useState(props.defaultDate);
63
+ const [_activeIndex, setActiveIndex] = useState(HALF_PANEL_LENGTH);
64
+ const defaultDateDjs = dayjs(dateState);
65
+ const startOfDefaultDateDjs = defaultDateDjs.startOf('month');
66
+ const prevPanels: string[] = Array.from(
67
+ { length: HALF_PANEL_LENGTH },
68
+ (_, i) => {
69
+ return startOfDefaultDateDjs
70
+ .subtract(HALF_PANEL_LENGTH - i, 'month')
71
+ .format('YYYY-MM');
72
+ }
73
+ );
74
+ const nextPanels: string[] = Array.from(
75
+ { length: HALF_PANEL_LENGTH },
76
+ (_, i) => {
77
+ return startOfDefaultDateDjs.add(i + 1, 'month').format('YYYY-MM');
78
+ }
79
+ );
80
+ const panels: string[] = [
81
+ ...prevPanels,
82
+ startOfDefaultDateDjs.format('YYYY-MM'),
83
+ ...nextPanels,
84
+ ];
85
+
86
+ const { width } = useWindowDimensions();
69
87
 
70
- const { width } = useWindowDimensions();
88
+ const monthViewRefs = useRef<
89
+ Record<string, MonthCalendarViewItemRef | null>
90
+ >({});
71
91
 
72
- return (
73
- <FlatList
74
- horizontal
75
- pagingEnabled={true}
76
- getItemLayout={(_data, index) => {
77
- return {
78
- length: width,
79
- offset: width * index,
80
- index,
81
- };
82
- }}
83
- onMomentumScrollEnd={(e) => {
84
- const scrollX = e.nativeEvent.contentOffset.x;
85
- const newIndex = Math.round(scrollX / width);
86
- const month = panels[newIndex];
87
- if (month) {
88
- const newDate = new Date(month);
89
- props.onChangeDate?.(newDate);
92
+ useImperativeHandle(ref, () => ({
93
+ scrollMonthViewToOffset: (
94
+ monthKey: string,
95
+ offset: number,
96
+ animated = true
97
+ ) => {
98
+ const targetRef = monthViewRefs.current[monthKey];
99
+
100
+ if (targetRef) {
101
+ targetRef.scrollTo({ y: offset, animated });
102
+ } else {
103
+ console.warn(`Month view for ${monthKey} is not currently rendered.`);
90
104
  }
91
- setActiveIndex(newIndex);
92
- }}
93
- initialScrollIndex={HALF_PANEL_LENGTH}
94
- decelerationRate={'fast'}
95
- data={panels}
96
- renderItem={({ item, index }) => {
97
- return (
98
- <MonthCalendarViewItem
99
- month={item}
100
- weekStartsOn={props.weekStartsOn ?? 0}
101
- events={props.events}
102
- onPressEvent={props.onPressEvent}
103
- onLongPressEvent={props.onLongPressEvent}
104
- delayLongPressEvent={props.delayLongPressEvent}
105
- onPressCell={props.onPressCell}
106
- onLongPressCell={props.onLongPressCell}
107
- delayLongPressCell={props.delayLongPressCell}
108
- flatListIndex={index}
109
- onRefresh={props.onRefresh}
110
- refreshing={props.refreshing}
111
- dayCellContainerStyle={props.dayCellContainerStyle}
112
- dayCellTextStyle={props.dayCellTextStyle}
113
- locale={props.locale}
114
- weekdayCellContainerStyle={props.weekdayCellContainerStyle}
115
- weekdayCellTextStyle={props.weekdayCellTextStyle}
116
- todayCellTextStyle={props.todayCellTextStyle}
117
- hiddenMonth={props.hiddenMonth}
118
- monthFormat={props.monthFormat}
119
- stickyHeaderEnabled={props.stickyHeaderEnabled}
120
- cellBorderColor={props.cellBorderColor}
121
- allowFontScaling={props.allowFontScaling}
122
- eventHeight={props.eventHeight}
123
- eventTextStyle={props.eventTextStyle}
124
- eventEllipsizeMode={props.eventEllipsizeMode}
125
- />
126
- );
127
- }}
128
- showsHorizontalScrollIndicator={false}
129
- scrollEnabled={true}
130
- windowSize={5}
131
- initialNumToRender={5}
132
- maxToRenderPerBatch={5}
133
- removeClippedSubviews={false}
134
- />
135
- );
136
- };
105
+ },
106
+ getMonthRowHeight: (monthKey: string, date: Date) => {
107
+ const targetRef = monthViewRefs.current[monthKey];
108
+
109
+ if (targetRef) {
110
+ return targetRef.getRowHeight(date);
111
+ }
112
+ return undefined;
113
+ },
114
+ }));
115
+
116
+ return (
117
+ <FlatList
118
+ horizontal
119
+ pagingEnabled={true}
120
+ getItemLayout={(_data, index) => {
121
+ return {
122
+ length: width,
123
+ offset: width * index,
124
+ index,
125
+ };
126
+ }}
127
+ onMomentumScrollEnd={(e) => {
128
+ const scrollX = e.nativeEvent.contentOffset.x;
129
+ const newIndex = Math.round(scrollX / width);
130
+ const month = panels[newIndex];
131
+ if (month) {
132
+ const newDate = new Date(month);
133
+ props.onChangeDate?.(newDate);
134
+ }
135
+ setActiveIndex(newIndex);
136
+ }}
137
+ initialScrollIndex={HALF_PANEL_LENGTH}
138
+ decelerationRate={'fast'}
139
+ data={panels}
140
+ renderItem={({ item, index }) => {
141
+ return (
142
+ <MonthCalendarViewItem
143
+ ref={(r) => {
144
+ if (r) {
145
+ monthViewRefs.current[item] = r;
146
+ } else {
147
+ delete monthViewRefs.current[item];
148
+ }
149
+ }}
150
+ month={item}
151
+ weekStartsOn={props.weekStartsOn ?? 0}
152
+ events={props.events}
153
+ onPressEvent={props.onPressEvent}
154
+ onLongPressEvent={props.onLongPressEvent}
155
+ delayLongPressEvent={props.delayLongPressEvent}
156
+ onPressCell={props.onPressCell}
157
+ onLongPressCell={props.onLongPressCell}
158
+ delayLongPressCell={props.delayLongPressCell}
159
+ flatListIndex={index}
160
+ onRefresh={props.onRefresh}
161
+ refreshing={props.refreshing}
162
+ dayCellContainerStyle={props.dayCellContainerStyle}
163
+ dayCellTextStyle={props.dayCellTextStyle}
164
+ locale={props.locale}
165
+ weekdayCellContainerStyle={props.weekdayCellContainerStyle}
166
+ weekdayCellTextStyle={props.weekdayCellTextStyle}
167
+ todayCellTextStyle={props.todayCellTextStyle}
168
+ hiddenMonth={props.hiddenMonth}
169
+ monthFormat={props.monthFormat}
170
+ stickyHeaderEnabled={props.stickyHeaderEnabled}
171
+ cellBorderColor={props.cellBorderColor}
172
+ allowFontScaling={props.allowFontScaling}
173
+ eventHeight={props.eventHeight}
174
+ eventTextStyle={props.eventTextStyle}
175
+ eventEllipsizeMode={props.eventEllipsizeMode}
176
+ bottomSpacing={props.bottomSpacing}
177
+ />
178
+ );
179
+ }}
180
+ showsHorizontalScrollIndicator={false}
181
+ scrollEnabled={true}
182
+ windowSize={5}
183
+ initialNumToRender={5}
184
+ maxToRenderPerBatch={5}
185
+ removeClippedSubviews={false}
186
+ />
187
+ );
188
+ }
189
+ );
@@ -20,10 +20,23 @@ import { monthlyEndDate, monthlyStartDate } from '../../../utils/functions';
20
20
  import { useEvents } from '../logic/useEvents';
21
21
  import { CELL_BORDER_WIDTH } from '../../../constants/size';
22
22
  import { RefreshControl } from 'react-native';
23
- import { useCallback, useMemo, useState } from 'react';
23
+ import {
24
+ useCallback,
25
+ useMemo,
26
+ useState,
27
+ forwardRef,
28
+ useImperativeHandle,
29
+ useRef,
30
+ } from 'react';
24
31
  import { MonthCalendarWeekDayRow } from './MonthCalendarWeekDayRow';
25
32
 
26
- export const MonthCalendarViewItem = (props: {
33
+ export interface MonthCalendarViewItemRef {
34
+ scrollTo: (options: { x?: number; y?: number; animated?: boolean }) => void;
35
+ scrollToEnd: (options?: { animated?: boolean }) => void;
36
+ getRowHeight: (date: Date) => number | undefined;
37
+ }
38
+
39
+ type MonthCalendarViewItemProps = {
27
40
  month: string;
28
41
  weekStartsOn: WeekStartsOn;
29
42
  events: CalendarEvent[];
@@ -50,7 +63,13 @@ export const MonthCalendarViewItem = (props: {
50
63
  eventHeight?: number;
51
64
  eventTextStyle?: (event: CalendarEvent) => TextStyle;
52
65
  eventEllipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
53
- }) => {
66
+ bottomSpacing?: number;
67
+ };
68
+
69
+ export const MonthCalendarViewItem = forwardRef<
70
+ MonthCalendarViewItemRef,
71
+ MonthCalendarViewItemProps
72
+ >((props, ref) => {
54
73
  const { width } = useWindowDimensions();
55
74
  const eventPosition = new MonthCalendarEventPosition();
56
75
  const date = new Date(props.month);
@@ -99,8 +118,35 @@ export const MonthCalendarViewItem = (props: {
99
118
  return props.stickyHeaderEnabled ? [0] : [];
100
119
  }, [props.stickyHeaderEnabled]);
101
120
 
121
+ const scrollViewRef = useRef<any>(null);
122
+
123
+ const weekHeights = useRef(new Map<string, number>());
124
+
125
+ useImperativeHandle(ref, () => ({
126
+ scrollTo: (options) => {
127
+ scrollViewRef.current?.scrollTo(options);
128
+ },
129
+ scrollToEnd: (options) => {
130
+ scrollViewRef.current?.scrollToEnd(options);
131
+ },
132
+ getRowHeight: (targetDate: Date) => {
133
+ const targetDjs = dayjs(targetDate);
134
+
135
+ const foundWeek = weeks.find((week) =>
136
+ week.some((day) => day.isSame(targetDjs, 'day'))
137
+ );
138
+
139
+ if (foundWeek && foundWeek[0]) {
140
+ const weekId = foundWeek[0].format('YYYY-MM-DD');
141
+ return weekHeights.current.get(weekId);
142
+ }
143
+ return undefined;
144
+ },
145
+ }));
146
+
102
147
  return (
103
148
  <ScrollView
149
+ ref={scrollViewRef}
104
150
  style={[
105
151
  styles.container,
106
152
  {
@@ -182,13 +228,17 @@ export const MonthCalendarViewItem = (props: {
182
228
  eventHeight={props.eventHeight}
183
229
  eventTextStyle={props.eventTextStyle}
184
230
  eventEllipsizeMode={props.eventEllipsizeMode}
231
+ onLayout={(e) => {
232
+ weekHeights.current.set(weekId, e.nativeEvent.layout.height);
233
+ }}
185
234
  />
186
235
  );
187
236
  })}
188
237
  </View>
238
+ <View style={{ height: props.bottomSpacing }} />
189
239
  </ScrollView>
190
240
  );
191
- };
241
+ });
192
242
 
193
243
  const styles = StyleSheet.create({
194
244
  container: {
@@ -1,5 +1,9 @@
1
1
  import dayjs from 'dayjs';
2
- import { StyleSheet, useWindowDimensions } from 'react-native';
2
+ import {
3
+ StyleSheet,
4
+ useWindowDimensions,
5
+ type LayoutChangeEvent,
6
+ } from 'react-native';
3
7
  import { Text, TouchableOpacity, View, type ViewStyle } from 'react-native';
4
8
  import type { CalendarEvent, WeekdayNum } from '../../../types/month-calendar';
5
9
  import type MonthCalendarEventPosition from '../../../utils/month-calendar-event-position';
@@ -27,6 +31,7 @@ export const MonthCalendarWeekRow = (props: {
27
31
  eventHeight?: number;
28
32
  eventTextStyle?: (event: CalendarEvent) => TextStyle;
29
33
  eventEllipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
34
+ onLayout?: (event: LayoutChangeEvent) => void;
30
35
  }) => {
31
36
  const eventHeight = props.eventHeight || 26;
32
37
  const { width: screenWidth } = useWindowDimensions();
@@ -37,7 +42,7 @@ export const MonthCalendarWeekRow = (props: {
37
42
  }
38
43
 
39
44
  return (
40
- <View style={styles.container}>
45
+ <View style={styles.container} onLayout={props.onLayout}>
41
46
  {props.dates.map((djs, dateIndex) => {
42
47
  const text = djs.format('D');
43
48
  const filteredEvents = props.events