@grupalia/rn-ui-kit 0.17.0 → 0.18.0
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/commonjs/components/DateTimeSelector.js +40 -14
- package/lib/commonjs/components/DateTimeSelector.js.map +1 -1
- package/lib/module/components/DateTimeSelector.js +40 -14
- package/lib/module/components/DateTimeSelector.js.map +1 -1
- package/lib/typescript/commonjs/components/DateTimeSelector.d.ts +2 -1
- package/lib/typescript/commonjs/components/DateTimeSelector.d.ts.map +1 -1
- package/lib/typescript/module/components/DateTimeSelector.d.ts +2 -1
- package/lib/typescript/module/components/DateTimeSelector.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/DateTimeSelector.tsx +53 -15
|
@@ -14,6 +14,14 @@ var _BaseText = _interopRequireDefault(require("./BaseText"));
|
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
|
+
function parseMilitaryTime(time) {
|
|
18
|
+
const hour = Math.floor(time / 100);
|
|
19
|
+
const minute = time % 100;
|
|
20
|
+
return {
|
|
21
|
+
hour,
|
|
22
|
+
minute
|
|
23
|
+
};
|
|
24
|
+
}
|
|
17
25
|
function TimeSlots({
|
|
18
26
|
timeSlots,
|
|
19
27
|
selectedTime,
|
|
@@ -78,9 +86,10 @@ function DateTimeSelector({
|
|
|
78
86
|
onChange,
|
|
79
87
|
minDate,
|
|
80
88
|
maxDate,
|
|
81
|
-
minHour =
|
|
82
|
-
maxHour =
|
|
83
|
-
|
|
89
|
+
minHour = 800,
|
|
90
|
+
maxHour = 2300,
|
|
91
|
+
timeSlotIntervalMinutes = 30,
|
|
92
|
+
timeSlotDurationMinutes,
|
|
84
93
|
disabledWeekDays = [],
|
|
85
94
|
disabledHours = [],
|
|
86
95
|
dateLabel,
|
|
@@ -105,20 +114,37 @@ function DateTimeSelector({
|
|
|
105
114
|
const getTimeSlotsForDate = (0, _react.useCallback)(date => {
|
|
106
115
|
const slots = [];
|
|
107
116
|
const now = new Date();
|
|
108
|
-
|
|
117
|
+
const minHourParsed = minHour >= 100 ? parseMilitaryTime(minHour) : {
|
|
118
|
+
hour: minHour,
|
|
119
|
+
minute: 0
|
|
120
|
+
};
|
|
121
|
+
const minHourInMinutes = minHourParsed.hour * 60 + minHourParsed.minute;
|
|
122
|
+
const maxHourParsed = maxHour >= 100 ? parseMilitaryTime(maxHour) : {
|
|
123
|
+
hour: maxHour,
|
|
124
|
+
minute: 0
|
|
125
|
+
};
|
|
126
|
+
const maxHourInMinutes = maxHourParsed.hour * 60 + maxHourParsed.minute;
|
|
127
|
+
for (let hour = 0; hour <= 23; hour += 1) {
|
|
109
128
|
if (disabledHours.includes(hour)) continue;
|
|
110
129
|
if (!allowPastDatetimes && (0, _dateFns.isToday)(date) && hour < now.getHours()) continue;
|
|
111
|
-
for (let minute = 0; minute < 60; minute +=
|
|
130
|
+
for (let minute = 0; minute < 60; minute += timeSlotIntervalMinutes) {
|
|
131
|
+
const currentTimeInMinutes = hour * 60 + minute;
|
|
132
|
+
if (currentTimeInMinutes < minHourInMinutes || currentTimeInMinutes > maxHourInMinutes) continue;
|
|
112
133
|
if (!allowPastDatetimes && (0, _dateFns.isToday)(date) && hour === now.getHours() && minute <= now.getMinutes()) continue;
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
const endHour =
|
|
116
|
-
const endMinute =
|
|
134
|
+
const startTimeInMinutes = hour * 60 + minute;
|
|
135
|
+
const endTimeInMinutes = startTimeInMinutes + (timeSlotDurationMinutes || 0);
|
|
136
|
+
const endHour = Math.floor(endTimeInMinutes / 60);
|
|
137
|
+
const endMinute = endTimeInMinutes % 60;
|
|
117
138
|
const startTime = new Date().setHours(hour, minute);
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
139
|
+
const startLabel = (0, _dateFns.format)(startTime, 'H:mm');
|
|
140
|
+
let hourLabel;
|
|
141
|
+
if (timeSlotDurationMinutes && timeSlotDurationMinutes > 0) {
|
|
142
|
+
const endTimeForLabel = new Date().setHours(endHour, endMinute);
|
|
143
|
+
const endLabel = (0, _dateFns.format)(endTimeForLabel, 'H:mm');
|
|
144
|
+
hourLabel = `${startLabel} - ${endLabel}`;
|
|
145
|
+
} else {
|
|
146
|
+
hourLabel = startLabel;
|
|
147
|
+
}
|
|
122
148
|
slots.push({
|
|
123
149
|
hour,
|
|
124
150
|
minute,
|
|
@@ -129,7 +155,7 @@ function DateTimeSelector({
|
|
|
129
155
|
}
|
|
130
156
|
}
|
|
131
157
|
return slots;
|
|
132
|
-
}, [minHour, maxHour,
|
|
158
|
+
}, [minHour, maxHour, timeSlotIntervalMinutes, timeSlotDurationMinutes, disabledHours, allowPastDatetimes]);
|
|
133
159
|
const timeSlots = (0, _react.useMemo)(() => {
|
|
134
160
|
if (!selectedDate) return [];
|
|
135
161
|
return getTimeSlotsForDate(selectedDate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dateFns","require","_nativewind","_react","_interopRequireWildcard","_hocComponents","_BaseDatesScrollView","_interopRequireDefault","_BaseRadioGroup","_BaseText","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TimeSlots","timeSlots","selectedTime","handleTimePress","disabled","timeLabel","radioOptions","map","slot","label","value","hour","minute","selectedValue","undefined","handleRadioChange","split","Number","jsxs","View","className","children","jsx","GestureScrollView","style","flex","minHeight","showsVerticalScrollIndicator","nestedScrollEnabled","options","onChange","length","LinearGradient","colors","start","x","y","end","pointerEvents","DateTimeSelector","minDate","maxDate","minHour","maxHour","timeSlotStepMinutes","disabledWeekDays","disabledHours","dateLabel","description","error","allowPastDatetimes","props","selectedDate","setSelectedDate","useState","minDateStartOfDay","useMemo","startOfDay","Date","maxDateEndOfDay","dateRange","startDate","endDate","addDays","eachDayOfInterval","getTimeSlotsForDate","useCallback","date","slots","now","includes","isToday","getHours","getMinutes","endTime","setHours","endHour","endMinute","startTime","endTimeForLabel","startLabel","format","endLabel","hourLabel","push","isDayDisabled","day","isBefore","isAfter","getDay","availableSlots","handleDayPress","time","newDate","isSameDay","onDayPress","_default","exports","styled"],"sourceRoot":"../../../src","sources":["components/DateTimeSelector.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_dateFns","require","_nativewind","_react","_interopRequireWildcard","_hocComponents","_BaseDatesScrollView","_interopRequireDefault","_BaseRadioGroup","_BaseText","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","parseMilitaryTime","time","hour","Math","floor","minute","TimeSlots","timeSlots","selectedTime","handleTimePress","disabled","timeLabel","radioOptions","map","slot","label","value","selectedValue","undefined","handleRadioChange","split","Number","jsxs","View","className","children","jsx","GestureScrollView","style","flex","minHeight","showsVerticalScrollIndicator","nestedScrollEnabled","options","onChange","length","LinearGradient","colors","start","x","y","end","pointerEvents","DateTimeSelector","minDate","maxDate","minHour","maxHour","timeSlotIntervalMinutes","timeSlotDurationMinutes","disabledWeekDays","disabledHours","dateLabel","description","error","allowPastDatetimes","props","selectedDate","setSelectedDate","useState","minDateStartOfDay","useMemo","startOfDay","Date","maxDateEndOfDay","dateRange","startDate","endDate","addDays","eachDayOfInterval","getTimeSlotsForDate","useCallback","date","slots","now","minHourParsed","minHourInMinutes","maxHourParsed","maxHourInMinutes","includes","isToday","getHours","currentTimeInMinutes","getMinutes","startTimeInMinutes","endTimeInMinutes","endHour","endMinute","startTime","setHours","startLabel","format","hourLabel","endTimeForLabel","endLabel","push","isDayDisabled","day","isBefore","isAfter","getDay","availableSlots","handleDayPress","newDate","isSameDay","onDayPress","_default","exports","styled"],"sourceRoot":"../../../src","sources":["components/DateTimeSelector.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,14 @@ import BaseDatesScrollView from "./BaseDatesScrollView.js";
|
|
|
8
8
|
import BaseRadioGroup from "./BaseRadioGroup.js";
|
|
9
9
|
import BaseText from "./BaseText.js";
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
function parseMilitaryTime(time) {
|
|
12
|
+
const hour = Math.floor(time / 100);
|
|
13
|
+
const minute = time % 100;
|
|
14
|
+
return {
|
|
15
|
+
hour,
|
|
16
|
+
minute
|
|
17
|
+
};
|
|
18
|
+
}
|
|
11
19
|
function TimeSlots({
|
|
12
20
|
timeSlots,
|
|
13
21
|
selectedTime,
|
|
@@ -72,9 +80,10 @@ function DateTimeSelector({
|
|
|
72
80
|
onChange,
|
|
73
81
|
minDate,
|
|
74
82
|
maxDate,
|
|
75
|
-
minHour =
|
|
76
|
-
maxHour =
|
|
77
|
-
|
|
83
|
+
minHour = 800,
|
|
84
|
+
maxHour = 2300,
|
|
85
|
+
timeSlotIntervalMinutes = 30,
|
|
86
|
+
timeSlotDurationMinutes,
|
|
78
87
|
disabledWeekDays = [],
|
|
79
88
|
disabledHours = [],
|
|
80
89
|
dateLabel,
|
|
@@ -99,20 +108,37 @@ function DateTimeSelector({
|
|
|
99
108
|
const getTimeSlotsForDate = useCallback(date => {
|
|
100
109
|
const slots = [];
|
|
101
110
|
const now = new Date();
|
|
102
|
-
|
|
111
|
+
const minHourParsed = minHour >= 100 ? parseMilitaryTime(minHour) : {
|
|
112
|
+
hour: minHour,
|
|
113
|
+
minute: 0
|
|
114
|
+
};
|
|
115
|
+
const minHourInMinutes = minHourParsed.hour * 60 + minHourParsed.minute;
|
|
116
|
+
const maxHourParsed = maxHour >= 100 ? parseMilitaryTime(maxHour) : {
|
|
117
|
+
hour: maxHour,
|
|
118
|
+
minute: 0
|
|
119
|
+
};
|
|
120
|
+
const maxHourInMinutes = maxHourParsed.hour * 60 + maxHourParsed.minute;
|
|
121
|
+
for (let hour = 0; hour <= 23; hour += 1) {
|
|
103
122
|
if (disabledHours.includes(hour)) continue;
|
|
104
123
|
if (!allowPastDatetimes && isToday(date) && hour < now.getHours()) continue;
|
|
105
|
-
for (let minute = 0; minute < 60; minute +=
|
|
124
|
+
for (let minute = 0; minute < 60; minute += timeSlotIntervalMinutes) {
|
|
125
|
+
const currentTimeInMinutes = hour * 60 + minute;
|
|
126
|
+
if (currentTimeInMinutes < minHourInMinutes || currentTimeInMinutes > maxHourInMinutes) continue;
|
|
106
127
|
if (!allowPastDatetimes && isToday(date) && hour === now.getHours() && minute <= now.getMinutes()) continue;
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
const endHour =
|
|
110
|
-
const endMinute =
|
|
128
|
+
const startTimeInMinutes = hour * 60 + minute;
|
|
129
|
+
const endTimeInMinutes = startTimeInMinutes + (timeSlotDurationMinutes || 0);
|
|
130
|
+
const endHour = Math.floor(endTimeInMinutes / 60);
|
|
131
|
+
const endMinute = endTimeInMinutes % 60;
|
|
111
132
|
const startTime = new Date().setHours(hour, minute);
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
133
|
+
const startLabel = format(startTime, 'H:mm');
|
|
134
|
+
let hourLabel;
|
|
135
|
+
if (timeSlotDurationMinutes && timeSlotDurationMinutes > 0) {
|
|
136
|
+
const endTimeForLabel = new Date().setHours(endHour, endMinute);
|
|
137
|
+
const endLabel = format(endTimeForLabel, 'H:mm');
|
|
138
|
+
hourLabel = `${startLabel} - ${endLabel}`;
|
|
139
|
+
} else {
|
|
140
|
+
hourLabel = startLabel;
|
|
141
|
+
}
|
|
116
142
|
slots.push({
|
|
117
143
|
hour,
|
|
118
144
|
minute,
|
|
@@ -123,7 +149,7 @@ function DateTimeSelector({
|
|
|
123
149
|
}
|
|
124
150
|
}
|
|
125
151
|
return slots;
|
|
126
|
-
}, [minHour, maxHour,
|
|
152
|
+
}, [minHour, maxHour, timeSlotIntervalMinutes, timeSlotDurationMinutes, disabledHours, allowPastDatetimes]);
|
|
127
153
|
const timeSlots = useMemo(() => {
|
|
128
154
|
if (!selectedDate) return [];
|
|
129
155
|
return getTimeSlotsForDate(selectedDate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["format","eachDayOfInterval","isSameDay","isBefore","isAfter","getDay","addDays","startOfDay","isToday","styled","React","useMemo","useCallback","useState","View","GestureScrollView","LinearGradient","BaseDatesScrollView","BaseRadioGroup","BaseText","jsx","_jsx","jsxs","_jsxs","TimeSlots","timeSlots","selectedTime","handleTimePress","disabled","timeLabel","radioOptions","map","slot","label","value","
|
|
1
|
+
{"version":3,"names":["format","eachDayOfInterval","isSameDay","isBefore","isAfter","getDay","addDays","startOfDay","isToday","styled","React","useMemo","useCallback","useState","View","GestureScrollView","LinearGradient","BaseDatesScrollView","BaseRadioGroup","BaseText","jsx","_jsx","jsxs","_jsxs","parseMilitaryTime","time","hour","Math","floor","minute","TimeSlots","timeSlots","selectedTime","handleTimePress","disabled","timeLabel","radioOptions","map","slot","label","value","selectedValue","undefined","handleRadioChange","split","Number","className","children","style","flex","minHeight","showsVerticalScrollIndicator","nestedScrollEnabled","options","onChange","length","colors","start","x","y","end","pointerEvents","DateTimeSelector","minDate","maxDate","minHour","maxHour","timeSlotIntervalMinutes","timeSlotDurationMinutes","disabledWeekDays","disabledHours","dateLabel","description","error","allowPastDatetimes","props","selectedDate","setSelectedDate","minDateStartOfDay","Date","maxDateEndOfDay","dateRange","startDate","endDate","getTimeSlotsForDate","date","slots","now","minHourParsed","minHourInMinutes","maxHourParsed","maxHourInMinutes","includes","getHours","currentTimeInMinutes","getMinutes","startTimeInMinutes","endTimeInMinutes","endHour","endMinute","startTime","setHours","startLabel","hourLabel","endTimeForLabel","endLabel","push","isDayDisabled","day","availableSlots","handleDayPress","newDate","onDayPress"],"sourceRoot":"../../../src","sources":["components/DateTimeSelector.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,8 @@ export interface DateTimeSelectorProps extends ViewProps {
|
|
|
7
7
|
maxDate?: Date;
|
|
8
8
|
minHour?: number;
|
|
9
9
|
maxHour?: number;
|
|
10
|
-
|
|
10
|
+
timeSlotIntervalMinutes?: number;
|
|
11
|
+
timeSlotDurationMinutes?: number;
|
|
11
12
|
disabledWeekDays?: number[];
|
|
12
13
|
disabledHours?: number[];
|
|
13
14
|
dateLabel?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/DateTimeSelector.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DateTimeSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/DateTimeSelector.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsFzC,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;;;;;;;AA2LD,wBAAwC"}
|
|
@@ -7,7 +7,8 @@ export interface DateTimeSelectorProps extends ViewProps {
|
|
|
7
7
|
maxDate?: Date;
|
|
8
8
|
minHour?: number;
|
|
9
9
|
maxHour?: number;
|
|
10
|
-
|
|
10
|
+
timeSlotIntervalMinutes?: number;
|
|
11
|
+
timeSlotDurationMinutes?: number;
|
|
11
12
|
disabledWeekDays?: number[];
|
|
12
13
|
disabledHours?: number[];
|
|
13
14
|
dateLabel?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/DateTimeSelector.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DateTimeSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/DateTimeSelector.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsFzC,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;;;;;;;AA2LD,wBAAwC"}
|
package/package.json
CHANGED
|
@@ -18,6 +18,12 @@ import BaseDatesScrollView from './BaseDatesScrollView';
|
|
|
18
18
|
import BaseRadioGroup, { RadioOption } from './BaseRadioGroup';
|
|
19
19
|
import BaseText from './BaseText';
|
|
20
20
|
|
|
21
|
+
function parseMilitaryTime(time: number): { hour: number; minute: number } {
|
|
22
|
+
const hour = Math.floor(time / 100);
|
|
23
|
+
const minute = time % 100;
|
|
24
|
+
return { hour, minute };
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
interface TimeSlot {
|
|
22
28
|
hour: number;
|
|
23
29
|
minute: number;
|
|
@@ -98,7 +104,8 @@ export interface DateTimeSelectorProps extends ViewProps {
|
|
|
98
104
|
maxDate?: Date;
|
|
99
105
|
minHour?: number;
|
|
100
106
|
maxHour?: number;
|
|
101
|
-
|
|
107
|
+
timeSlotIntervalMinutes?: number;
|
|
108
|
+
timeSlotDurationMinutes?: number;
|
|
102
109
|
disabledWeekDays?: number[];
|
|
103
110
|
disabledHours?: number[];
|
|
104
111
|
dateLabel?: string;
|
|
@@ -115,9 +122,10 @@ function DateTimeSelector({
|
|
|
115
122
|
onChange,
|
|
116
123
|
minDate,
|
|
117
124
|
maxDate,
|
|
118
|
-
minHour =
|
|
119
|
-
maxHour =
|
|
120
|
-
|
|
125
|
+
minHour = 800,
|
|
126
|
+
maxHour = 2300,
|
|
127
|
+
timeSlotIntervalMinutes = 30,
|
|
128
|
+
timeSlotDurationMinutes,
|
|
121
129
|
disabledWeekDays = [],
|
|
122
130
|
disabledHours = [],
|
|
123
131
|
dateLabel,
|
|
@@ -144,11 +152,28 @@ function DateTimeSelector({
|
|
|
144
152
|
const slots: TimeSlot[] = [];
|
|
145
153
|
const now = new Date();
|
|
146
154
|
|
|
147
|
-
|
|
155
|
+
const minHourParsed = minHour >= 100
|
|
156
|
+
? parseMilitaryTime(minHour)
|
|
157
|
+
: { hour: minHour, minute: 0 };
|
|
158
|
+
const minHourInMinutes = minHourParsed.hour * 60 + minHourParsed.minute;
|
|
159
|
+
|
|
160
|
+
const maxHourParsed = maxHour >= 100
|
|
161
|
+
? parseMilitaryTime(maxHour)
|
|
162
|
+
: { hour: maxHour, minute: 0 };
|
|
163
|
+
const maxHourInMinutes = maxHourParsed.hour * 60 + maxHourParsed.minute;
|
|
164
|
+
|
|
165
|
+
for (let hour = 0; hour <= 23; hour += 1) {
|
|
148
166
|
if (disabledHours.includes(hour)) continue;
|
|
149
167
|
if (!allowPastDatetimes && isToday(date) && hour < now.getHours()) continue;
|
|
150
168
|
|
|
151
|
-
for (let minute = 0; minute < 60; minute +=
|
|
169
|
+
for (let minute = 0; minute < 60; minute += timeSlotIntervalMinutes) {
|
|
170
|
+
const currentTimeInMinutes = hour * 60 + minute;
|
|
171
|
+
|
|
172
|
+
if (
|
|
173
|
+
currentTimeInMinutes < minHourInMinutes
|
|
174
|
+
|| currentTimeInMinutes > maxHourInMinutes
|
|
175
|
+
) continue;
|
|
176
|
+
|
|
152
177
|
if (
|
|
153
178
|
!allowPastDatetimes
|
|
154
179
|
&& isToday(date)
|
|
@@ -156,16 +181,22 @@ function DateTimeSelector({
|
|
|
156
181
|
&& minute <= now.getMinutes()
|
|
157
182
|
) continue;
|
|
158
183
|
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
const endHour =
|
|
162
|
-
const endMinute =
|
|
184
|
+
const startTimeInMinutes = hour * 60 + minute;
|
|
185
|
+
const endTimeInMinutes = startTimeInMinutes + (timeSlotDurationMinutes || 0);
|
|
186
|
+
const endHour = Math.floor(endTimeInMinutes / 60);
|
|
187
|
+
const endMinute = endTimeInMinutes % 60;
|
|
163
188
|
|
|
164
189
|
const startTime = new Date().setHours(hour, minute);
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
190
|
+
const startLabel = format(startTime, 'H:mm');
|
|
191
|
+
|
|
192
|
+
let hourLabel: string;
|
|
193
|
+
if (timeSlotDurationMinutes && timeSlotDurationMinutes > 0) {
|
|
194
|
+
const endTimeForLabel = new Date().setHours(endHour, endMinute);
|
|
195
|
+
const endLabel = format(endTimeForLabel, 'H:mm');
|
|
196
|
+
hourLabel = `${startLabel} - ${endLabel}`;
|
|
197
|
+
} else {
|
|
198
|
+
hourLabel = startLabel;
|
|
199
|
+
}
|
|
169
200
|
|
|
170
201
|
slots.push({
|
|
171
202
|
hour, minute, endHour, endMinute, label: hourLabel,
|
|
@@ -174,7 +205,14 @@ function DateTimeSelector({
|
|
|
174
205
|
}
|
|
175
206
|
|
|
176
207
|
return slots;
|
|
177
|
-
}, [
|
|
208
|
+
}, [
|
|
209
|
+
minHour,
|
|
210
|
+
maxHour,
|
|
211
|
+
timeSlotIntervalMinutes,
|
|
212
|
+
timeSlotDurationMinutes,
|
|
213
|
+
disabledHours,
|
|
214
|
+
allowPastDatetimes,
|
|
215
|
+
]);
|
|
178
216
|
|
|
179
217
|
const timeSlots = useMemo<TimeSlot[]>(() => {
|
|
180
218
|
if (!selectedDate) return [];
|