@dreamstack-us/kaal 0.0.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/module/components/CalendarGrid/CalendarGrid.js +112 -0
- package/lib/module/components/CalendarGrid/CalendarGrid.js.map +1 -0
- package/lib/module/components/CalendarGrid/CalendarGrid.styles.js +46 -0
- package/lib/module/components/CalendarGrid/CalendarGrid.styles.js.map +1 -0
- package/lib/module/components/CalendarGrid/DayCell.js +96 -0
- package/lib/module/components/CalendarGrid/DayCell.js.map +1 -0
- package/lib/module/components/CalendarGrid/index.js +4 -0
- package/lib/module/components/CalendarGrid/index.js.map +1 -0
- package/lib/module/components/DatePicker/DatePicker.android.js +66 -0
- package/lib/module/components/DatePicker/DatePicker.android.js.map +1 -0
- package/lib/module/components/DatePicker/DatePicker.ios.js +74 -0
- package/lib/module/components/DatePicker/DatePicker.ios.js.map +1 -0
- package/lib/module/components/DatePicker/DatePicker.js +9 -0
- package/lib/module/components/DatePicker/DatePicker.js.map +1 -0
- package/lib/module/components/DatePicker/DatePicker.styles.js +35 -0
- package/lib/module/components/DatePicker/DatePicker.styles.js.map +1 -0
- package/lib/module/components/DatePicker/DatePicker.web.js +32 -0
- package/lib/module/components/DatePicker/DatePicker.web.js.map +1 -0
- package/lib/module/components/DatePicker/index.js +4 -0
- package/lib/module/components/DatePicker/index.js.map +1 -0
- package/lib/module/components/TimePicker/ClockFace.js +194 -0
- package/lib/module/components/TimePicker/ClockFace.js.map +1 -0
- package/lib/module/components/TimePicker/MaterialTimePicker.js +122 -0
- package/lib/module/components/TimePicker/MaterialTimePicker.js.map +1 -0
- package/lib/module/components/TimePicker/TimePicker.android.js +77 -0
- package/lib/module/components/TimePicker/TimePicker.android.js.map +1 -0
- package/lib/module/components/TimePicker/TimePicker.ios.js +83 -0
- package/lib/module/components/TimePicker/TimePicker.ios.js.map +1 -0
- package/lib/module/components/TimePicker/TimePicker.js +34 -0
- package/lib/module/components/TimePicker/TimePicker.js.map +1 -0
- package/lib/module/components/TimePicker/TimePicker.styles.js +180 -0
- package/lib/module/components/TimePicker/TimePicker.styles.js.map +1 -0
- package/lib/module/components/TimePicker/TimePicker.web.js +37 -0
- package/lib/module/components/TimePicker/TimePicker.web.js.map +1 -0
- package/lib/module/components/TimePicker/TimeWheelPicker.js +178 -0
- package/lib/module/components/TimePicker/TimeWheelPicker.js.map +1 -0
- package/lib/module/components/TimePicker/index.js +7 -0
- package/lib/module/components/TimePicker/index.js.map +1 -0
- package/lib/module/components/WheelPicker/WheelPicker.js +5 -0
- package/lib/module/components/WheelPicker/WheelPicker.js.map +1 -0
- package/lib/module/components/WheelPicker/WheelPicker.styles.js +41 -0
- package/lib/module/components/WheelPicker/WheelPicker.styles.js.map +1 -0
- package/lib/module/components/WheelPicker/WheelPicker.web.js +190 -0
- package/lib/module/components/WheelPicker/WheelPicker.web.js.map +1 -0
- package/lib/module/components/WheelPicker/index.js +4 -0
- package/lib/module/components/WheelPicker/index.js.map +1 -0
- package/lib/module/components/index.js +7 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/hooks/index.js +6 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useCalendar.js +44 -0
- package/lib/module/hooks/useCalendar.js.map +1 -0
- package/lib/module/hooks/useDatePicker.js +30 -0
- package/lib/module/hooks/useDatePicker.js.map +1 -0
- package/lib/module/hooks/useTimePicker.js +125 -0
- package/lib/module/hooks/useTimePicker.js.map +1 -0
- package/lib/module/index.js +22 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types/datepicker.js +2 -0
- package/lib/module/types/datepicker.js.map +1 -0
- package/lib/module/types/index.js +5 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/timepicker.js +2 -0
- package/lib/module/types/timepicker.js.map +1 -0
- package/lib/module/unistyles.js +9 -0
- package/lib/module/unistyles.js.map +1 -0
- package/lib/module/utils/date.js +205 -0
- package/lib/module/utils/date.js.map +1 -0
- package/lib/module/utils/index.js +5 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/validation.js +61 -0
- package/lib/module/utils/validation.js.map +1 -0
- package/lib/typescript/components/CalendarGrid/CalendarGrid.d.ts +12 -0
- package/lib/typescript/components/CalendarGrid/CalendarGrid.d.ts.map +1 -0
- package/lib/typescript/components/CalendarGrid/CalendarGrid.styles.d.ts +45 -0
- package/lib/typescript/components/CalendarGrid/CalendarGrid.styles.d.ts.map +1 -0
- package/lib/typescript/components/CalendarGrid/DayCell.d.ts +12 -0
- package/lib/typescript/components/CalendarGrid/DayCell.d.ts.map +1 -0
- package/lib/typescript/components/CalendarGrid/index.d.ts +2 -0
- package/lib/typescript/components/CalendarGrid/index.d.ts.map +1 -0
- package/lib/typescript/components/DatePicker/DatePicker.android.d.ts +4 -0
- package/lib/typescript/components/DatePicker/DatePicker.android.d.ts.map +1 -0
- package/lib/typescript/components/DatePicker/DatePicker.d.ts +15 -0
- package/lib/typescript/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/lib/typescript/components/DatePicker/DatePicker.ios.d.ts +4 -0
- package/lib/typescript/components/DatePicker/DatePicker.ios.d.ts.map +1 -0
- package/lib/typescript/components/DatePicker/DatePicker.styles.d.ts +29 -0
- package/lib/typescript/components/DatePicker/DatePicker.styles.d.ts.map +1 -0
- package/lib/typescript/components/DatePicker/DatePicker.web.d.ts +4 -0
- package/lib/typescript/components/DatePicker/DatePicker.web.d.ts.map +1 -0
- package/lib/typescript/components/DatePicker/index.d.ts +3 -0
- package/lib/typescript/components/DatePicker/index.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/ClockFace.d.ts +12 -0
- package/lib/typescript/components/TimePicker/ClockFace.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/MaterialTimePicker.d.ts +12 -0
- package/lib/typescript/components/TimePicker/MaterialTimePicker.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/TimePicker.android.d.ts +4 -0
- package/lib/typescript/components/TimePicker/TimePicker.android.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/TimePicker.d.ts +29 -0
- package/lib/typescript/components/TimePicker/TimePicker.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/TimePicker.ios.d.ts +4 -0
- package/lib/typescript/components/TimePicker/TimePicker.ios.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/TimePicker.styles.d.ts +168 -0
- package/lib/typescript/components/TimePicker/TimePicker.styles.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/TimePicker.web.d.ts +10 -0
- package/lib/typescript/components/TimePicker/TimePicker.web.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/TimeWheelPicker.d.ts +11 -0
- package/lib/typescript/components/TimePicker/TimeWheelPicker.d.ts.map +1 -0
- package/lib/typescript/components/TimePicker/index.d.ts +6 -0
- package/lib/typescript/components/TimePicker/index.d.ts.map +1 -0
- package/lib/typescript/components/WheelPicker/WheelPicker.d.ts +2 -0
- package/lib/typescript/components/WheelPicker/WheelPicker.d.ts.map +1 -0
- package/lib/typescript/components/WheelPicker/WheelPicker.styles.d.ts +40 -0
- package/lib/typescript/components/WheelPicker/WheelPicker.styles.d.ts.map +1 -0
- package/lib/typescript/components/WheelPicker/WheelPicker.web.d.ts +10 -0
- package/lib/typescript/components/WheelPicker/WheelPicker.web.d.ts.map +1 -0
- package/lib/typescript/components/WheelPicker/index.d.ts +2 -0
- package/lib/typescript/components/WheelPicker/index.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +5 -0
- package/lib/typescript/components/index.d.ts.map +1 -0
- package/lib/typescript/hooks/index.d.ts +4 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -0
- package/lib/typescript/hooks/useCalendar.d.ts +10 -0
- package/lib/typescript/hooks/useCalendar.d.ts.map +1 -0
- package/lib/typescript/hooks/useDatePicker.d.ts +15 -0
- package/lib/typescript/hooks/useDatePicker.d.ts.map +1 -0
- package/lib/typescript/hooks/useTimePicker.d.ts +52 -0
- package/lib/typescript/hooks/useTimePicker.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +12 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/types/datepicker.d.ts +15 -0
- package/lib/typescript/types/datepicker.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +3 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/types/timepicker.d.ts +54 -0
- package/lib/typescript/types/timepicker.d.ts.map +1 -0
- package/lib/typescript/unistyles.d.ts +3 -0
- package/lib/typescript/unistyles.d.ts.map +1 -0
- package/lib/typescript/utils/date.d.ts +94 -0
- package/lib/typescript/utils/date.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +3 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/lib/typescript/utils/validation.d.ts +40 -0
- package/lib/typescript/utils/validation.d.ts.map +1 -0
- package/package.json +101 -0
- package/src/components/CalendarGrid/CalendarGrid.styles.ts +44 -0
- package/src/components/CalendarGrid/CalendarGrid.tsx +151 -0
- package/src/components/CalendarGrid/DayCell.tsx +108 -0
- package/src/components/CalendarGrid/index.ts +1 -0
- package/src/components/DatePicker/DatePicker.android.tsx +69 -0
- package/src/components/DatePicker/DatePicker.ios.tsx +78 -0
- package/src/components/DatePicker/DatePicker.styles.ts +35 -0
- package/src/components/DatePicker/DatePicker.tsx +21 -0
- package/src/components/DatePicker/DatePicker.web.tsx +36 -0
- package/src/components/DatePicker/index.ts +2 -0
- package/src/components/TimePicker/ClockFace.tsx +233 -0
- package/src/components/TimePicker/MaterialTimePicker.tsx +169 -0
- package/src/components/TimePicker/TimePicker.android.tsx +80 -0
- package/src/components/TimePicker/TimePicker.ios.tsx +88 -0
- package/src/components/TimePicker/TimePicker.styles.ts +209 -0
- package/src/components/TimePicker/TimePicker.tsx +35 -0
- package/src/components/TimePicker/TimePicker.web.tsx +35 -0
- package/src/components/TimePicker/TimeWheelPicker.tsx +211 -0
- package/src/components/TimePicker/index.ts +5 -0
- package/src/components/WheelPicker/WheelPicker.styles.ts +39 -0
- package/src/components/WheelPicker/WheelPicker.tsx +2 -0
- package/src/components/WheelPicker/WheelPicker.web.tsx +237 -0
- package/src/components/WheelPicker/index.ts +1 -0
- package/src/components/index.ts +11 -0
- package/src/hooks/index.ts +9 -0
- package/src/hooks/useCalendar.ts +59 -0
- package/src/hooks/useDatePicker.ts +40 -0
- package/src/hooks/useTimePicker.ts +152 -0
- package/src/index.ts +77 -0
- package/src/types/datepicker.ts +17 -0
- package/src/types/index.ts +2 -0
- package/src/types/timepicker.ts +59 -0
- package/src/unistyles.ts +6 -0
- package/src/utils/date.ts +217 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/validation.ts +76 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useMemo } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
6
|
+
import { runOnJS } from 'react-native-reanimated';
|
|
7
|
+
import Svg, { Circle, G, Line, Text as SvgText } from 'react-native-svg';
|
|
8
|
+
import { to12Hour, to24Hour } from "../../hooks/useTimePicker.js";
|
|
9
|
+
import { styles } from "./TimePicker.styles.js";
|
|
10
|
+
|
|
11
|
+
// Clock dimensions
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
const CLOCK_SIZE = 256;
|
|
14
|
+
const CLOCK_CENTER = CLOCK_SIZE / 2;
|
|
15
|
+
const OUTER_RADIUS = 96;
|
|
16
|
+
const SELECTION_DOT_RADIUS = 20;
|
|
17
|
+
const CENTER_DOT_RADIUS = 4;
|
|
18
|
+
|
|
19
|
+
// Hour positions (12 at top, clockwise)
|
|
20
|
+
const HOURS_12 = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
21
|
+
const MINUTE_LABELS = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Converts clock position (0-11 for hours, 0-59 for minutes) to angle in degrees
|
|
25
|
+
* 12 o'clock is at -90 degrees (top)
|
|
26
|
+
*/
|
|
27
|
+
const positionToAngle = (position, isMinutes = false) => {
|
|
28
|
+
if (isMinutes) {
|
|
29
|
+
return position * 6 - 90; // 360/60 = 6 degrees per minute
|
|
30
|
+
}
|
|
31
|
+
return position * 30 - 90; // 360/12 = 30 degrees per position
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Gets x,y coordinates on circle from angle and radius
|
|
36
|
+
*/
|
|
37
|
+
const getPointOnCircle = (angleDegrees, radius) => {
|
|
38
|
+
const rad = angleDegrees * Math.PI / 180;
|
|
39
|
+
return {
|
|
40
|
+
x: CLOCK_CENTER + radius * Math.cos(rad),
|
|
41
|
+
y: CLOCK_CENTER + radius * Math.sin(rad)
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export const ClockFace = /*#__PURE__*/memo(({
|
|
45
|
+
value,
|
|
46
|
+
onChange,
|
|
47
|
+
mode,
|
|
48
|
+
onModeChange,
|
|
49
|
+
is24Hour = false
|
|
50
|
+
}) => {
|
|
51
|
+
const {
|
|
52
|
+
hour: hour12,
|
|
53
|
+
period
|
|
54
|
+
} = to12Hour(value.hours);
|
|
55
|
+
|
|
56
|
+
// Calculate hand end position based on current value
|
|
57
|
+
const handAngle = useMemo(() => {
|
|
58
|
+
if (mode === 'hours') {
|
|
59
|
+
const hourIndex = HOURS_12.indexOf(hour12);
|
|
60
|
+
return positionToAngle(hourIndex >= 0 ? hourIndex : 0);
|
|
61
|
+
}
|
|
62
|
+
return positionToAngle(value.minutes, true);
|
|
63
|
+
}, [mode, hour12, value.minutes]);
|
|
64
|
+
const handEndPos = getPointOnCircle(handAngle, OUTER_RADIUS);
|
|
65
|
+
const handleInteraction = useCallback((x, y) => {
|
|
66
|
+
// Convert touch coordinates to angle
|
|
67
|
+
const dx = x - CLOCK_CENTER;
|
|
68
|
+
const dy = y - CLOCK_CENTER;
|
|
69
|
+
const angle = Math.atan2(dy, dx) * (180 / Math.PI);
|
|
70
|
+
|
|
71
|
+
// Normalize angle to 0-360, with 0 at top (12 o'clock)
|
|
72
|
+
const normalized = ((angle + 90) % 360 + 360) % 360;
|
|
73
|
+
if (mode === 'hours') {
|
|
74
|
+
// Round to nearest hour position
|
|
75
|
+
const position = Math.round(normalized / 30) % 12;
|
|
76
|
+
const hour = HOURS_12[position];
|
|
77
|
+
if (hour !== undefined) {
|
|
78
|
+
const newHours = to24Hour(hour, period);
|
|
79
|
+
onChange({
|
|
80
|
+
hours: newHours,
|
|
81
|
+
minutes: value.minutes
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
// Round to nearest minute
|
|
86
|
+
const minutes = Math.round(normalized / 6) % 60;
|
|
87
|
+
onChange({
|
|
88
|
+
hours: value.hours,
|
|
89
|
+
minutes
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}, [mode, period, value, onChange]);
|
|
93
|
+
const handleInteractionEnd = useCallback(() => {
|
|
94
|
+
// Switch to minutes mode after selecting hours
|
|
95
|
+
if (mode === 'hours' && onModeChange) {
|
|
96
|
+
// Small delay for visual feedback
|
|
97
|
+
setTimeout(() => onModeChange('minutes'), 200);
|
|
98
|
+
}
|
|
99
|
+
}, [mode, onModeChange]);
|
|
100
|
+
const panGesture = useMemo(() => Gesture.Pan().onStart(e => {
|
|
101
|
+
'worklet';
|
|
102
|
+
|
|
103
|
+
runOnJS(handleInteraction)(e.x, e.y);
|
|
104
|
+
}).onUpdate(e => {
|
|
105
|
+
'worklet';
|
|
106
|
+
|
|
107
|
+
runOnJS(handleInteraction)(e.x, e.y);
|
|
108
|
+
}).onEnd(() => {
|
|
109
|
+
'worklet';
|
|
110
|
+
|
|
111
|
+
runOnJS(handleInteractionEnd)();
|
|
112
|
+
}), [handleInteraction, handleInteractionEnd]);
|
|
113
|
+
const tapGesture = useMemo(() => Gesture.Tap().onEnd(e => {
|
|
114
|
+
'worklet';
|
|
115
|
+
|
|
116
|
+
runOnJS(handleInteraction)(e.x, e.y);
|
|
117
|
+
runOnJS(handleInteractionEnd)();
|
|
118
|
+
}), [handleInteraction, handleInteractionEnd]);
|
|
119
|
+
const combinedGesture = Gesture.Race(panGesture, tapGesture);
|
|
120
|
+
|
|
121
|
+
// Render clock numbers
|
|
122
|
+
const numbers = useMemo(() => {
|
|
123
|
+
if (mode === 'hours') {
|
|
124
|
+
return HOURS_12.map((hour, index) => {
|
|
125
|
+
const angle = positionToAngle(index);
|
|
126
|
+
const pos = getPointOnCircle(angle, OUTER_RADIUS);
|
|
127
|
+
const isSelected = hour12 === hour;
|
|
128
|
+
return /*#__PURE__*/_jsx(SvgText, {
|
|
129
|
+
x: pos.x,
|
|
130
|
+
y: pos.y,
|
|
131
|
+
textAnchor: "middle",
|
|
132
|
+
alignmentBaseline: "central",
|
|
133
|
+
fontSize: 14,
|
|
134
|
+
fontWeight: isSelected ? '500' : '400',
|
|
135
|
+
fill: isSelected ? '#FFFFFF' : '#E6E1E5',
|
|
136
|
+
children: hour
|
|
137
|
+
}, hour);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return MINUTE_LABELS.map((minute, index) => {
|
|
141
|
+
const angle = positionToAngle(index);
|
|
142
|
+
const pos = getPointOnCircle(angle, OUTER_RADIUS);
|
|
143
|
+
const isSelected = value.minutes === minute;
|
|
144
|
+
return /*#__PURE__*/_jsx(SvgText, {
|
|
145
|
+
x: pos.x,
|
|
146
|
+
y: pos.y,
|
|
147
|
+
textAnchor: "middle",
|
|
148
|
+
alignmentBaseline: "central",
|
|
149
|
+
fontSize: 14,
|
|
150
|
+
fontWeight: isSelected ? '500' : '400',
|
|
151
|
+
fill: isSelected ? '#FFFFFF' : '#E6E1E5',
|
|
152
|
+
children: minute.toString().padStart(2, '0')
|
|
153
|
+
}, minute);
|
|
154
|
+
});
|
|
155
|
+
}, [mode, hour12, value.minutes]);
|
|
156
|
+
return /*#__PURE__*/_jsx(View, {
|
|
157
|
+
style: styles.clockContainer,
|
|
158
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
159
|
+
gesture: combinedGesture,
|
|
160
|
+
children: /*#__PURE__*/_jsxs(Svg, {
|
|
161
|
+
width: CLOCK_SIZE,
|
|
162
|
+
height: CLOCK_SIZE,
|
|
163
|
+
viewBox: `0 0 ${CLOCK_SIZE} ${CLOCK_SIZE}`,
|
|
164
|
+
children: [/*#__PURE__*/_jsx(Circle, {
|
|
165
|
+
cx: CLOCK_CENTER,
|
|
166
|
+
cy: CLOCK_CENTER,
|
|
167
|
+
r: CLOCK_SIZE / 2 - 4,
|
|
168
|
+
fill: "#3F384C"
|
|
169
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
170
|
+
cx: handEndPos.x,
|
|
171
|
+
cy: handEndPos.y,
|
|
172
|
+
r: SELECTION_DOT_RADIUS,
|
|
173
|
+
fill: "#4DA6FF"
|
|
174
|
+
}), /*#__PURE__*/_jsx(Line, {
|
|
175
|
+
x1: CLOCK_CENTER,
|
|
176
|
+
y1: CLOCK_CENTER,
|
|
177
|
+
x2: handEndPos.x,
|
|
178
|
+
y2: handEndPos.y,
|
|
179
|
+
stroke: "#4DA6FF",
|
|
180
|
+
strokeWidth: 2
|
|
181
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
182
|
+
cx: CLOCK_CENTER,
|
|
183
|
+
cy: CLOCK_CENTER,
|
|
184
|
+
r: CENTER_DOT_RADIUS,
|
|
185
|
+
fill: "#4DA6FF"
|
|
186
|
+
}), /*#__PURE__*/_jsx(G, {
|
|
187
|
+
children: numbers
|
|
188
|
+
})]
|
|
189
|
+
})
|
|
190
|
+
})
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
ClockFace.displayName = 'ClockFace';
|
|
194
|
+
//# sourceMappingURL=ClockFace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useMemo","View","Gesture","GestureDetector","runOnJS","Svg","Circle","G","Line","Text","SvgText","to12Hour","to24Hour","styles","jsx","_jsx","jsxs","_jsxs","CLOCK_SIZE","CLOCK_CENTER","OUTER_RADIUS","SELECTION_DOT_RADIUS","CENTER_DOT_RADIUS","HOURS_12","MINUTE_LABELS","positionToAngle","position","isMinutes","getPointOnCircle","angleDegrees","radius","rad","Math","PI","x","cos","y","sin","ClockFace","value","onChange","mode","onModeChange","is24Hour","hour","hour12","period","hours","handAngle","hourIndex","indexOf","minutes","handEndPos","handleInteraction","dx","dy","angle","atan2","normalized","round","undefined","newHours","handleInteractionEnd","setTimeout","panGesture","Pan","onStart","e","onUpdate","onEnd","tapGesture","Tap","combinedGesture","Race","numbers","map","index","pos","isSelected","textAnchor","alignmentBaseline","fontSize","fontWeight","fill","children","minute","toString","padStart","style","clockContainer","gesture","width","height","viewBox","cx","cy","r","x1","y1","x2","y2","stroke","strokeWidth","displayName"],"sourceRoot":"../../../../src","sources":["components/TimePicker/ClockFace.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useState } from 'react';
|
|
4
|
+
import { Pressable, Text, View } from 'react-native';
|
|
5
|
+
import { to12Hour, to24Hour } from "../../hooks/useTimePicker.js";
|
|
6
|
+
import { ClockFace } from "./ClockFace.js";
|
|
7
|
+
import { styles } from "./TimePicker.styles.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export const MaterialTimePicker = /*#__PURE__*/memo(({
|
|
10
|
+
value,
|
|
11
|
+
onChange,
|
|
12
|
+
is24Hour = false,
|
|
13
|
+
onCancel,
|
|
14
|
+
onConfirm
|
|
15
|
+
}) => {
|
|
16
|
+
const [mode, setMode] = useState('hours');
|
|
17
|
+
const {
|
|
18
|
+
hour: hour12,
|
|
19
|
+
period
|
|
20
|
+
} = to12Hour(value.hours);
|
|
21
|
+
const handleHourPress = useCallback(() => {
|
|
22
|
+
setMode('hours');
|
|
23
|
+
}, []);
|
|
24
|
+
const handleMinutePress = useCallback(() => {
|
|
25
|
+
setMode('minutes');
|
|
26
|
+
}, []);
|
|
27
|
+
const handlePeriodChange = useCallback(newPeriod => {
|
|
28
|
+
const newHours = to24Hour(hour12, newPeriod);
|
|
29
|
+
onChange({
|
|
30
|
+
hours: newHours,
|
|
31
|
+
minutes: value.minutes
|
|
32
|
+
});
|
|
33
|
+
}, [hour12, value.minutes, onChange]);
|
|
34
|
+
const handleModeChange = useCallback(newMode => {
|
|
35
|
+
setMode(newMode);
|
|
36
|
+
}, []);
|
|
37
|
+
|
|
38
|
+
// Format display values
|
|
39
|
+
const displayHour = is24Hour ? value.hours.toString().padStart(2, '0') : hour12.toString().padStart(2, '0');
|
|
40
|
+
const displayMinute = value.minutes.toString().padStart(2, '0');
|
|
41
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
42
|
+
style: styles.materialContainer,
|
|
43
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
44
|
+
style: styles.materialHeader,
|
|
45
|
+
children: "Select time"
|
|
46
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
47
|
+
style: styles.timeInputContainer,
|
|
48
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
49
|
+
style: styles.timeFieldsContainer,
|
|
50
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
51
|
+
onPress: handleHourPress,
|
|
52
|
+
style: [styles.timeField, mode === 'hours' && styles.timeFieldActive],
|
|
53
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
54
|
+
style: [styles.timeFieldText, mode === 'hours' && styles.timeFieldTextActive],
|
|
55
|
+
children: displayHour
|
|
56
|
+
})
|
|
57
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
58
|
+
style: styles.timeSeparator,
|
|
59
|
+
children: ":"
|
|
60
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
61
|
+
onPress: handleMinutePress,
|
|
62
|
+
style: [styles.timeField, mode === 'minutes' && styles.timeFieldActive],
|
|
63
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
64
|
+
style: [styles.timeFieldText, mode === 'minutes' && styles.timeFieldTextActive],
|
|
65
|
+
children: displayMinute
|
|
66
|
+
})
|
|
67
|
+
})]
|
|
68
|
+
}), !is24Hour && /*#__PURE__*/_jsxs(View, {
|
|
69
|
+
style: styles.periodToggleContainer,
|
|
70
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
71
|
+
onPress: () => handlePeriodChange('AM'),
|
|
72
|
+
style: [styles.periodButton, styles.periodButtonTop, period === 'AM' && styles.periodButtonActive],
|
|
73
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
74
|
+
style: [styles.periodButtonText, period === 'AM' && styles.periodButtonTextActive],
|
|
75
|
+
children: "AM"
|
|
76
|
+
})
|
|
77
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
78
|
+
onPress: () => handlePeriodChange('PM'),
|
|
79
|
+
style: [styles.periodButton, period === 'PM' && styles.periodButtonActive],
|
|
80
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
81
|
+
style: [styles.periodButtonText, period === 'PM' && styles.periodButtonTextActive],
|
|
82
|
+
children: "PM"
|
|
83
|
+
})
|
|
84
|
+
})]
|
|
85
|
+
})]
|
|
86
|
+
}), /*#__PURE__*/_jsx(ClockFace, {
|
|
87
|
+
value: value,
|
|
88
|
+
onChange: onChange,
|
|
89
|
+
mode: mode,
|
|
90
|
+
onModeChange: handleModeChange,
|
|
91
|
+
is24Hour: is24Hour
|
|
92
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
93
|
+
style: styles.actionsContainer,
|
|
94
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
95
|
+
style: styles.keyboardButton,
|
|
96
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
97
|
+
style: styles.keyboardButtonText,
|
|
98
|
+
children: "\u2328\uFE0F"
|
|
99
|
+
})
|
|
100
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
101
|
+
style: styles.actionButtonsContainer,
|
|
102
|
+
children: [onCancel && /*#__PURE__*/_jsx(Pressable, {
|
|
103
|
+
style: styles.actionButton,
|
|
104
|
+
onPress: onCancel,
|
|
105
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
106
|
+
style: styles.actionButtonText,
|
|
107
|
+
children: "Cancel"
|
|
108
|
+
})
|
|
109
|
+
}), onConfirm && /*#__PURE__*/_jsx(Pressable, {
|
|
110
|
+
style: styles.actionButton,
|
|
111
|
+
onPress: onConfirm,
|
|
112
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
113
|
+
style: styles.actionButtonText,
|
|
114
|
+
children: "OK"
|
|
115
|
+
})
|
|
116
|
+
})]
|
|
117
|
+
})]
|
|
118
|
+
})]
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
MaterialTimePicker.displayName = 'MaterialTimePicker';
|
|
122
|
+
//# sourceMappingURL=MaterialTimePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useState","Pressable","Text","View","to12Hour","to24Hour","ClockFace","styles","jsx","_jsx","jsxs","_jsxs","MaterialTimePicker","value","onChange","is24Hour","onCancel","onConfirm","mode","setMode","hour","hour12","period","hours","handleHourPress","handleMinutePress","handlePeriodChange","newPeriod","newHours","minutes","handleModeChange","newMode","displayHour","toString","padStart","displayMinute","style","materialContainer","children","materialHeader","timeInputContainer","timeFieldsContainer","onPress","timeField","timeFieldActive","timeFieldText","timeFieldTextActive","timeSeparator","periodToggleContainer","periodButton","periodButtonTop","periodButtonActive","periodButtonText","periodButtonTextActive","onModeChange","actionsContainer","keyboardButton","keyboardButtonText","actionButtonsContainer","actionButton","actionButtonText","displayName"],"sourceRoot":"../../../../src","sources":["components/TimePicker/MaterialTimePicker.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { Suspense, useCallback } from 'react';
|
|
4
|
+
import { ActivityIndicator, View } from 'react-native';
|
|
5
|
+
import { MaterialTimePicker } from "./MaterialTimePicker.js";
|
|
6
|
+
import { styles } from "./TimePicker.styles.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
// @ts-expect-error - React.lazy fallback returns null when @expo/ui unavailable
|
|
9
|
+
const ExpoTimePicker = /*#__PURE__*/React.lazy(async () => {
|
|
10
|
+
try {
|
|
11
|
+
// @ts-expect-error - @expo/ui types not available
|
|
12
|
+
const {
|
|
13
|
+
DateTimePicker
|
|
14
|
+
} = await import('@expo/ui/jetpack-compose');
|
|
15
|
+
return {
|
|
16
|
+
default: ({
|
|
17
|
+
value,
|
|
18
|
+
onChange,
|
|
19
|
+
is24Hour
|
|
20
|
+
}) => {
|
|
21
|
+
// Create a Date object for the picker
|
|
22
|
+
const date = new Date();
|
|
23
|
+
date.setHours(value.hours, value.minutes, 0, 0);
|
|
24
|
+
const handleChange = newDate => {
|
|
25
|
+
onChange({
|
|
26
|
+
hours: newDate.getHours(),
|
|
27
|
+
minutes: newDate.getMinutes()
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
return /*#__PURE__*/_jsx(DateTimePicker, {
|
|
31
|
+
onDateSelected: handleChange,
|
|
32
|
+
displayedComponents: "hourAndMinute",
|
|
33
|
+
initialDate: date.toISOString(),
|
|
34
|
+
variant: "picker"
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
} catch {
|
|
39
|
+
// Fallback when @expo/ui is not available
|
|
40
|
+
return {
|
|
41
|
+
default: _props => null
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
export const TimePicker = ({
|
|
46
|
+
value,
|
|
47
|
+
onChange,
|
|
48
|
+
theme = 'native',
|
|
49
|
+
is24Hour = false
|
|
50
|
+
}) => {
|
|
51
|
+
const handleTimeChange = useCallback(time => {
|
|
52
|
+
onChange(time);
|
|
53
|
+
}, [onChange]);
|
|
54
|
+
|
|
55
|
+
// Use native Android picker for 'native' theme
|
|
56
|
+
if (theme === 'native') {
|
|
57
|
+
return /*#__PURE__*/_jsx(View, {
|
|
58
|
+
style: styles.container,
|
|
59
|
+
children: /*#__PURE__*/_jsx(Suspense, {
|
|
60
|
+
fallback: /*#__PURE__*/_jsx(ActivityIndicator, {}),
|
|
61
|
+
children: /*#__PURE__*/_jsx(ExpoTimePicker, {
|
|
62
|
+
value: value,
|
|
63
|
+
onChange: handleTimeChange,
|
|
64
|
+
is24Hour: is24Hour
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Use Material-style picker for 'android' or 'ios' themes
|
|
71
|
+
return /*#__PURE__*/_jsx(MaterialTimePicker, {
|
|
72
|
+
value: value,
|
|
73
|
+
onChange: onChange,
|
|
74
|
+
is24Hour: is24Hour
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=TimePicker.android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Suspense","useCallback","ActivityIndicator","View","MaterialTimePicker","styles","jsx","_jsx","ExpoTimePicker","lazy","DateTimePicker","default","value","onChange","is24Hour","date","Date","setHours","hours","minutes","handleChange","newDate","getHours","getMinutes","onDateSelected","displayedComponents","initialDate","toISOString","variant","_props","TimePicker","theme","handleTimeChange","time","style","container","children","fallback"],"sourceRoot":"../../../../src","sources":["components/TimePicker/TimePicker.android.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AACpD,SAASC,iBAAiB,EAAEC,IAAI,QAAQ,cAAc;AAEtD,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,MAAM,QAAQ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ7C;AACA,MAAMC,cAAc,gBAAGT,KAAK,CAACU,IAAI,CAAC,YAAY;EAC5C,IAAI;IACF;IACA,MAAM;MAAEC;IAAe,CAAC,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC;IAEnE,OAAO;MACLC,OAAO,EAAEA,CAAC;QAAEC,KAAK;QAAEC,QAAQ;QAAEC;MAA8B,CAAC,KAAK;QAC/D;QACA,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAAC;QACvBD,IAAI,CAACE,QAAQ,CAACL,KAAK,CAACM,KAAK,EAAEN,KAAK,CAACO,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,MAAMC,YAAY,GAAIC,OAAa,IAAK;UACtCR,QAAQ,CAAC;YACPK,KAAK,EAAEG,OAAO,CAACC,QAAQ,CAAC,CAAC;YACzBH,OAAO,EAAEE,OAAO,CAACE,UAAU,CAAC;UAC9B,CAAC,CAAC;QACJ,CAAC;QAED,oBACEhB,IAAA,CAACG,cAAc;UACbc,cAAc,EAAEJ,YAAa;UAC7BK,mBAAmB,EAAC,eAAe;UACnCC,WAAW,EAAEX,IAAI,CAACY,WAAW,CAAC,CAAE;UAChCC,OAAO,EAAC;QAAQ,CACjB,CAAC;MAEN;IACF,CAAC;EACH,CAAC,CAAC,MAAM;IACN;IACA,OAAO;MAAEjB,OAAO,EAAGkB,MAA2B,IAAK;IAAK,CAAC;EAC3D;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,UAAqC,GAAGA,CAAC;EACpDlB,KAAK;EACLC,QAAQ;EACRkB,KAAK,GAAG,QAAQ;EAChBjB,QAAQ,GAAG;AACb,CAAC,KAAK;EACJ,MAAMkB,gBAAgB,GAAG/B,WAAW,CACjCgC,IAAe,IAAK;IACnBpB,QAAQ,CAACoB,IAAI,CAAC;EAChB,CAAC,EACD,CAACpB,QAAQ,CACX,CAAC;;EAED;EACA,IAAIkB,KAAK,KAAK,QAAQ,EAAE;IACtB,oBACExB,IAAA,CAACJ,IAAI;MAAC+B,KAAK,EAAE7B,MAAM,CAAC8B,SAAU;MAAAC,QAAA,eAC5B7B,IAAA,CAACP,QAAQ;QAACqC,QAAQ,eAAE9B,IAAA,CAACL,iBAAiB,IAAE,CAAE;QAAAkC,QAAA,eACxC7B,IAAA,CAACC,cAAc;UACbI,KAAK,EAAEA,KAAM;UACbC,QAAQ,EAAEmB,gBAAiB;UAC3BlB,QAAQ,EAAEA;QAAS,CACpB;MAAC,CACM;IAAC,CACP,CAAC;EAEX;;EAEA;EACA,oBACEP,IAAA,CAACH,kBAAkB;IAACQ,KAAK,EAAEA,KAAM;IAACC,QAAQ,EAAEA,QAAS;IAACC,QAAQ,EAAEA;EAAS,CAAE,CAAC;AAEhF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { Suspense, useCallback } from 'react';
|
|
4
|
+
import { ActivityIndicator, View } from 'react-native';
|
|
5
|
+
import { styles } from "./TimePicker.styles.js";
|
|
6
|
+
import { TimeWheelPicker } from "./TimeWheelPicker.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
// @ts-expect-error - React.lazy fallback returns null when @expo/ui unavailable
|
|
9
|
+
const ExpoTimePicker = /*#__PURE__*/React.lazy(async () => {
|
|
10
|
+
try {
|
|
11
|
+
// @ts-expect-error - @expo/ui types not available
|
|
12
|
+
const {
|
|
13
|
+
DateTimePicker,
|
|
14
|
+
Host
|
|
15
|
+
} = await import('@expo/ui/swift-ui');
|
|
16
|
+
return {
|
|
17
|
+
default: ({
|
|
18
|
+
value,
|
|
19
|
+
onChange,
|
|
20
|
+
is24Hour
|
|
21
|
+
}) => {
|
|
22
|
+
// Create a Date object for the picker
|
|
23
|
+
const date = new Date();
|
|
24
|
+
date.setHours(value.hours, value.minutes, 0, 0);
|
|
25
|
+
const handleChange = newDate => {
|
|
26
|
+
onChange({
|
|
27
|
+
hours: newDate.getHours(),
|
|
28
|
+
minutes: newDate.getMinutes()
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
return /*#__PURE__*/_jsx(Host, {
|
|
32
|
+
matchContents: true,
|
|
33
|
+
children: /*#__PURE__*/_jsx(DateTimePicker, {
|
|
34
|
+
onDateSelected: handleChange,
|
|
35
|
+
displayedComponents: "hourAndMinute",
|
|
36
|
+
initialDate: date.toISOString(),
|
|
37
|
+
variant: "wheel"
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
} catch {
|
|
43
|
+
// Fallback when @expo/ui is not available
|
|
44
|
+
return {
|
|
45
|
+
default: _props => null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
export const TimePicker = ({
|
|
50
|
+
value,
|
|
51
|
+
onChange,
|
|
52
|
+
theme = 'native',
|
|
53
|
+
is24Hour = false,
|
|
54
|
+
minuteInterval = 1
|
|
55
|
+
}) => {
|
|
56
|
+
const handleTimeChange = useCallback(time => {
|
|
57
|
+
onChange(time);
|
|
58
|
+
}, [onChange]);
|
|
59
|
+
|
|
60
|
+
// Use native iOS picker for 'native' or 'ios' theme
|
|
61
|
+
if (theme === 'native' || theme === 'ios') {
|
|
62
|
+
return /*#__PURE__*/_jsx(View, {
|
|
63
|
+
style: styles.container,
|
|
64
|
+
children: /*#__PURE__*/_jsx(Suspense, {
|
|
65
|
+
fallback: /*#__PURE__*/_jsx(ActivityIndicator, {}),
|
|
66
|
+
children: /*#__PURE__*/_jsx(ExpoTimePicker, {
|
|
67
|
+
value: value,
|
|
68
|
+
onChange: handleTimeChange,
|
|
69
|
+
is24Hour: is24Hour
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Fallback to wheel picker for other themes
|
|
76
|
+
return /*#__PURE__*/_jsx(TimeWheelPicker, {
|
|
77
|
+
value: value,
|
|
78
|
+
onChange: onChange,
|
|
79
|
+
is24Hour: is24Hour,
|
|
80
|
+
minuteInterval: minuteInterval
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=TimePicker.ios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Suspense","useCallback","ActivityIndicator","View","styles","TimeWheelPicker","jsx","_jsx","ExpoTimePicker","lazy","DateTimePicker","Host","default","value","onChange","is24Hour","date","Date","setHours","hours","minutes","handleChange","newDate","getHours","getMinutes","matchContents","children","onDateSelected","displayedComponents","initialDate","toISOString","variant","_props","TimePicker","theme","minuteInterval","handleTimeChange","time","style","container","fallback"],"sourceRoot":"../../../../src","sources":["components/TimePicker/TimePicker.ios.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AACpD,SAASC,iBAAiB,EAAEC,IAAI,QAAQ,cAAc;AAEtD,SAASC,MAAM,QAAQ,wBAAqB;AAC5C,SAASC,eAAe,QAAQ,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQpD;AACA,MAAMC,cAAc,gBAAGT,KAAK,CAACU,IAAI,CAAC,YAAY;EAC5C,IAAI;IACF;IACA,MAAM;MAAEC,cAAc;MAAEC;IAAK,CAAC,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC;IAElE,OAAO;MACLC,OAAO,EAAEA,CAAC;QAAEC,KAAK;QAAEC,QAAQ;QAAEC;MAA8B,CAAC,KAAK;QAC/D;QACA,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAAC;QACvBD,IAAI,CAACE,QAAQ,CAACL,KAAK,CAACM,KAAK,EAAEN,KAAK,CAACO,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,MAAMC,YAAY,GAAIC,OAAa,IAAK;UACtCR,QAAQ,CAAC;YACPK,KAAK,EAAEG,OAAO,CAACC,QAAQ,CAAC,CAAC;YACzBH,OAAO,EAAEE,OAAO,CAACE,UAAU,CAAC;UAC9B,CAAC,CAAC;QACJ,CAAC;QAED,oBACEjB,IAAA,CAACI,IAAI;UAACc,aAAa;UAAAC,QAAA,eACjBnB,IAAA,CAACG,cAAc;YACbiB,cAAc,EAAEN,YAAa;YAC7BO,mBAAmB,EAAC,eAAe;YACnCC,WAAW,EAAEb,IAAI,CAACc,WAAW,CAAC,CAAE;YAChCC,OAAO,EAAC;UAAO,CAChB;QAAC,CACE,CAAC;MAEX;IACF,CAAC;EACH,CAAC,CAAC,MAAM;IACN;IACA,OAAO;MAAEnB,OAAO,EAAGoB,MAA2B,IAAK;IAAK,CAAC;EAC3D;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,UAAqC,GAAGA,CAAC;EACpDpB,KAAK;EACLC,QAAQ;EACRoB,KAAK,GAAG,QAAQ;EAChBnB,QAAQ,GAAG,KAAK;EAChBoB,cAAc,GAAG;AACnB,CAAC,KAAK;EACJ,MAAMC,gBAAgB,GAAGnC,WAAW,CACjCoC,IAAe,IAAK;IACnBvB,QAAQ,CAACuB,IAAI,CAAC;EAChB,CAAC,EACD,CAACvB,QAAQ,CACX,CAAC;;EAED;EACA,IAAIoB,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,KAAK,EAAE;IACzC,oBACE3B,IAAA,CAACJ,IAAI;MAACmC,KAAK,EAAElC,MAAM,CAACmC,SAAU;MAAAb,QAAA,eAC5BnB,IAAA,CAACP,QAAQ;QAACwC,QAAQ,eAAEjC,IAAA,CAACL,iBAAiB,IAAE,CAAE;QAAAwB,QAAA,eACxCnB,IAAA,CAACC,cAAc;UACbK,KAAK,EAAEA,KAAM;UACbC,QAAQ,EAAEsB,gBAAiB;UAC3BrB,QAAQ,EAAEA;QAAS,CACpB;MAAC,CACM;IAAC,CACP,CAAC;EAEX;;EAEA;EACA,oBACER,IAAA,CAACF,eAAe;IACdQ,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,QAAQ,EAAEA,QAAS;IACnBoB,cAAc,EAAEA;EAAe,CAChC,CAAC;AAEN,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Re-export types for convenience
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* TimePicker Component
|
|
7
|
+
*
|
|
8
|
+
* A cross-platform time picker with support for iOS wheel style and Material clock face.
|
|
9
|
+
*
|
|
10
|
+
* Platform-specific implementations are handled by Metro's file resolution:
|
|
11
|
+
* - iOS: Uses @expo/ui DateTimePicker in time mode, falls back to TimeWheelPicker
|
|
12
|
+
* - Android: Uses @expo/ui DateTimePicker or MaterialTimePicker with ClockFace
|
|
13
|
+
* - Web: TimeWheelPicker for iOS theme, MaterialTimePicker for Android theme
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* import { TimePicker } from '@dreamstack-us/kaal';
|
|
18
|
+
*
|
|
19
|
+
* const [time, setTime] = useState({ hours: 9, minutes: 30 });
|
|
20
|
+
*
|
|
21
|
+
* <TimePicker
|
|
22
|
+
* value={time}
|
|
23
|
+
* onChange={setTime}
|
|
24
|
+
* theme="ios"
|
|
25
|
+
* is24Hour={false}
|
|
26
|
+
* />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export const TimePicker = _props => {
|
|
30
|
+
// This file serves as type definition and fallback
|
|
31
|
+
// Metro resolves platform-specific files (.ios.tsx, .android.tsx, .web.tsx)
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=TimePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TimePicker","_props"],"sourceRoot":"../../../../src","sources":["components/TimePicker/TimePicker.tsx"],"mappings":";;AAGA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,UAAqC,GAAIC,MAAM,IAAK;EAC/D;EACA;EACA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
|