组件 · 数据录入
TimePicker 时间选择
提供文本输入与点击图标打开的时间列。
引入
tsx
import { TimePicker, TimeRangePicker } from '@selrux/ui/time-picker';演练场
调节下方可实现的字面量属性,实时预览真实组件。函数、Portal、样式逃生口等见代码演示与 API 表。
代码演示
基础选择
手动输入 HH:mm,或点击图标打开时间列。
仅小时
格式为 HH,手输和弹层都只显示小时。
精确到秒
格式为 HH:mm:ss,连续展示时、分、秒。
手动输入
只接受数字,字段越界即时归入上限;完整时间仍需通过禁用规则。
依次输入 09、30、15;时超过 23 自动变为 23,分秒超过 59 自动变为 59。失焦或按 Enter 提交,Esc 撤销。当前值:未选择
时间范围
两端各有时钟图标;先选择开始时间,结束时间在此之前禁用。
双图标入口
分别聚焦起止字段,观察图标从边框色变为品牌色;两端打开同一弹层。
两侧图标均可打开时间范围;聚焦对应字段时,该图标才使用品牌色。
秒级范围
两端遵循相同的连续字段格式。
受控时间
外部快捷按钮与输入框、弹层共用一个值。
受控范围
外部预设可写入完整起止时间。
时间约束
手输与弹层均禁止提交 12 点,数字字段上限仍即时生效。
可手输 11:30;手输 12:30 会标为无效且不会改变选中值,弹层中的 12 点也置灰。
范围约束
起止时间都在营业区间内,午休时间及早于起点的终点置灰。
禁用状态
切换后两个输入框与弹层按钮同时失效。
API
属性覆盖:示例用到 22 / 22 个自有属性(100%)
由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。
TimePicker
提供文本输入与点击图标打开的时间列。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
onChange | 合法时间或清空后的回调。 | ((value: TimeValue | null) => void) | - |
placeholder | 空值提示,省略时显示当前格式。 | string | - |
disabled | 禁用输入与弹层。 | boolean | - |
aria-label | 输入框的可访问名称,默认“选择时间”。 | string | - |
className | 外层附加 class。 | string | - |
defaultValue | 非受控初始值。 | TimeValue | - |
value | 受控值;null 表示空值。 | TimeValue | null | - |
format | 连续字段格式,默认 HH:mm。 | "HH" | "HH:mm" | "HH:mm:ss" | - |
minTime | 最早可选时间,包含边界。 | TimeValue | - |
maxTime | 最晚可选时间,包含边界。 | TimeValue | - |
isTimeDisabled | 自定义禁用判定,作用于手输与弹层选择。 | ((value: TimeValue) => boolean) | - |
TimeRangePicker
开始与结束字段各有图标入口,面板并排;终点在起点确定前保持禁用。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
onChange | 起点或终点变更后的回调。 | ((value: TimeRange | null) => void) | - |
startLabel | 起点输入的可访问名称,默认“开始时间”。 | string | - |
endLabel | 终点输入的可访问名称,默认“结束时间”。 | string | - |
startPlaceholder | 起点空值提示,省略时显示当前格式。 | string | - |
endPlaceholder | 终点空值提示,省略时显示当前格式。 | string | - |
disabled | 禁用两个输入与弹层。 | boolean | - |
className | 外层附加 class。 | string | - |
defaultValue | 非受控初始范围。 | TimeRange | - |
value | 受控范围,null 表示空值。 | TimeRange | null | - |
format | 连续字段格式,默认 HH:mm。 | "HH" | "HH:mm" | "HH:mm:ss" | - |
minTime | 最早可选时间,包含边界。 | TimeValue | - |
maxTime | 最晚可选时间,包含边界。 | TimeValue | - |
isTimeDisabled | 自定义禁用判定,作用于手输与弹层选择。 | ((value: TimeValue) => boolean) | - |
导出类型:TimeFormat、TimePickerProps、TimeRange、TimeRangePickerProps、TimeValue
无障碍
摘自源码 JSDoc。
TimePicker.aria-label:输入框的可访问名称,默认“选择时间”。TimeRangePicker.startLabel:起点输入的可访问名称,默认“开始时间”。TimeRangePicker.endLabel:终点输入的可访问名称,默认“结束时间”。