|
@@ -27,6 +27,7 @@ const DateTimeSheet = ({
|
|
|
dateTimePickerKey,
|
|
dateTimePickerKey,
|
|
|
isMultipleSelect,
|
|
isMultipleSelect,
|
|
|
bottomSheetProps,
|
|
bottomSheetProps,
|
|
|
|
|
+ isWorkWithRRule,
|
|
|
selectDateRule,
|
|
selectDateRule,
|
|
|
bottomSheetRef,
|
|
bottomSheetRef,
|
|
|
customLocalize,
|
|
customLocalize,
|
|
@@ -36,6 +37,7 @@ const DateTimeSheet = ({
|
|
|
setDateRule,
|
|
setDateRule,
|
|
|
customTheme,
|
|
customTheme,
|
|
|
setIsActive,
|
|
setIsActive,
|
|
|
|
|
+ pickerType,
|
|
|
dateRange,
|
|
dateRange,
|
|
|
maxChoice,
|
|
maxChoice,
|
|
|
minChoice,
|
|
minChoice,
|
|
@@ -92,108 +94,12 @@ const DateTimeSheet = ({
|
|
|
</View>;
|
|
</View>;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- const currentData = searchText && searchText.length ? searchedData : data;
|
|
|
|
|
-
|
|
|
|
|
return <View
|
|
return <View
|
|
|
style={[
|
|
style={[
|
|
|
contentContainerDynamicStyle
|
|
contentContainerDynamicStyle
|
|
|
]}
|
|
]}
|
|
|
>
|
|
>
|
|
|
- {
|
|
|
|
|
- currentData.map((item: T & SelectedItem | SelectedItem, index: number) => {
|
|
|
|
|
- const isSelected = mainSelectedItems.findIndex((sI: SelectedItem) => {
|
|
|
|
|
- return sI.__key === item.__key;
|
|
|
|
|
- }) !== -1;
|
|
|
|
|
-
|
|
|
|
|
- if(renderItem) {
|
|
|
|
|
- return renderItem({
|
|
|
|
|
- key: keyExtractor(item as T & SelectedItem, index),
|
|
|
|
|
- onSelect: (sItem) => {
|
|
|
|
|
- selectObject(sItem);
|
|
|
|
|
- },
|
|
|
|
|
- selectedItems: mainSelectedItems,
|
|
|
|
|
- setIsMoreLoading,
|
|
|
|
|
- setIsLoading,
|
|
|
|
|
- isSelected,
|
|
|
|
|
- searchText,
|
|
|
|
|
- index,
|
|
|
|
|
- item,
|
|
|
|
|
- data
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- let isDisabled = false;
|
|
|
|
|
-
|
|
|
|
|
- if(isMultipleSelect && !isSelected && maxChoice !== -1) {
|
|
|
|
|
- if(!maxChoice) {
|
|
|
|
|
- throw new Error("If you want to use the \"isMultipleSelect\" prop, you must be provide \"maxChoice\" prop.");
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- if(mainSelectedItems.length >= maxChoice) {
|
|
|
|
|
- isDisabled = true;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return <TouchableOpacity
|
|
|
|
|
- key={keyExtractor(item as T & SelectedItem, index)}
|
|
|
|
|
- disabled={isDisabled}
|
|
|
|
|
- style={[
|
|
|
|
|
- stylesheet.itemContainer,
|
|
|
|
|
- itemContainerDynamicStyle,
|
|
|
|
|
- {
|
|
|
|
|
- marginTop: index === 0 ? 0 : spaces.spacingSm,
|
|
|
|
|
- position: "relative"
|
|
|
|
|
- }
|
|
|
|
|
- ]}
|
|
|
|
|
- onPress={() => {
|
|
|
|
|
- if(isDisabled) {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- selectObject(item);
|
|
|
|
|
- }}
|
|
|
|
|
- >
|
|
|
|
|
- <View
|
|
|
|
|
- style={[
|
|
|
|
|
- stylesheet.itemContentContainer,
|
|
|
|
|
- {
|
|
|
|
|
- zIndex: 99999
|
|
|
|
|
- }
|
|
|
|
|
- ]}
|
|
|
|
|
- >
|
|
|
|
|
- <Text
|
|
|
|
|
- color={isSelected ? "emphasized" : undefined}
|
|
|
|
|
- >{item.__title}</Text>
|
|
|
|
|
- </View>
|
|
|
|
|
- <View
|
|
|
|
|
- style={[
|
|
|
|
|
- stylesheet.checkIconContainer,
|
|
|
|
|
- checkIconContainerDynamicStyle
|
|
|
|
|
- ]}
|
|
|
|
|
- >
|
|
|
|
|
- {isSelected ?
|
|
|
|
|
- <CheckIcon
|
|
|
|
|
- color={colors.content.icon.emphasized}
|
|
|
|
|
- size={24}
|
|
|
|
|
- /> : null}
|
|
|
|
|
- </View>
|
|
|
|
|
- {isDisabled ? <View
|
|
|
|
|
- style={[
|
|
|
|
|
- {
|
|
|
|
|
- backgroundColor: colors.system.disabled.content,
|
|
|
|
|
- borderRadius: radiuses.actions,
|
|
|
|
|
- position: "absolute",
|
|
|
|
|
- zIndex: 99998,
|
|
|
|
|
- bottom: 0,
|
|
|
|
|
- right: 0,
|
|
|
|
|
- left: 0,
|
|
|
|
|
- top: 0
|
|
|
|
|
- }
|
|
|
|
|
- ]}
|
|
|
|
|
- /> : null}
|
|
|
|
|
- </TouchableOpacity>;
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
</View>;
|
|
</View>;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -202,12 +108,22 @@ const DateTimeSheet = ({
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(!isMultipleSelect) {
|
|
|
|
|
|
|
+ if(minChoice && maxChoice !== -1) {
|
|
|
return null;
|
|
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 <View
|
|
return <View
|
|
@@ -217,7 +133,7 @@ const DateTimeSheet = ({
|
|
|
]}
|
|
]}
|
|
|
>
|
|
>
|
|
|
{!minChoice ? <CheckBox
|
|
{!minChoice ? <CheckBox
|
|
|
- isChecked={mainSelectedItems.length === 0 ? "checked" : null}
|
|
|
|
|
|
|
+ isChecked={isAnySelected ? "checked" : null}
|
|
|
title={localize("clean-all")}
|
|
title={localize("clean-all")}
|
|
|
spreadBehaviour="free"
|
|
spreadBehaviour="free"
|
|
|
onPress={() => {
|
|
onPress={() => {
|