@sunsama/event-calendar 0.5.2 → 0.5.4

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 (48) hide show
  1. package/README.md +3 -3
  2. package/lib/commonjs/components/all-day-events.js +1 -3
  3. package/lib/commonjs/components/all-day-events.js.map +1 -1
  4. package/lib/commonjs/components/drag-bar.js +42 -30
  5. package/lib/commonjs/components/drag-bar.js.map +1 -1
  6. package/lib/commonjs/components/edit-event-container.js +15 -6
  7. package/lib/commonjs/components/edit-event-container.js.map +1 -1
  8. package/lib/commonjs/components/timed-event-container.js +5 -2
  9. package/lib/commonjs/components/timed-event-container.js.map +1 -1
  10. package/lib/commonjs/index.js +7 -2
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/utils/globals.js +2 -1
  13. package/lib/commonjs/utils/globals.js.map +1 -1
  14. package/lib/module/components/all-day-events.js +1 -3
  15. package/lib/module/components/all-day-events.js.map +1 -1
  16. package/lib/module/components/drag-bar.js +42 -30
  17. package/lib/module/components/drag-bar.js.map +1 -1
  18. package/lib/module/components/edit-event-container.js +16 -7
  19. package/lib/module/components/edit-event-container.js.map +1 -1
  20. package/lib/module/components/timed-event-container.js +6 -3
  21. package/lib/module/components/timed-event-container.js.map +1 -1
  22. package/lib/module/index.js +8 -3
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/utils/globals.js +1 -0
  25. package/lib/module/utils/globals.js.map +1 -1
  26. package/lib/typescript/commonjs/components/all-day-events.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/components/drag-bar.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/components/edit-event-container.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/components/timed-event-container.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/index.d.ts +1 -1
  31. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/utils/globals.d.ts +1 -0
  33. package/lib/typescript/commonjs/utils/globals.d.ts.map +1 -1
  34. package/lib/typescript/module/components/all-day-events.d.ts.map +1 -1
  35. package/lib/typescript/module/components/drag-bar.d.ts.map +1 -1
  36. package/lib/typescript/module/components/edit-event-container.d.ts.map +1 -1
  37. package/lib/typescript/module/components/timed-event-container.d.ts.map +1 -1
  38. package/lib/typescript/module/index.d.ts +1 -1
  39. package/lib/typescript/module/index.d.ts.map +1 -1
  40. package/lib/typescript/module/utils/globals.d.ts +1 -0
  41. package/lib/typescript/module/utils/globals.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/components/all-day-events.tsx +0 -2
  44. package/src/components/drag-bar.tsx +96 -53
  45. package/src/components/edit-event-container.tsx +22 -8
  46. package/src/components/timed-event-container.tsx +7 -3
  47. package/src/index.tsx +11 -3
  48. package/src/utils/globals.ts +1 -0
@@ -4,7 +4,7 @@ import Animated, {
4
4
  useAnimatedStyle,
5
5
  useSharedValue,
6
6
  } from "react-native-reanimated";
7
- import { ConfigProvider } from "../utils/globals";
7
+ import { ConfigProvider, MIN_EVENT_HEIGHT_PX } from "../utils/globals";
8
8
  import { RefObject, useCallback, useContext, useMemo } from "react";
9
9
  import { Gesture, GestureDetector } from "react-native-gesture-handler";
10
10
  import { StyleSheet, View } from "react-native";
@@ -74,9 +74,13 @@ const TimedEventContainer = <T extends CalendarEvent>({
74
74
  useAnimatedReaction(
75
75
  () => zoomLevel.value,
76
76
  (newZoomLevel) => {
77
- height.value = newZoomLevel * layout.position.height;
77
+ const start = new Date(layout.event.start);
78
+ const end = new Date(layout.event.end);
79
+ const diff = (end.valueOf() - start.valueOf()) / 60_000;
80
+
81
+ height.value = Math.max(MIN_EVENT_HEIGHT_PX, newZoomLevel * diff);
78
82
  },
79
- [layout.position.height]
83
+ [layout.event]
80
84
  );
81
85
 
82
86
  useAnimatedReaction(
package/src/index.tsx CHANGED
@@ -17,6 +17,7 @@ import moment, { type Moment } from "moment-timezone";
17
17
  import React, {
18
18
  forwardRef,
19
19
  type Ref,
20
+ useCallback,
20
21
  useImperativeHandle,
21
22
  useMemo,
22
23
  useRef,
@@ -25,6 +26,7 @@ import { GestureRef } from "react-native-gesture-handler/lib/typescript/handlers
25
26
  import { IsEditingProvider } from "./hooks/use-is-editing";
26
27
  import { EventsProvider, useEvents } from "./hooks/use-events";
27
28
  import type { CalendarEvent, Config, onCreateEvent, ThemeStyle } from "./types";
29
+ import { LayoutChangeEvent } from "react-native/Libraries/Types/CoreEventTypes";
28
30
 
29
31
  export * from "./types";
30
32
 
@@ -81,7 +83,7 @@ type EventCalenderContentProps<T extends CalendarEvent> = {
81
83
  };
82
84
 
83
85
  export type EventCalendarMethods = {
84
- scrollToTime: (minutes: number, animated?: boolean) => void;
86
+ scrollToTime: (minutes: number, animated?: boolean, offset?: number) => void;
85
87
  };
86
88
 
87
89
  function EventCalendarContentInner<T extends CalendarEvent>(
@@ -117,13 +119,18 @@ function EventCalendarContentInner<T extends CalendarEvent>(
117
119
 
118
120
  const refNewEvent = useRef<GestureRef>(null);
119
121
  const refScrollView = useRef<ScrollView>(null);
122
+ const refScrollViewHeight = useRef<number>(0);
123
+
124
+ const onLayoutScrollView = useCallback((event: LayoutChangeEvent) => {
125
+ refScrollViewHeight.current = event.nativeEvent.layout.height;
126
+ }, []);
120
127
 
121
128
  useImperativeHandle(
122
129
  refMethods,
123
130
  () => ({
124
- scrollToTime: (time: number, animated = true) => {
131
+ scrollToTime: (time: number, animated = true, offset = 2.5) => {
125
132
  refScrollView.current?.scrollTo({
126
- y: time * zoomLevel.value,
133
+ y: time * zoomLevel.value - refScrollViewHeight.current / offset,
127
134
  animated,
128
135
  });
129
136
  },
@@ -167,6 +174,7 @@ function EventCalendarContentInner<T extends CalendarEvent>(
167
174
  >
168
175
  <AllDayEvents />
169
176
  <ScrollView
177
+ onLayout={onLayoutScrollView}
170
178
  bounces={false}
171
179
  keyboardShouldPersistTaps="always"
172
180
  style={[styles.scrollView, theme?.scrollView]}
@@ -11,3 +11,4 @@ export const DEFAULT_TIME_FORMAT = "HH:mm";
11
11
  export const DEFAULT_TIMEZONE = "UTC";
12
12
 
13
13
  export const TOP_MARGIN_PIXEL_OFFSET = 5;
14
+ export const MIN_EVENT_HEIGHT_PX = 24;