u
This commit is contained in:
1 parent
173eb2dd37
commit
26ff2381b7
17 files changed
+596
-305
No files matched your search
@@ -37,6 +37,7 @@ interface DateMorePickerProps {
|
||||
endTime: string
|
||||
}) => void
|
||||
hiddenModes?: DateMorePickerMode[]
|
||||
oneMode?: DateMorePickerMode
|
||||
onChange?: (mode: DateMorePickerMode) => void
|
||||
}
|
||||
|
||||
@@ -108,6 +109,7 @@ export default function DateMorePicker({
|
||||
onClose,
|
||||
onConfirm,
|
||||
onChange,
|
||||
oneMode,
|
||||
hiddenModes = [],
|
||||
}: DateMorePickerProps) {
|
||||
const [localVisible, setLocalVisible] = useState(false)
|
||||
@@ -249,6 +251,13 @@ export default function DateMorePicker({
|
||||
]
|
||||
|
||||
const visibleTabItems = tabItems.filter((item) => {
|
||||
if (oneMode) {
|
||||
if (oneMode === item.key) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
if (item.key === 'unlimited' && isHidden('unlimited'))
|
||||
return false
|
||||
if (item.key === 'range' && isHidden('range'))
|
||||
@@ -271,6 +280,12 @@ export default function DateMorePicker({
|
||||
]
|
||||
|
||||
const visibleCoreModeOptions = coreModeOptions.filter((item) => {
|
||||
if (oneMode) {
|
||||
if (oneMode === item.mode) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
if (item.mode === 'date' && isHidden('date'))
|
||||
return false
|
||||
if (item.mode === 'month' && isHidden('month'))
|
||||
@@ -293,9 +308,6 @@ export default function DateMorePicker({
|
||||
const canConfirm = (() => {
|
||||
if (internalMode !== 'range')
|
||||
return true
|
||||
console.log(internalMode)
|
||||
console.log(internalStart)
|
||||
console.log(internalEnd)
|
||||
|
||||
const startValid = dayjs(internalStart).isValid()
|
||||
const endValid = dayjs(internalEnd).isValid()
|
||||
@@ -323,7 +335,7 @@ export default function DateMorePicker({
|
||||
</View>
|
||||
|
||||
{/* 模式选择 */}
|
||||
{!['unlimited', 'range'].includes(internalMode) && (
|
||||
{!oneMode && !['unlimited', 'range'].includes(internalMode) && (
|
||||
<View className="mb-2">
|
||||
<Text className="text-lg mb-1">选择模式</Text>
|
||||
{visibleCoreModeOptions.length > 0 && (
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { IDatePickerProps } from '@yz1311/react-native-wheel-picker'
|
||||
import SegmentedControl from '@react-native-segmented-control/segmented-control'
|
||||
import { DatePicker } from '@yz1311/react-native-wheel-picker'
|
||||
import dayjs from 'dayjs'
|
||||
import React, { useEffect, useRef, useState } from 'react'
|
||||
@@ -33,6 +32,7 @@ export default function ADatePicker({
|
||||
date,
|
||||
show = false,
|
||||
onClose,
|
||||
mode = 'date',
|
||||
onConfirm,
|
||||
format,
|
||||
...restProps
|
||||
@@ -40,8 +40,6 @@ export default function ADatePicker({
|
||||
const fadeAnim = useRef(new Animated.Value(0)).current
|
||||
const slideAnim = useRef(new Animated.Value(300)).current
|
||||
const [visible, setVisible] = useState(show)
|
||||
const [index, setIndex] = useState(0)
|
||||
const [mode, setMode] = useState<DatePickerMode>('month')
|
||||
|
||||
// 使用传入 format 或默认 format
|
||||
const finalFormat = format || defaultFormatMap[mode]
|
||||
@@ -83,58 +81,6 @@ export default function ADatePicker({
|
||||
<Animated.View
|
||||
style={[styles.pickerContainer, { transform: [{ translateY: slideAnim }] }]}
|
||||
>
|
||||
<View className="px-3 pt-2 flex flex-col gap-2">
|
||||
<View className="w-full">
|
||||
<Text>快速选择</Text>
|
||||
{/* <ATab
|
||||
data={[
|
||||
{
|
||||
label: '自定义',
|
||||
key: '自定义',
|
||||
},
|
||||
{
|
||||
label: '不限',
|
||||
key: '不限',
|
||||
},
|
||||
{
|
||||
label: '今天',
|
||||
key: '今天',
|
||||
},
|
||||
{
|
||||
label: '本月',
|
||||
key: '本月',
|
||||
},
|
||||
{
|
||||
label: '本年',
|
||||
key: '本年',
|
||||
},
|
||||
{
|
||||
label: '范围',
|
||||
key: '范围',
|
||||
},
|
||||
]}
|
||||
onChange={(key) => {
|
||||
setMode('datetime')
|
||||
}}
|
||||
/> */}
|
||||
</View>
|
||||
|
||||
<View className="w-full">
|
||||
<Text>选择模式</Text>
|
||||
<SegmentedControl
|
||||
values={['日', '月', '年', '时间', '日期']}
|
||||
selectedIndex={index}
|
||||
style={{ borderRadius: 2, width: '100%' }}
|
||||
sliderStyle={{
|
||||
borderRadius: 2,
|
||||
}}
|
||||
|
||||
onChange={(event: any) => setIndex(event.nativeEvent.selectedSegmentIndex)}
|
||||
/>
|
||||
</View>
|
||||
|
||||
</View>
|
||||
|
||||
<DatePicker
|
||||
{...restProps}
|
||||
date={toDate(date)}
|
||||
@@ -142,16 +88,10 @@ export default function ADatePicker({
|
||||
isModal={false}
|
||||
onPickerCancel={handleCancel}
|
||||
onPickerConfirm={handleConfirm}
|
||||
showHeader={false}
|
||||
onDateChange={(value) => {
|
||||
console.log(value)
|
||||
handleConfirm(value)
|
||||
}}
|
||||
/>
|
||||
|
||||
<View className="flex flex-row gap-4 px-3 pb-1 v">
|
||||
{/* <AButton variant="outline" className="flex-1">取消</AButton>
|
||||
<AButton className="flex-1">确认</AButton> */}
|
||||
</View>
|
||||
</Animated.View>
|
||||
</Modal>
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user