mirror of
https://github.com/langgenius/dify.git
synced 2025-08-01 05:47:27 +00:00

Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Novice <novice12185727@gmail.com>
74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import React, { type FC } from 'react'
|
|
import { useTimeOptions } from '../hooks'
|
|
import type { TimeOptionsProps } from '../types'
|
|
import OptionListItem from '../common/option-list-item'
|
|
|
|
const Options: FC<TimeOptionsProps> = ({
|
|
selectedTime,
|
|
minuteFilter,
|
|
handleSelectHour,
|
|
handleSelectMinute,
|
|
handleSelectPeriod,
|
|
}) => {
|
|
const { hourOptions, minuteOptions, periodOptions } = useTimeOptions()
|
|
|
|
return (
|
|
<div className='grid grid-cols-3 gap-x-1 p-2'>
|
|
{/* Hour */}
|
|
<ul className='no-scrollbar flex h-[208px] flex-col gap-y-0.5 overflow-y-auto pb-[184px]'>
|
|
{
|
|
hourOptions.map((hour) => {
|
|
const isSelected = selectedTime?.format('hh') === hour
|
|
return (
|
|
<OptionListItem
|
|
key={hour}
|
|
isSelected={isSelected}
|
|
onClick={handleSelectHour.bind(null, hour)}
|
|
>
|
|
{hour}
|
|
</OptionListItem>
|
|
)
|
|
})
|
|
}
|
|
</ul>
|
|
{/* Minute */}
|
|
<ul className='no-scrollbar flex h-[208px] flex-col gap-y-0.5 overflow-y-auto pb-[184px]'>
|
|
{
|
|
(minuteFilter ? minuteFilter(minuteOptions) : minuteOptions).map((minute) => {
|
|
const isSelected = selectedTime?.format('mm') === minute
|
|
return (
|
|
<OptionListItem
|
|
key={minute}
|
|
isSelected={isSelected}
|
|
onClick={handleSelectMinute.bind(null, minute)}
|
|
>
|
|
{minute}
|
|
</OptionListItem>
|
|
)
|
|
})
|
|
}
|
|
</ul>
|
|
{/* Period */}
|
|
<ul className='no-scrollbar flex h-[208px] flex-col gap-y-0.5 overflow-y-auto pb-[184px]'>
|
|
{
|
|
periodOptions.map((period) => {
|
|
const isSelected = selectedTime?.format('A') === period
|
|
return (
|
|
<OptionListItem
|
|
key={period}
|
|
isSelected={isSelected}
|
|
onClick={handleSelectPeriod.bind(null, period)}
|
|
noAutoScroll // if choose PM which would hide(scrolled) AM that may make user confused that there's no am.
|
|
>
|
|
{period}
|
|
</OptionListItem>
|
|
)
|
|
})
|
|
}
|
|
</ul>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default React.memo(Options)
|