Skip to content

Commit d8fa10e

Browse files
authored
Inline date picker (#951)
1 parent 9b141af commit d8fa10e

File tree

6 files changed

+48
-25
lines changed

6 files changed

+48
-25
lines changed

packages/core/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"lottie-react-native": "6.5.1",
6363
"react-native-animated-spinkit": "1.5.2",
6464
"react-native-confirmation-code-field": "^7.3.1",
65+
"react-native-date-picker": "^5.0.7",
6566
"react-native-deck-swiper": "^2.0.12",
6667
"react-native-dropdown-picker": "^5.4.7-beta.1",
6768
"react-native-gesture-handler": "~2.14.0",

packages/core/src/components/DatePicker/DatePicker.tsx

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ type Props = {
6767
minimumDate?: Date | string;
6868
maximumDate?: Date | string;
6969
hideLabel?: boolean;
70+
inline?: boolean;
7071
} & IconSlot &
7172
TextInputProps;
7273

@@ -109,6 +110,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
109110
minimumDate,
110111
maximumDate,
111112
hideLabel = false,
113+
inline = false,
112114
...props
113115
}) => {
114116
const [value, setValue] = React.useState<Date | undefined>(
@@ -395,6 +397,27 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
395397
type === "solid" ? { marginHorizontal: 12 } : {},
396398
];
397399

400+
const Picker = (
401+
<DateTimePicker
402+
value={getValidDate()}
403+
mode={mode}
404+
isVisible={inline || pickerVisible}
405+
toggleVisibility={toggleVisibility}
406+
minimumDate={parseDate(minimumDate)}
407+
maximumDate={parseDate(maximumDate)}
408+
onChange={(_event: any, data: any) => {
409+
toggleVisibility();
410+
setValue(data);
411+
onDateChange(data);
412+
}}
413+
inline={inline}
414+
/>
415+
);
416+
417+
if (inline) {
418+
return <View style={style}>{Picker}</View>;
419+
}
420+
398421
return (
399422
<>
400423
<Touchable disabled={disabled} onPress={toggleVisibility}>
@@ -552,19 +575,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
552575
},
553576
]}
554577
>
555-
<DateTimePicker
556-
value={getValidDate()}
557-
mode={mode}
558-
isVisible={pickerVisible}
559-
toggleVisibility={toggleVisibility}
560-
minimumDate={parseDate(minimumDate)}
561-
maximumDate={parseDate(maximumDate)}
562-
onChange={(_event: any, data: any) => {
563-
toggleVisibility();
564-
setValue(data);
565-
onDateChange(data);
566-
}}
567-
/>
578+
{Picker}
568579
</View>
569580
</View>
570581
</Portal>

packages/core/src/components/DatePicker/DatePickerComponent.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from "react";
22
import { Platform } from "react-native";
3-
import DateTimePicker from "@react-native-community/datetimepicker";
3+
import DateTimePicker from "react-native-date-picker";
44
import DateTimePickerModal from "react-native-modal-datetime-picker";
55
import { DatePickerComponentProps as Props } from "./DatePickerComponentType";
66

@@ -11,8 +11,21 @@ const DatePickerComponent: React.FC<React.PropsWithChildren<Props>> = ({
1111
minimumDate,
1212
maximumDate,
1313
toggleVisibility,
14+
inline,
1415
}) => {
15-
return Platform.OS === "ios" || Platform.OS === "android" ? (
16+
if (inline) {
17+
return (
18+
<DateTimePicker
19+
date={value}
20+
mode={mode}
21+
onDateChange={onChange}
22+
minimumDate={minimumDate}
23+
maximumDate={maximumDate}
24+
/>
25+
);
26+
}
27+
28+
return (
1629
<DateTimePickerModal
1730
date={value}
1831
mode={mode}
@@ -28,15 +41,6 @@ const DatePickerComponent: React.FC<React.PropsWithChildren<Props>> = ({
2841
onChange(null, data);
2942
}}
3043
/>
31-
) : (
32-
<DateTimePicker
33-
value={value}
34-
mode={mode}
35-
onChange={onChange}
36-
display={"default"}
37-
minimumDate={minimumDate}
38-
maximumDate={maximumDate}
39-
/>
4044
);
4145
};
4246

packages/core/src/components/DatePicker/DatePickerComponent.web.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const DatePickerComponent: React.FC<Props & { theme: ReadTheme }> = ({
2222
isVisible,
2323
minimumDate,
2424
maximumDate,
25+
inline,
2526
theme,
2627
}) => {
2728
const internalTheme = createMuiTheme({
@@ -57,7 +58,7 @@ const DatePickerComponent: React.FC<Props & { theme: ReadTheme }> = ({
5758
onChange(null, d);
5859
}}
5960
onClose={() => toggleVisibility()}
60-
variant="dialog"
61+
variant={inline ? "static" : "dialog"}
6162
TextFieldComponent={() => null}
6263
minDate={minimumDate}
6364
maxDate={maximumDate}

packages/core/src/components/DatePicker/DatePickerComponentType.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ export interface DatePickerComponentProps {
77
isVisible?: boolean;
88
minimumDate?: Date;
99
maximumDate?: Date;
10+
inline?: boolean;
1011
theme?: ReadTheme;
1112
}

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12961,6 +12961,11 @@ react-native-confirmation-code-field@^7.3.1:
1296112961
resolved "https://registry.yarnpkg.com/react-native-confirmation-code-field/-/react-native-confirmation-code-field-7.3.1.tgz#e705ee5b73d7749cac29da287379fa8690904fe6"
1296212962
integrity sha512-5vI6BclB31e4vTYg0HmV/Vy9zI5MQZfHr1EN3kYzvaZq4GMIsyr6lrSmnQW1TtWR7Z8oURrhCpwo+JsWXxCoug==
1296312963

12964+
react-native-date-picker@^5.0.7:
12965+
version "5.0.7"
12966+
resolved "https://registry.yarnpkg.com/react-native-date-picker/-/react-native-date-picker-5.0.7.tgz#24161d30c6dca8627afe1aa5a55a389421fdfba4"
12967+
integrity sha512-/RodyCZWjb+f3f4YHqKbWFYczGm+tNngwbVSB6MLGgt5Kl7LQXpv4QE6ybnHW+DM4LteTP8A6lj8LEkQ7+usLQ==
12968+
1296412969
react-native-deck-swiper@^2.0.12:
1296512970
version "2.0.12"
1296612971
resolved "https://registry.yarnpkg.com/react-native-deck-swiper/-/react-native-deck-swiper-2.0.12.tgz#941ebfdd7e4e0cff316640dbe795a4a13714ddb5"

0 commit comments

Comments
 (0)