import {
useState
} from "react";
import {
View
} from "react-native";
import type IDateTimeSheetProps from "./type";
import stylesheet, {
useStyles
} from "./stylesheet";
import {
NCoreUIKitLocalize,
NCoreUIKitTheme
} from "../../core/hooks";
import DateSelector from "../dateSelector";
import TimeSelector from "../timeSelector";
import BottomSheet from "../bottomSheet";
import CheckBox from "../checkBox";
import Loading from "../loading";
import Button from "../button";
import Text from "../text";
const DateTimeSheet = ({
localeBasedFirstDayOfWeek = true,
isShowTodayIndicator = true,
dayOfWeekLength = "short",
LoadingIconComponentProp,
selectMultipleObject,
isWorkWithRealtime,
isShowTools = true,
dateTimePickerKey,
bottomSheetProps,
bottomSheetRef,
customLocalize,
selectObject,
customTheme,
setIsActive,
pickerType,
dateRange,
maxChoice,
minChoice,
isLoading,
isActive,
dateRule,
variant,
maxDate,
minDate,
cancel,
clean,
title,
date,
ok
}: IDateTimeSheetProps) => {
const {
spaces
} = NCoreUIKitTheme.useContext(customTheme);
const {
localize
} = NCoreUIKitLocalize.useContext(customLocalize);
const [
isSheetContentReady,
setIsSheetContentReady
] = useState(false);
const {
loadingContainer: loadingContainerDynamicStyle,
contentContainer: contentContainerDynamicStyle,
headerContainer: headerContainerDynamicStyle,
bottomContainer: bottomContainerDynamicStyle,
toolsContainer: toolsContainerDynamicStyle,
cancelButton: cancelButtonDynamicStyle,
headerTitle: headerTitleDynamicStyle,
okButton: okButtonDynamicStyle
} = useStyles({
spaces
});
const renderBottomSheetContent = () => {
if(isLoading) {
return
{LoadingIconComponentProp ? : }
;
}
return
{
pickerType === "time" ? null :
}
{
pickerType === "date" ? null :
}
;
};
const renderTools = () => {
if(!isShowTools) {
return null;
}
if(minChoice && maxChoice !== -1) {
return null;
}
let isAnySelected = false;
if(variant === "single" && date) {
isAnySelected = true;
}
if(variant === "range" && dateRange && (dateRange.start || dateRange.end)) {
isAnySelected = true;
}
if(variant === "rrule" && dateRule) {
isAnySelected = true;
}
return
{!minChoice ? {
clean();
}}
/> : null}
;
};
const renderBottomSheetHeader = () => {
return
{title ?
{title}
: null}
{renderTools()}
;
};
const renderBottomSheetBottom = () => {
if(isWorkWithRealtime) {
return null;
}
return
;
};
return {
return renderBottomSheetBottom();
}}
renderHeader={() => {
return renderBottomSheetHeader();
}}
onClosed={() => {
setIsActive(false);
}}
>
{renderBottomSheetContent()}
;
};
export default DateTimeSheet;