TimePicker 时间选择器
TimePicker 是一个允许用户选择时间值的组件。
获取组件
import { TimePicker } from 'rsuite';
演示
默认
12 小时制/24 小时制
时间步长
尺寸
外观
撑满
占位符
禁用与只读
加载中状态
受控与非受控的值
可访问性
ARIA 属性
默认拥有 DateInput 组件的 ARIA 属性。
- 当值无效时,
aria-invalid="true"
属性被添加到<input>
元素。 - 当设置了
label
,aria-labelledby
属性被添加到<input>
元素和dialog
元素上,并将值设置为label
的id
属性值。 - 拥有
aria-haspopup="dialog"
属性,用于指示组件拥有一个可交互的弹出层。
Props
<TimePicker>
属性名称 | 类型(默认值) |
描述 |
---|---|---|
appearance | 'default' | 'subtle' ('default') |
设置外观 |
block | boolean | 堵塞整行 |
caretAs | ElementType | 自定义右侧箭头图标的组件 |
cleanable | boolean (true) |
可以清除 |
container | HTMLElement | (() => HTMLElement) | 设置渲染的容器 |
defaultOpen | boolean | 默认打开 |
defaultValue | Date | 默认值(非受控) |
disabled | boolean | 禁用组件 |
editable | boolean (true) |
渲染为 Input 输入框,可以通过键盘输入日期 |
format | string ('HH:mm') |
日期显示格式化 |
hideHours | (hour:number, date:Date) => boolean | 隐藏指定的小时选项 |
hideMinutes | (minute:number, date:Date) => boolean | 隐藏指定的分钟选项 |
hideSeconds | (second:number, date:Date) => boolean | 隐藏指定的秒选项 |
label | ReactNode | 在按钮开头显示的标签 |
loading | boolean (false) |
是否显示一个加载中状态指示器 |
locale | DateTimeFormats | 定义本地化设置,使组件文本根据用户地区显示相应语言 |
onChange | (date: Date) => void | 值改变后的回调函数 |
onClean | (event) => void | 清除值后的回调函数 |
onClose | () => void | 关闭回调函数 |
onEnter | () => void | 显示前动画过渡的回调函数 |
onEntered | () => void | 显示后动画过渡的回调函数 |
onEntering | () => void | 显示中动画过渡的回调函数 |
onExit | () => void | 退出前动画过渡的回调函数 |
onExited | () => void | 退出后动画过渡的回调函数 |
onExiting | () => void | 退出中动画过渡的回调函数 |
onOk | (date: Date, event) => void | 点击确定后的回调函数 |
onOpen | () => void | 打开回调函数 |
onSelect | (date: Date) => void | 选择时间的回调函数 |
onShortcutClick | (shortcut: Range, event) => void | 点击快捷项的回调函数 |
open | boolean | 打开 (受控) |
placeholder | string | 没有值时候默认显示内容 |
placement | Placement ('bottomStart') |
显示位置 |
preventOverflow | boolean | 防止浮动元素溢出 |
ranges | Range[] (Ranges) | 快捷项配置 |
renderValue | (date: Date) => ReactNode | 自定义渲染值 |
shouldDisableHour | (hour:number, date:Date) => boolean | 禁用小时 |
shouldDisableMinute | (minute:number, date:Date) => boolean | 禁用分钟 |
shouldDisableSecond | (second:number, date:Date) => boolean | 禁用秒 |
showMeridiem | boolean | 显示 12 小时制的时间格式 |
size | 'lg' | 'md' | 'sm' | 'xs' ('md') |
组件设置尺寸 |
value | Date | 当前值(受控) |
Placement
type Placement =
| 'bottomStart'
| 'bottomEnd'
| 'topStart'
| 'topEnd'
| 'leftStart'
| 'leftEnd'
| 'rightStart'
| 'rightEnd'
| 'auto'
| 'autoVerticalStart'
| 'autoVerticalEnd'
| 'autoHorizontalStart'
| 'autoHorizontalEnd';
Range
interface Range {
label: ReactNode;
value: Date | ((date: Date) => Date);
closeOverlay?: boolean;
// Sets the position where the predefined range is displayed, the default is bottom.
placement?: 'bottom' | 'left';
}
Ranges
const Ranges = [
{
label: 'Now',
value: () => {
return new Date();
}
}
];