@compsych-ui-components/react-native 7.0.4 → 7.0.7
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/package.json +3 -7
- package/src/components/ActionSheet/index.d.ts +10 -1
- package/src/components/ActionSheet/index.js +59 -28
- package/src/components/ActionSheet/index.js.map +1 -1
- package/src/components/BodyText/index.d.ts +1 -0
- package/src/components/BodyText/index.js.map +1 -1
- package/src/components/Button/index.d.ts +1 -1
- package/src/components/Button/index.js +57 -37
- package/src/components/Button/index.js.map +1 -1
- package/src/components/ChatBubble/index.js +16 -14
- package/src/components/ChatBubble/index.js.map +1 -1
- package/src/components/ChatInput/index.d.ts +3 -1
- package/src/components/ChatInput/index.js +105 -98
- package/src/components/ChatInput/index.js.map +1 -1
- package/src/components/Checkbox/index.js.map +1 -1
- package/src/components/DateTimePicker/index.d.ts +16 -0
- package/src/components/DateTimePicker/index.js +587 -0
- package/src/components/DateTimePicker/index.js.map +1 -0
- package/src/components/Input/index.js +2 -3
- package/src/components/Input/index.js.map +1 -1
- package/src/components/Pagination/index.js.map +1 -1
- package/src/components/RadioButton/index.js.map +1 -1
- package/src/components/ScreenContainer/index.d.ts +2 -0
- package/src/components/ScreenContainer/index.js +2 -2
- package/src/components/ScreenContainer/index.js.map +1 -1
- package/src/components/SegmentedControl/index.d.ts +3 -3
- package/src/components/SegmentedControl/index.js +27 -40
- package/src/components/SegmentedControl/index.js.map +1 -1
- package/src/components/SelectionCard/index.js +12 -9
- package/src/components/SelectionCard/index.js.map +1 -1
- package/src/components/ServiceCard/index.js +141 -47
- package/src/components/ServiceCard/index.js.map +1 -1
- package/src/components/StatusChip/index.d.ts +15 -0
- package/src/components/StatusChip/index.js +80 -0
- package/src/components/StatusChip/index.js.map +1 -0
- package/src/icons/index.d.ts +8 -21
- package/src/icons/index.js +12 -92
- package/src/icons/index.js.map +1 -1
- package/src/icons/types.d.ts +3 -1
- package/src/icons/types.js +4 -4
- package/src/icons/types.js.map +1 -1
- package/src/index.d.ts +6 -5
- package/src/index.js +16 -60
- package/src/index.js.map +1 -1
- package/src/components/PromotionCard/index.d.ts +0 -23
- package/src/components/PromotionCard/index.js +0 -514
- package/src/components/PromotionCard/index.js.map +0 -1
- package/src/icons/AtomIcon.d.ts +0 -2
- package/src/icons/AtomIcon.js +0 -85
- package/src/icons/AtomIcon.js.map +0 -1
- package/src/icons/BinocularsIcon.d.ts +0 -2
- package/src/icons/BinocularsIcon.js +0 -103
- package/src/icons/BinocularsIcon.js.map +0 -1
- package/src/icons/FileChartColumnIncreasingIcon.d.ts +0 -2
- package/src/icons/FileChartColumnIncreasingIcon.js +0 -97
- package/src/icons/FileChartColumnIncreasingIcon.js.map +0 -1
- package/src/icons/FlagIcon.d.ts +0 -2
- package/src/icons/FlagIcon.js +0 -71
- package/src/icons/FlagIcon.js.map +0 -1
- package/src/icons/GlobeIcon.d.ts +0 -2
- package/src/icons/GlobeIcon.js +0 -71
- package/src/icons/GlobeIcon.js.map +0 -1
- package/src/icons/GraduationCapIcon.d.ts +0 -2
- package/src/icons/GraduationCapIcon.js +0 -85
- package/src/icons/GraduationCapIcon.js.map +0 -1
- package/src/icons/HandHeartIcon.d.ts +0 -2
- package/src/icons/HandHeartIcon.js +0 -91
- package/src/icons/HandHeartIcon.js.map +0 -1
- package/src/icons/HandshakeIcon.d.ts +0 -2
- package/src/icons/HandshakeIcon.js +0 -97
- package/src/icons/HandshakeIcon.js.map +0 -1
- package/src/icons/HazeIcon.d.ts +0 -2
- package/src/icons/HazeIcon.js +0 -115
- package/src/icons/HazeIcon.js.map +0 -1
- package/src/icons/HeartHandshakeIcon.d.ts +0 -2
- package/src/icons/HeartHandshakeIcon.js +0 -71
- package/src/icons/HeartHandshakeIcon.js.map +0 -1
- package/src/icons/HourglassIcon.d.ts +0 -2
- package/src/icons/HourglassIcon.js +0 -91
- package/src/icons/HourglassIcon.js.map +0 -1
- package/src/icons/IdCardIcon.d.ts +0 -2
- package/src/icons/IdCardIcon.js +0 -97
- package/src/icons/IdCardIcon.js.map +0 -1
- package/src/icons/MessageCirclePlusIcon.d.ts +0 -2
- package/src/icons/MessageCirclePlusIcon.js +0 -85
- package/src/icons/MessageCirclePlusIcon.js.map +0 -1
- package/src/icons/MountainSnowIcon.d.ts +0 -2
- package/src/icons/MountainSnowIcon.js +0 -79
- package/src/icons/MountainSnowIcon.js.map +0 -1
- package/src/icons/SnowflakeIcon.d.ts +0 -2
- package/src/icons/SnowflakeIcon.js +0 -139
- package/src/icons/SnowflakeIcon.js.map +0 -1
- package/src/icons/StethoscopeIcon.d.ts +0 -2
- package/src/icons/StethoscopeIcon.js +0 -97
- package/src/icons/StethoscopeIcon.js.map +0 -1
- package/src/icons/UserRoundIcon.d.ts +0 -2
- package/src/icons/UserRoundIcon.js +0 -79
- package/src/icons/UserRoundIcon.js.map +0 -1
- package/src/icons/WheatIcon.d.ts +0 -2
- package/src/icons/WheatIcon.js +0 -115
- package/src/icons/WheatIcon.js.map +0 -1
|
@@ -0,0 +1,587 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "DateTimePicker", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return DateTimePicker;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _jsxruntime = require("react/jsx-runtime");
|
|
12
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
13
|
+
const _reactnative = require("react-native");
|
|
14
|
+
const _icons = require("../../icons");
|
|
15
|
+
const _theme = require("../../theme");
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
17
|
+
if (typeof WeakMap !== "function") return null;
|
|
18
|
+
var cacheBabelInterop = new WeakMap();
|
|
19
|
+
var cacheNodeInterop = new WeakMap();
|
|
20
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
21
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
22
|
+
})(nodeInterop);
|
|
23
|
+
}
|
|
24
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
25
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
26
|
+
return obj;
|
|
27
|
+
}
|
|
28
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
29
|
+
return {
|
|
30
|
+
default: obj
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
34
|
+
if (cache && cache.has(obj)) {
|
|
35
|
+
return cache.get(obj);
|
|
36
|
+
}
|
|
37
|
+
var newObj = {
|
|
38
|
+
__proto__: null
|
|
39
|
+
};
|
|
40
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
41
|
+
for(var key in obj){
|
|
42
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
43
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
44
|
+
if (desc && (desc.get || desc.set)) {
|
|
45
|
+
Object.defineProperty(newObj, key, desc);
|
|
46
|
+
} else {
|
|
47
|
+
newObj[key] = obj[key];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
newObj.default = obj;
|
|
52
|
+
if (cache) {
|
|
53
|
+
cache.set(obj, newObj);
|
|
54
|
+
}
|
|
55
|
+
return newObj;
|
|
56
|
+
}
|
|
57
|
+
const DAY_HEADERS = [
|
|
58
|
+
'SUN',
|
|
59
|
+
'MON',
|
|
60
|
+
'TUE',
|
|
61
|
+
'WED',
|
|
62
|
+
'THU',
|
|
63
|
+
'FRI',
|
|
64
|
+
'SAT'
|
|
65
|
+
];
|
|
66
|
+
function toLocalDateString(date) {
|
|
67
|
+
const y = date.getFullYear();
|
|
68
|
+
const m = String(date.getMonth() + 1).padStart(2, '0');
|
|
69
|
+
const d = String(date.getDate()).padStart(2, '0');
|
|
70
|
+
return `${y}-${m}-${d}`;
|
|
71
|
+
}
|
|
72
|
+
function addMonths(date, count) {
|
|
73
|
+
const result = new Date(date.getFullYear(), date.getMonth() + count, 1);
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
function DateTimePicker({ selectedDate, onSelectDate, selectedTime, onSelectTime, availableTimes, availableTimeLabel, availableDates, maxMonthsAhead = 1, languageLabel, timezoneLabel }) {
|
|
77
|
+
const { colorRoles: cr } = (0, _theme.useTheme)();
|
|
78
|
+
const LanguagesIcon = (0, _icons.resolveIcon)('Languages');
|
|
79
|
+
const GlobeIcon = (0, _icons.resolveIcon)('Globe');
|
|
80
|
+
const today = (0, _react.useMemo)(()=>{
|
|
81
|
+
const d = new Date();
|
|
82
|
+
d.setHours(0, 0, 0, 0);
|
|
83
|
+
return d;
|
|
84
|
+
}, []);
|
|
85
|
+
const maxDate = (0, _react.useMemo)(()=>{
|
|
86
|
+
const d = addMonths(today, maxMonthsAhead);
|
|
87
|
+
// Last day of the maxMonthsAhead month
|
|
88
|
+
return new Date(d.getFullYear(), d.getMonth() + 1, 0);
|
|
89
|
+
}, [
|
|
90
|
+
today,
|
|
91
|
+
maxMonthsAhead
|
|
92
|
+
]);
|
|
93
|
+
const [viewYear, setViewYear] = (0, _react.useState)(today.getFullYear());
|
|
94
|
+
const [viewMonth, setViewMonth] = (0, _react.useState)(today.getMonth());
|
|
95
|
+
const canGoPrev = (0, _react.useMemo)(()=>{
|
|
96
|
+
return viewYear > today.getFullYear() || viewMonth > today.getMonth();
|
|
97
|
+
}, [
|
|
98
|
+
viewYear,
|
|
99
|
+
viewMonth,
|
|
100
|
+
today
|
|
101
|
+
]);
|
|
102
|
+
const canGoNext = (0, _react.useMemo)(()=>{
|
|
103
|
+
const maxMonth = addMonths(today, maxMonthsAhead);
|
|
104
|
+
return viewYear < maxMonth.getFullYear() || viewYear === maxMonth.getFullYear() && viewMonth < maxMonth.getMonth();
|
|
105
|
+
}, [
|
|
106
|
+
viewYear,
|
|
107
|
+
viewMonth,
|
|
108
|
+
today,
|
|
109
|
+
maxMonthsAhead
|
|
110
|
+
]);
|
|
111
|
+
const handlePrevMonth = (0, _react.useCallback)(()=>{
|
|
112
|
+
if (!canGoPrev) return;
|
|
113
|
+
if (viewMonth === 0) {
|
|
114
|
+
setViewMonth(11);
|
|
115
|
+
setViewYear((y)=>y - 1);
|
|
116
|
+
} else {
|
|
117
|
+
setViewMonth((m)=>m - 1);
|
|
118
|
+
}
|
|
119
|
+
}, [
|
|
120
|
+
canGoPrev,
|
|
121
|
+
viewMonth
|
|
122
|
+
]);
|
|
123
|
+
const handleNextMonth = (0, _react.useCallback)(()=>{
|
|
124
|
+
if (!canGoNext) return;
|
|
125
|
+
if (viewMonth === 11) {
|
|
126
|
+
setViewMonth(0);
|
|
127
|
+
setViewYear((y)=>y + 1);
|
|
128
|
+
} else {
|
|
129
|
+
setViewMonth((m)=>m + 1);
|
|
130
|
+
}
|
|
131
|
+
}, [
|
|
132
|
+
canGoNext,
|
|
133
|
+
viewMonth
|
|
134
|
+
]);
|
|
135
|
+
const monthLabel = (0, _react.useMemo)(()=>{
|
|
136
|
+
const d = new Date(viewYear, viewMonth, 1);
|
|
137
|
+
return d.toLocaleString('default', {
|
|
138
|
+
month: 'long',
|
|
139
|
+
year: 'numeric'
|
|
140
|
+
});
|
|
141
|
+
}, [
|
|
142
|
+
viewYear,
|
|
143
|
+
viewMonth
|
|
144
|
+
]);
|
|
145
|
+
// Build calendar grid
|
|
146
|
+
const calendarDays = (0, _react.useMemo)(()=>{
|
|
147
|
+
const firstDay = new Date(viewYear, viewMonth, 1).getDay();
|
|
148
|
+
const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();
|
|
149
|
+
const cells = [];
|
|
150
|
+
for(let i = 0; i < firstDay; i++)cells.push(null);
|
|
151
|
+
for(let d = 1; d <= daysInMonth; d++)cells.push(d);
|
|
152
|
+
// Pad to complete last row
|
|
153
|
+
while(cells.length % 7 !== 0)cells.push(null);
|
|
154
|
+
return cells;
|
|
155
|
+
}, [
|
|
156
|
+
viewYear,
|
|
157
|
+
viewMonth
|
|
158
|
+
]);
|
|
159
|
+
const availableDatesSet = (0, _react.useMemo)(()=>availableDates ? new Set(availableDates) : null, [
|
|
160
|
+
availableDates
|
|
161
|
+
]);
|
|
162
|
+
const isDisabled = (0, _react.useCallback)((day)=>{
|
|
163
|
+
const d = new Date(viewYear, viewMonth, day);
|
|
164
|
+
d.setHours(0, 0, 0, 0);
|
|
165
|
+
if (d < today || d > maxDate) return true;
|
|
166
|
+
if (availableDatesSet) {
|
|
167
|
+
const dateStr = toLocalDateString(d);
|
|
168
|
+
return !availableDatesSet.has(dateStr);
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}, [
|
|
172
|
+
viewYear,
|
|
173
|
+
viewMonth,
|
|
174
|
+
today,
|
|
175
|
+
maxDate,
|
|
176
|
+
availableDatesSet
|
|
177
|
+
]);
|
|
178
|
+
const isSelected = (0, _react.useCallback)((day)=>{
|
|
179
|
+
const d = new Date(viewYear, viewMonth, day);
|
|
180
|
+
return toLocalDateString(d) === selectedDate;
|
|
181
|
+
}, [
|
|
182
|
+
viewYear,
|
|
183
|
+
viewMonth,
|
|
184
|
+
selectedDate
|
|
185
|
+
]);
|
|
186
|
+
const handleDayPress = (0, _react.useCallback)((day)=>{
|
|
187
|
+
if (isDisabled(day)) return;
|
|
188
|
+
const d = new Date(viewYear, viewMonth, day);
|
|
189
|
+
onSelectDate(toLocalDateString(d));
|
|
190
|
+
}, [
|
|
191
|
+
viewYear,
|
|
192
|
+
viewMonth,
|
|
193
|
+
isDisabled,
|
|
194
|
+
onSelectDate
|
|
195
|
+
]);
|
|
196
|
+
const sysPrimary = cr.accent.primary.sysPrimary;
|
|
197
|
+
const sysOutline = cr.outline.sysOutline;
|
|
198
|
+
const sysOnSurface = cr.surface.surface.sysOnSurface;
|
|
199
|
+
const sysOnSurfaceVariant = cr.surface.surface.sysOnSurfaceVariant;
|
|
200
|
+
const sysSurfaceContainerHighest = cr.surface.surfaceContainer.sysSurfaceContainerHighest;
|
|
201
|
+
const prevChevron = _reactnative.I18nManager.isRTL ? '>' : '<';
|
|
202
|
+
const nextChevron = _reactnative.I18nManager.isRTL ? '<' : '>';
|
|
203
|
+
const weeks = [];
|
|
204
|
+
for(let i = 0; i < calendarDays.length; i += 7){
|
|
205
|
+
weeks.push(calendarDays.slice(i, i + 7));
|
|
206
|
+
}
|
|
207
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
208
|
+
testID: "calendar-picker",
|
|
209
|
+
style: [
|
|
210
|
+
styles.card,
|
|
211
|
+
{
|
|
212
|
+
borderColor: sysOutline,
|
|
213
|
+
backgroundColor: '#FFFFFF'
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
children: [
|
|
217
|
+
/*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
218
|
+
style: styles.calendarSection,
|
|
219
|
+
children: [
|
|
220
|
+
/*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
221
|
+
style: styles.monthNavRow,
|
|
222
|
+
children: [
|
|
223
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
|
|
224
|
+
testID: "calendar-prev-button",
|
|
225
|
+
onPress: handlePrevMonth,
|
|
226
|
+
style: [
|
|
227
|
+
styles.navButton,
|
|
228
|
+
!canGoPrev && styles.navButtonDisabled
|
|
229
|
+
],
|
|
230
|
+
disabled: !canGoPrev,
|
|
231
|
+
accessibilityRole: "button",
|
|
232
|
+
accessibilityLabel: "Previous month",
|
|
233
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
234
|
+
style: [
|
|
235
|
+
styles.navChevron,
|
|
236
|
+
{
|
|
237
|
+
color: canGoPrev ? sysOnSurface : sysOnSurfaceVariant
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
children: prevChevron
|
|
241
|
+
})
|
|
242
|
+
}),
|
|
243
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
244
|
+
testID: "calendar-month-label",
|
|
245
|
+
style: [
|
|
246
|
+
styles.monthLabel,
|
|
247
|
+
{
|
|
248
|
+
color: sysOnSurface
|
|
249
|
+
}
|
|
250
|
+
],
|
|
251
|
+
children: monthLabel
|
|
252
|
+
}),
|
|
253
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
|
|
254
|
+
testID: "calendar-next-button",
|
|
255
|
+
onPress: handleNextMonth,
|
|
256
|
+
style: [
|
|
257
|
+
styles.navButton,
|
|
258
|
+
!canGoNext && styles.navButtonDisabled
|
|
259
|
+
],
|
|
260
|
+
disabled: !canGoNext,
|
|
261
|
+
accessibilityRole: "button",
|
|
262
|
+
accessibilityLabel: "Next month",
|
|
263
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
264
|
+
style: [
|
|
265
|
+
styles.navChevron,
|
|
266
|
+
{
|
|
267
|
+
color: canGoNext ? sysOnSurface : sysOnSurfaceVariant
|
|
268
|
+
}
|
|
269
|
+
],
|
|
270
|
+
children: nextChevron
|
|
271
|
+
})
|
|
272
|
+
})
|
|
273
|
+
]
|
|
274
|
+
}),
|
|
275
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
276
|
+
style: styles.weekRow,
|
|
277
|
+
children: DAY_HEADERS.map((h)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
278
|
+
style: styles.dayCell,
|
|
279
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
280
|
+
testID: `day-header-${h}`,
|
|
281
|
+
style: [
|
|
282
|
+
styles.dayHeader,
|
|
283
|
+
{
|
|
284
|
+
color: sysOnSurfaceVariant
|
|
285
|
+
}
|
|
286
|
+
],
|
|
287
|
+
children: h
|
|
288
|
+
})
|
|
289
|
+
}, h))
|
|
290
|
+
}),
|
|
291
|
+
weeks.map((week, wi)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
292
|
+
style: styles.weekRow,
|
|
293
|
+
children: week.map((day, di)=>{
|
|
294
|
+
if (day === null) {
|
|
295
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
296
|
+
style: styles.dayCell
|
|
297
|
+
}, `empty-${di}`);
|
|
298
|
+
}
|
|
299
|
+
const disabled = isDisabled(day);
|
|
300
|
+
const selected = isSelected(day);
|
|
301
|
+
const cellStyle = [
|
|
302
|
+
styles.dayCellInner,
|
|
303
|
+
!disabled && !selected && {
|
|
304
|
+
backgroundColor: sysSurfaceContainerHighest
|
|
305
|
+
},
|
|
306
|
+
selected && {
|
|
307
|
+
backgroundColor: '#FFFFFF',
|
|
308
|
+
borderColor: sysPrimary,
|
|
309
|
+
borderWidth: 2
|
|
310
|
+
},
|
|
311
|
+
disabled && styles.dayCellDisabled
|
|
312
|
+
];
|
|
313
|
+
const textStyle = [
|
|
314
|
+
styles.dayText,
|
|
315
|
+
{
|
|
316
|
+
color: selected ? sysPrimary : sysOnSurface
|
|
317
|
+
}
|
|
318
|
+
];
|
|
319
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
|
|
320
|
+
testID: `calendar-day-${day}`,
|
|
321
|
+
style: styles.dayCell,
|
|
322
|
+
onPress: ()=>handleDayPress(day),
|
|
323
|
+
disabled: disabled,
|
|
324
|
+
accessibilityRole: "button",
|
|
325
|
+
accessibilityLabel: `Day ${day}`,
|
|
326
|
+
accessibilityState: {
|
|
327
|
+
disabled,
|
|
328
|
+
selected
|
|
329
|
+
},
|
|
330
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
331
|
+
style: cellStyle,
|
|
332
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
333
|
+
style: textStyle,
|
|
334
|
+
children: day
|
|
335
|
+
})
|
|
336
|
+
})
|
|
337
|
+
}, day);
|
|
338
|
+
})
|
|
339
|
+
}, wi))
|
|
340
|
+
]
|
|
341
|
+
}),
|
|
342
|
+
selectedDate != null && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
|
343
|
+
children: [
|
|
344
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
345
|
+
style: [
|
|
346
|
+
styles.divider,
|
|
347
|
+
{
|
|
348
|
+
backgroundColor: sysOutline
|
|
349
|
+
}
|
|
350
|
+
]
|
|
351
|
+
}),
|
|
352
|
+
/*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
353
|
+
style: styles.timeSection,
|
|
354
|
+
children: [
|
|
355
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
356
|
+
testID: "available-time-label",
|
|
357
|
+
style: [
|
|
358
|
+
styles.availableTimeLabel,
|
|
359
|
+
{
|
|
360
|
+
color: sysOnSurface
|
|
361
|
+
}
|
|
362
|
+
],
|
|
363
|
+
children: availableTimeLabel
|
|
364
|
+
}),
|
|
365
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.ScrollView, {
|
|
366
|
+
testID: "time-slot-list",
|
|
367
|
+
style: styles.timeList,
|
|
368
|
+
contentContainerStyle: styles.timeListContent,
|
|
369
|
+
showsVerticalScrollIndicator: false,
|
|
370
|
+
children: availableTimes.map((slot)=>{
|
|
371
|
+
const slotTestId = `time-slot-${slot.replace(/[: ]/g, '-')}`;
|
|
372
|
+
const slotSelected = slot === selectedTime;
|
|
373
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Pressable, {
|
|
374
|
+
testID: slotTestId,
|
|
375
|
+
onPress: ()=>onSelectTime(slot),
|
|
376
|
+
accessibilityRole: "button",
|
|
377
|
+
accessibilityState: {
|
|
378
|
+
selected: slotSelected
|
|
379
|
+
},
|
|
380
|
+
style: [
|
|
381
|
+
styles.timeSlot,
|
|
382
|
+
{
|
|
383
|
+
borderColor: slotSelected ? sysPrimary : sysOutline,
|
|
384
|
+
borderWidth: slotSelected ? 2 : 1.5,
|
|
385
|
+
backgroundColor: '#FFFFFF'
|
|
386
|
+
},
|
|
387
|
+
slotSelected && {
|
|
388
|
+
shadowColor: sysPrimary,
|
|
389
|
+
shadowOffset: {
|
|
390
|
+
width: 1,
|
|
391
|
+
height: 2
|
|
392
|
+
},
|
|
393
|
+
shadowOpacity: 1,
|
|
394
|
+
shadowRadius: 0,
|
|
395
|
+
elevation: 2
|
|
396
|
+
}
|
|
397
|
+
],
|
|
398
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
399
|
+
style: [
|
|
400
|
+
styles.timeSlotText,
|
|
401
|
+
{
|
|
402
|
+
color: slotSelected ? sysPrimary : sysOnSurface
|
|
403
|
+
}
|
|
404
|
+
],
|
|
405
|
+
children: slot
|
|
406
|
+
})
|
|
407
|
+
}, slot);
|
|
408
|
+
})
|
|
409
|
+
})
|
|
410
|
+
]
|
|
411
|
+
})
|
|
412
|
+
]
|
|
413
|
+
}),
|
|
414
|
+
(languageLabel || timezoneLabel) && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
|
415
|
+
children: [
|
|
416
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
417
|
+
style: [
|
|
418
|
+
styles.divider,
|
|
419
|
+
{
|
|
420
|
+
backgroundColor: sysOutline
|
|
421
|
+
}
|
|
422
|
+
]
|
|
423
|
+
}),
|
|
424
|
+
/*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
425
|
+
style: styles.infoRow,
|
|
426
|
+
testID: "calendar-info-row",
|
|
427
|
+
children: [
|
|
428
|
+
languageLabel && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
429
|
+
style: styles.infoItem,
|
|
430
|
+
testID: "calendar-language-info",
|
|
431
|
+
children: [
|
|
432
|
+
LanguagesIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(LanguagesIcon, {
|
|
433
|
+
size: 16,
|
|
434
|
+
color: sysOnSurfaceVariant
|
|
435
|
+
}),
|
|
436
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
437
|
+
style: [
|
|
438
|
+
styles.infoText,
|
|
439
|
+
{
|
|
440
|
+
color: sysOnSurfaceVariant
|
|
441
|
+
}
|
|
442
|
+
],
|
|
443
|
+
children: languageLabel
|
|
444
|
+
})
|
|
445
|
+
]
|
|
446
|
+
}),
|
|
447
|
+
timezoneLabel && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_reactnative.View, {
|
|
448
|
+
style: styles.infoItem,
|
|
449
|
+
testID: "calendar-timezone-info",
|
|
450
|
+
children: [
|
|
451
|
+
GlobeIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(GlobeIcon, {
|
|
452
|
+
size: 16,
|
|
453
|
+
color: sysOnSurfaceVariant
|
|
454
|
+
}),
|
|
455
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.Text, {
|
|
456
|
+
style: [
|
|
457
|
+
styles.infoText,
|
|
458
|
+
{
|
|
459
|
+
color: sysOnSurfaceVariant
|
|
460
|
+
}
|
|
461
|
+
],
|
|
462
|
+
children: timezoneLabel
|
|
463
|
+
})
|
|
464
|
+
]
|
|
465
|
+
})
|
|
466
|
+
]
|
|
467
|
+
})
|
|
468
|
+
]
|
|
469
|
+
})
|
|
470
|
+
]
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
const styles = _reactnative.StyleSheet.create({
|
|
474
|
+
card: {
|
|
475
|
+
borderRadius: 16,
|
|
476
|
+
borderWidth: 1,
|
|
477
|
+
overflow: 'hidden'
|
|
478
|
+
},
|
|
479
|
+
calendarSection: {
|
|
480
|
+
paddingHorizontal: 8,
|
|
481
|
+
paddingVertical: 16
|
|
482
|
+
},
|
|
483
|
+
monthNavRow: {
|
|
484
|
+
flexDirection: 'row',
|
|
485
|
+
alignItems: 'center',
|
|
486
|
+
justifyContent: 'space-between',
|
|
487
|
+
marginBottom: 8
|
|
488
|
+
},
|
|
489
|
+
navButton: {
|
|
490
|
+
padding: 8,
|
|
491
|
+
alignItems: 'center',
|
|
492
|
+
justifyContent: 'center'
|
|
493
|
+
},
|
|
494
|
+
navButtonDisabled: {
|
|
495
|
+
opacity: 0.3
|
|
496
|
+
},
|
|
497
|
+
navChevron: {
|
|
498
|
+
fontSize: 18,
|
|
499
|
+
fontWeight: '600'
|
|
500
|
+
},
|
|
501
|
+
monthLabel: {
|
|
502
|
+
fontSize: 16,
|
|
503
|
+
fontWeight: '600',
|
|
504
|
+
textAlign: 'center',
|
|
505
|
+
flex: 1
|
|
506
|
+
},
|
|
507
|
+
weekRow: {
|
|
508
|
+
flexDirection: 'row'
|
|
509
|
+
},
|
|
510
|
+
dayCell: {
|
|
511
|
+
flex: 1,
|
|
512
|
+
aspectRatio: 1,
|
|
513
|
+
alignItems: 'center',
|
|
514
|
+
justifyContent: 'center'
|
|
515
|
+
},
|
|
516
|
+
dayHeader: {
|
|
517
|
+
fontSize: 10,
|
|
518
|
+
fontWeight: '500',
|
|
519
|
+
textAlign: 'center'
|
|
520
|
+
},
|
|
521
|
+
dayCellInner: {
|
|
522
|
+
width: '80%',
|
|
523
|
+
aspectRatio: 1,
|
|
524
|
+
borderRadius: 100,
|
|
525
|
+
alignItems: 'center',
|
|
526
|
+
justifyContent: 'center',
|
|
527
|
+
backgroundColor: 'transparent',
|
|
528
|
+
borderWidth: 0,
|
|
529
|
+
borderColor: 'transparent'
|
|
530
|
+
},
|
|
531
|
+
dayCellDisabled: {
|
|
532
|
+
opacity: 0.3
|
|
533
|
+
},
|
|
534
|
+
dayText: {
|
|
535
|
+
fontSize: 13,
|
|
536
|
+
fontWeight: '500',
|
|
537
|
+
textAlign: 'center'
|
|
538
|
+
},
|
|
539
|
+
divider: {
|
|
540
|
+
height: 1,
|
|
541
|
+
width: '100%'
|
|
542
|
+
},
|
|
543
|
+
timeSection: {
|
|
544
|
+
padding: 16
|
|
545
|
+
},
|
|
546
|
+
availableTimeLabel: {
|
|
547
|
+
fontSize: 14,
|
|
548
|
+
fontWeight: '500',
|
|
549
|
+
textAlign: 'center',
|
|
550
|
+
marginBottom: 12
|
|
551
|
+
},
|
|
552
|
+
timeList: {
|
|
553
|
+
maxHeight: 200
|
|
554
|
+
},
|
|
555
|
+
timeListContent: {
|
|
556
|
+
gap: 8
|
|
557
|
+
},
|
|
558
|
+
timeSlot: {
|
|
559
|
+
borderRadius: 12,
|
|
560
|
+
paddingVertical: 12,
|
|
561
|
+
paddingHorizontal: 16,
|
|
562
|
+
alignItems: 'center',
|
|
563
|
+
justifyContent: 'center'
|
|
564
|
+
},
|
|
565
|
+
timeSlotText: {
|
|
566
|
+
fontSize: 14,
|
|
567
|
+
textAlign: 'center'
|
|
568
|
+
},
|
|
569
|
+
infoRow: {
|
|
570
|
+
flexDirection: 'row',
|
|
571
|
+
alignItems: 'center',
|
|
572
|
+
gap: 16,
|
|
573
|
+
paddingHorizontal: 16,
|
|
574
|
+
paddingVertical: 12
|
|
575
|
+
},
|
|
576
|
+
infoItem: {
|
|
577
|
+
flexDirection: 'row',
|
|
578
|
+
alignItems: 'center',
|
|
579
|
+
gap: 6
|
|
580
|
+
},
|
|
581
|
+
infoText: {
|
|
582
|
+
fontSize: 13,
|
|
583
|
+
fontWeight: '500'
|
|
584
|
+
}
|
|
585
|
+
});
|
|
586
|
+
|
|
587
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/react-native/src/components/DateTimePicker/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react';\r\n\r\nimport {\r\n I18nManager,\r\n Pressable,\r\n ScrollView,\r\n StyleSheet,\r\n Text,\r\n View,\r\n} from 'react-native';\r\n\r\nimport { resolveIcon } from '../../icons';\r\nimport { useTheme } from '../../theme';\r\n\r\nexport interface DateTimePickerProps {\r\n selectedDate: string | null;\r\n onSelectDate: (date: string) => void;\r\n selectedTime: string | null;\r\n onSelectTime: (time: string) => void;\r\n availableTimes: string[];\r\n availableTimeLabel: string;\r\n availableDates?: string[];\r\n maxMonthsAhead?: number;\r\n /** Display-only label for the user's current language, e.g. \"English\". Not interactive. */\r\n languageLabel?: string;\r\n /** Display-only label for the user's current timezone, e.g. \"America/Chicago\". Not interactive. */\r\n timezoneLabel?: string;\r\n}\r\n\r\nconst DAY_HEADERS = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\r\n\r\nfunction toLocalDateString(date: Date): string {\r\n const y = date.getFullYear();\r\n const m = String(date.getMonth() + 1).padStart(2, '0');\r\n const d = String(date.getDate()).padStart(2, '0');\r\n return `${y}-${m}-${d}`;\r\n}\r\n\r\nfunction addMonths(date: Date, count: number): Date {\r\n const result = new Date(date.getFullYear(), date.getMonth() + count, 1);\r\n return result;\r\n}\r\n\r\nexport function DateTimePicker({\r\n selectedDate,\r\n onSelectDate,\r\n selectedTime,\r\n onSelectTime,\r\n availableTimes,\r\n availableTimeLabel,\r\n availableDates,\r\n maxMonthsAhead = 1,\r\n languageLabel,\r\n timezoneLabel,\r\n}: DateTimePickerProps) {\r\n const { colorRoles: cr } = useTheme();\r\n\r\n const LanguagesIcon = resolveIcon('Languages');\r\n const GlobeIcon = resolveIcon('Globe');\r\n\r\n const today = useMemo(() => {\r\n const d = new Date();\r\n d.setHours(0, 0, 0, 0);\r\n return d;\r\n }, []);\r\n\r\n const maxDate = useMemo(() => {\r\n const d = addMonths(today, maxMonthsAhead);\r\n // Last day of the maxMonthsAhead month\r\n return new Date(d.getFullYear(), d.getMonth() + 1, 0);\r\n }, [today, maxMonthsAhead]);\r\n\r\n const [viewYear, setViewYear] = useState(today.getFullYear());\r\n const [viewMonth, setViewMonth] = useState(today.getMonth());\r\n\r\n const canGoPrev = useMemo(() => {\r\n return viewYear > today.getFullYear() || viewMonth > today.getMonth();\r\n }, [viewYear, viewMonth, today]);\r\n\r\n const canGoNext = useMemo(() => {\r\n const maxMonth = addMonths(today, maxMonthsAhead);\r\n return (\r\n viewYear < maxMonth.getFullYear() ||\r\n (viewYear === maxMonth.getFullYear() && viewMonth < maxMonth.getMonth())\r\n );\r\n }, [viewYear, viewMonth, today, maxMonthsAhead]);\r\n\r\n const handlePrevMonth = useCallback(() => {\r\n if (!canGoPrev) return;\r\n if (viewMonth === 0) {\r\n setViewMonth(11);\r\n setViewYear((y) => y - 1);\r\n } else {\r\n setViewMonth((m) => m - 1);\r\n }\r\n }, [canGoPrev, viewMonth]);\r\n\r\n const handleNextMonth = useCallback(() => {\r\n if (!canGoNext) return;\r\n if (viewMonth === 11) {\r\n setViewMonth(0);\r\n setViewYear((y) => y + 1);\r\n } else {\r\n setViewMonth((m) => m + 1);\r\n }\r\n }, [canGoNext, viewMonth]);\r\n\r\n const monthLabel = useMemo(() => {\r\n const d = new Date(viewYear, viewMonth, 1);\r\n return d.toLocaleString('default', { month: 'long', year: 'numeric' });\r\n }, [viewYear, viewMonth]);\r\n\r\n // Build calendar grid\r\n const calendarDays = useMemo(() => {\r\n const firstDay = new Date(viewYear, viewMonth, 1).getDay();\r\n const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();\r\n const cells: (number | null)[] = [];\r\n for (let i = 0; i < firstDay; i++) cells.push(null);\r\n for (let d = 1; d <= daysInMonth; d++) cells.push(d);\r\n // Pad to complete last row\r\n while (cells.length % 7 !== 0) cells.push(null);\r\n return cells;\r\n }, [viewYear, viewMonth]);\r\n\r\n const availableDatesSet = useMemo(\r\n () => (availableDates ? new Set(availableDates) : null),\r\n [availableDates],\r\n );\r\n\r\n const isDisabled = useCallback(\r\n (day: number) => {\r\n const d = new Date(viewYear, viewMonth, day);\r\n d.setHours(0, 0, 0, 0);\r\n if (d < today || d > maxDate) return true;\r\n if (availableDatesSet) {\r\n const dateStr = toLocalDateString(d);\r\n return !availableDatesSet.has(dateStr);\r\n }\r\n return false;\r\n },\r\n [viewYear, viewMonth, today, maxDate, availableDatesSet],\r\n );\r\n\r\n const isSelected = useCallback(\r\n (day: number) => {\r\n const d = new Date(viewYear, viewMonth, day);\r\n return toLocalDateString(d) === selectedDate;\r\n },\r\n [viewYear, viewMonth, selectedDate],\r\n );\r\n\r\n const handleDayPress = useCallback(\r\n (day: number) => {\r\n if (isDisabled(day)) return;\r\n const d = new Date(viewYear, viewMonth, day);\r\n onSelectDate(toLocalDateString(d));\r\n },\r\n [viewYear, viewMonth, isDisabled, onSelectDate],\r\n );\r\n\r\n const sysPrimary = cr.accent.primary.sysPrimary;\r\n const sysOutline = cr.outline.sysOutline;\r\n const sysOnSurface = cr.surface.surface.sysOnSurface;\r\n const sysOnSurfaceVariant = cr.surface.surface.sysOnSurfaceVariant;\r\n const sysSurfaceContainerHighest =\r\n cr.surface.surfaceContainer.sysSurfaceContainerHighest;\r\n\r\n const prevChevron = I18nManager.isRTL ? '>' : '<';\r\n const nextChevron = I18nManager.isRTL ? '<' : '>';\r\n\r\n const weeks: (number | null)[][] = [];\r\n for (let i = 0; i < calendarDays.length; i += 7) {\r\n weeks.push(calendarDays.slice(i, i + 7));\r\n }\r\n\r\n return (\r\n <View\r\n testID=\"calendar-picker\"\r\n style={[\r\n styles.card,\r\n { borderColor: sysOutline, backgroundColor: '#FFFFFF' },\r\n ]}\r\n >\r\n {/* Calendar section */}\r\n <View style={styles.calendarSection}>\r\n {/* Month nav row */}\r\n <View style={styles.monthNavRow}>\r\n <Pressable\r\n testID=\"calendar-prev-button\"\r\n onPress={handlePrevMonth}\r\n style={[styles.navButton, !canGoPrev && styles.navButtonDisabled]}\r\n disabled={!canGoPrev}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel=\"Previous month\"\r\n >\r\n <Text\r\n style={[\r\n styles.navChevron,\r\n { color: canGoPrev ? sysOnSurface : sysOnSurfaceVariant },\r\n ]}\r\n >\r\n {prevChevron}\r\n </Text>\r\n </Pressable>\r\n\r\n <Text\r\n testID=\"calendar-month-label\"\r\n style={[styles.monthLabel, { color: sysOnSurface }]}\r\n >\r\n {monthLabel}\r\n </Text>\r\n\r\n <Pressable\r\n testID=\"calendar-next-button\"\r\n onPress={handleNextMonth}\r\n style={[styles.navButton, !canGoNext && styles.navButtonDisabled]}\r\n disabled={!canGoNext}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel=\"Next month\"\r\n >\r\n <Text\r\n style={[\r\n styles.navChevron,\r\n { color: canGoNext ? sysOnSurface : sysOnSurfaceVariant },\r\n ]}\r\n >\r\n {nextChevron}\r\n </Text>\r\n </Pressable>\r\n </View>\r\n\r\n {/* Day headers */}\r\n <View style={styles.weekRow}>\r\n {DAY_HEADERS.map((h) => (\r\n <View key={h} style={styles.dayCell}>\r\n <Text\r\n testID={`day-header-${h}`}\r\n style={[styles.dayHeader, { color: sysOnSurfaceVariant }]}\r\n >\r\n {h}\r\n </Text>\r\n </View>\r\n ))}\r\n </View>\r\n\r\n {/* Week rows */}\r\n {weeks.map((week, wi) => (\r\n <View key={wi} style={styles.weekRow}>\r\n {week.map((day, di) => {\r\n if (day === null) {\r\n return <View key={`empty-${di}`} style={styles.dayCell} />;\r\n }\r\n const disabled = isDisabled(day);\r\n const selected = isSelected(day);\r\n\r\n const cellStyle = [\r\n styles.dayCellInner,\r\n !disabled &&\r\n !selected && { backgroundColor: sysSurfaceContainerHighest },\r\n selected && {\r\n backgroundColor: '#FFFFFF',\r\n borderColor: sysPrimary,\r\n borderWidth: 2,\r\n },\r\n disabled && styles.dayCellDisabled,\r\n ];\r\n\r\n const textStyle = [\r\n styles.dayText,\r\n { color: selected ? sysPrimary : sysOnSurface },\r\n ];\r\n\r\n return (\r\n <Pressable\r\n key={day}\r\n testID={`calendar-day-${day}`}\r\n style={styles.dayCell}\r\n onPress={() => handleDayPress(day)}\r\n disabled={disabled}\r\n accessibilityRole=\"button\"\r\n accessibilityLabel={`Day ${day}`}\r\n accessibilityState={{ disabled, selected }}\r\n >\r\n <View style={cellStyle}>\r\n <Text style={textStyle}>{day}</Text>\r\n </View>\r\n </Pressable>\r\n );\r\n })}\r\n </View>\r\n ))}\r\n </View>\r\n\r\n {/* Divider + time section */}\r\n {selectedDate != null && (\r\n <>\r\n <View style={[styles.divider, { backgroundColor: sysOutline }]} />\r\n <View style={styles.timeSection}>\r\n <Text\r\n testID=\"available-time-label\"\r\n style={[styles.availableTimeLabel, { color: sysOnSurface }]}\r\n >\r\n {availableTimeLabel}\r\n </Text>\r\n <ScrollView\r\n testID=\"time-slot-list\"\r\n style={styles.timeList}\r\n contentContainerStyle={styles.timeListContent}\r\n showsVerticalScrollIndicator={false}\r\n >\r\n {availableTimes.map((slot) => {\r\n const slotTestId = `time-slot-${slot.replace(/[: ]/g, '-')}`;\r\n const slotSelected = slot === selectedTime;\r\n return (\r\n <Pressable\r\n key={slot}\r\n testID={slotTestId}\r\n onPress={() => onSelectTime(slot)}\r\n accessibilityRole=\"button\"\r\n accessibilityState={{ selected: slotSelected }}\r\n style={[\r\n styles.timeSlot,\r\n {\r\n borderColor: slotSelected ? sysPrimary : sysOutline,\r\n borderWidth: slotSelected ? 2 : 1.5,\r\n backgroundColor: '#FFFFFF',\r\n },\r\n slotSelected && {\r\n shadowColor: sysPrimary,\r\n shadowOffset: { width: 1, height: 2 },\r\n shadowOpacity: 1,\r\n shadowRadius: 0,\r\n elevation: 2,\r\n },\r\n ]}\r\n >\r\n <Text\r\n style={[\r\n styles.timeSlotText,\r\n { color: slotSelected ? sysPrimary : sysOnSurface },\r\n ]}\r\n >\r\n {slot}\r\n </Text>\r\n </Pressable>\r\n );\r\n })}\r\n </ScrollView>\r\n </View>\r\n </>\r\n )}\r\n\r\n {/* Language / timezone info row — display-only, not interactive */}\r\n {(languageLabel || timezoneLabel) && (\r\n <>\r\n <View style={[styles.divider, { backgroundColor: sysOutline }]} />\r\n <View style={styles.infoRow} testID=\"calendar-info-row\">\r\n {languageLabel && (\r\n <View style={styles.infoItem} testID=\"calendar-language-info\">\r\n {LanguagesIcon && (\r\n <LanguagesIcon size={16} color={sysOnSurfaceVariant} />\r\n )}\r\n <Text style={[styles.infoText, { color: sysOnSurfaceVariant }]}>\r\n {languageLabel}\r\n </Text>\r\n </View>\r\n )}\r\n {timezoneLabel && (\r\n <View style={styles.infoItem} testID=\"calendar-timezone-info\">\r\n {GlobeIcon && (\r\n <GlobeIcon size={16} color={sysOnSurfaceVariant} />\r\n )}\r\n <Text style={[styles.infoText, { color: sysOnSurfaceVariant }]}>\r\n {timezoneLabel}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n card: {\r\n borderRadius: 16,\r\n borderWidth: 1,\r\n overflow: 'hidden',\r\n },\r\n calendarSection: {\r\n paddingHorizontal: 8,\r\n paddingVertical: 16,\r\n },\r\n monthNavRow: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n marginBottom: 8,\r\n },\r\n navButton: {\r\n padding: 8,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n navButtonDisabled: {\r\n opacity: 0.3,\r\n },\r\n navChevron: {\r\n fontSize: 18,\r\n fontWeight: '600',\r\n },\r\n monthLabel: {\r\n fontSize: 16,\r\n fontWeight: '600',\r\n textAlign: 'center',\r\n flex: 1,\r\n },\r\n weekRow: {\r\n flexDirection: 'row',\r\n },\r\n dayCell: {\r\n flex: 1,\r\n aspectRatio: 1,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n dayHeader: {\r\n fontSize: 10,\r\n fontWeight: '500',\r\n textAlign: 'center',\r\n },\r\n dayCellInner: {\r\n width: '80%',\r\n aspectRatio: 1,\r\n borderRadius: 100,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'transparent',\r\n borderWidth: 0,\r\n borderColor: 'transparent',\r\n },\r\n dayCellDisabled: {\r\n opacity: 0.3,\r\n },\r\n dayText: {\r\n fontSize: 13,\r\n fontWeight: '500',\r\n textAlign: 'center',\r\n },\r\n divider: {\r\n height: 1,\r\n width: '100%',\r\n },\r\n timeSection: {\r\n padding: 16,\r\n },\r\n availableTimeLabel: {\r\n fontSize: 14,\r\n fontWeight: '500',\r\n textAlign: 'center',\r\n marginBottom: 12,\r\n },\r\n timeList: {\r\n maxHeight: 200,\r\n },\r\n timeListContent: {\r\n gap: 8,\r\n },\r\n timeSlot: {\r\n borderRadius: 12,\r\n paddingVertical: 12,\r\n paddingHorizontal: 16,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n timeSlotText: {\r\n fontSize: 14,\r\n textAlign: 'center',\r\n },\r\n infoRow: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: 16,\r\n paddingHorizontal: 16,\r\n paddingVertical: 12,\r\n },\r\n infoItem: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: 6,\r\n },\r\n infoText: {\r\n fontSize: 13,\r\n fontWeight: '500',\r\n },\r\n});\r\n"],"names":["DateTimePicker","DAY_HEADERS","toLocalDateString","date","y","getFullYear","m","String","getMonth","padStart","d","getDate","addMonths","count","result","Date","selectedDate","onSelectDate","selectedTime","onSelectTime","availableTimes","availableTimeLabel","availableDates","maxMonthsAhead","languageLabel","timezoneLabel","colorRoles","cr","useTheme","LanguagesIcon","resolveIcon","GlobeIcon","today","useMemo","setHours","maxDate","viewYear","setViewYear","useState","viewMonth","setViewMonth","canGoPrev","canGoNext","maxMonth","handlePrevMonth","useCallback","handleNextMonth","monthLabel","toLocaleString","month","year","calendarDays","firstDay","getDay","daysInMonth","cells","i","push","length","availableDatesSet","Set","isDisabled","day","dateStr","has","isSelected","handleDayPress","sysPrimary","accent","primary","sysOutline","outline","sysOnSurface","surface","sysOnSurfaceVariant","sysSurfaceContainerHighest","surfaceContainer","prevChevron","I18nManager","isRTL","nextChevron","weeks","slice","View","testID","style","styles","card","borderColor","backgroundColor","calendarSection","monthNavRow","Pressable","onPress","navButton","navButtonDisabled","disabled","accessibilityRole","accessibilityLabel","Text","navChevron","color","weekRow","map","h","dayCell","dayHeader","week","wi","di","selected","cellStyle","dayCellInner","borderWidth","dayCellDisabled","textStyle","dayText","accessibilityState","divider","timeSection","ScrollView","timeList","contentContainerStyle","timeListContent","showsVerticalScrollIndicator","slot","slotTestId","replace","slotSelected","timeSlot","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","timeSlotText","infoRow","infoItem","size","infoText","StyleSheet","create","borderRadius","overflow","paddingHorizontal","paddingVertical","flexDirection","alignItems","justifyContent","marginBottom","padding","opacity","fontSize","fontWeight","textAlign","flex","aspectRatio","maxHeight","gap"],"mappings":"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"}
|
|
@@ -140,8 +140,7 @@ function Input({ size = 'md', label, helperText, errorText, invalid = false, lea
|
|
|
140
140
|
alignItems: 'center',
|
|
141
141
|
paddingHorizontal: s.paddingH,
|
|
142
142
|
paddingVertical: s.paddingV,
|
|
143
|
-
gap: s.gap
|
|
144
|
-
overflow: 'hidden'
|
|
143
|
+
gap: s.gap
|
|
145
144
|
},
|
|
146
145
|
children: [
|
|
147
146
|
leadingIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactnative.View, {
|
|
@@ -173,9 +172,9 @@ function Input({ size = 'md', label, helperText, errorText, invalid = false, lea
|
|
|
173
172
|
style: {
|
|
174
173
|
flex: 1,
|
|
175
174
|
fontSize: s.fontSize,
|
|
176
|
-
lineHeight: s.lineHeight,
|
|
177
175
|
color: textColor,
|
|
178
176
|
includeFontPadding: false,
|
|
177
|
+
textAlignVertical: 'center',
|
|
179
178
|
// Reset RN TextInput default padding/margin
|
|
180
179
|
padding: 0,
|
|
181
180
|
margin: 0
|