Skip to content

TimePicker 时间选择器 ​

时间选择器,下拉时分秒列选择(12 小时制时附上午/下午列),↑/↓ 调整、Home/End 跳首末、Enter 确认、Esc 取消,支持三元步进与禁用时刻;触发器为输入框,可直接键入时刻(失焦或回车提交,非法输入自动回退)。

基础用法 ​

基础用法

手动输入 ​

键入时刻(失焦 / 回车提交)

整段输入按 H:mm[:ss] 解析(容错单位数,如 9:5);12 小时制下可带上午/下午词。非法输入失焦后自动回退,不破坏当前值。

自定义格式 ​

format 裁剪列

format 含 HH/mm/ss 时对应列才出现。

12 小时制 ​

use12-hours(值恒为 24 小时制)

显示与列走 12 小时制(上午/下午词随 locale),第四列为上午/下午切换;value 契约不变,恒为 HH:mm:ss 24 小时制。

步进 ​

step 分钟间隔(单数字向后兼容)

step JSON 三元组(时/分/秒独立步进)

step 支持 JSON 形态 {"h":2,"m":5,"s":1} 分别控制时/分/秒列步进;单数字继续等价于分钟步进。值不在步进集合时列内就近吸附显示,不主动改值。

禁用时刻 ​

disabledTime(置灰不隐藏)

disabledTime(property,(parts) => { hours?, minutes?, seconds? })按当前时刻上下文返回禁用列表,禁用项置灰不可选(点击与键盘均跳过,不隐藏)。

hide-disabled-options(禁用选项隐藏而非灰显)

配合 disabledTime 使用:hide-disabled-options 让禁用选项直接不出现在列中(缺省置灰但可见)——上例当前值落在打烊时段(14–16 点),小时列中这三项被隐藏;键盘 ↑/↓ 与就近吸附本就基于值集合跳过禁用项,行为不变。

无障碍命名 ​

label 触发器命名

label 为触发器输入框提供可访问名称(aria-label,屏幕阅读器朗读);缺省回落 placeholder。外部 <label for> 关联命名优先(原生 label 语义)。

此刻与快捷预设 ​

此刻按钮(footer)

面板底部内置「此刻」按钮,一键填入当前时刻并确认(与 date-picker「今天」心智对齐)。

presets 快捷时刻(property)

presets(property,{ label, value: 'HH:mm:ss' } 数组),面板顶部按钮列,点击即应用并关闭。

时区(timezone) ​

timezone 时区锚点:UTC vs 本地

timezone 接受 IANA 时区名(如 Asia/Tokyo)或 UTC,缺省 / 非法值回落宿主本地时区。面板底部「此刻」按钮与默认值推导按指定时区的墙钟取值;value 契约(HH:mm:ss)不变。打开左例面板点「此刻」取 UTC 时间,右例取本地时间;下方对照行给出两个时区当前的时刻。

时间范围 ​

is-range(起止双列组,自动排序)

is-range 时值为 JSON 数组 ["HH:mm:ss","HH:mm:ss"];起止各自独立选择(←/→ 跨列移动),确认时起止自动排序。

表单态 ​

尺寸(size)

校验态(status)与清除(clearable)

只读(readonly)

readonly 下面板可展开浏览,点选 / 此刻 / 预设 / 清除 / 手输均不提交。

受控开合与事件 ​

oas-change / oas-confirm 事件

受控开合(open + oas-open-change)

open 属性在场为受控模式:手势只派发 oas-open-change,开合由宿主增删属性决定;确认提交(Enter / 外部点击 / 此刻)时派发 oas-confirm(与 oas-change 并行)。

禁用 ​

禁用

浮层定位(placement) ​

显式 placement(top-end:上方弹出右对齐)

与 date-picker 同定位契约:fixed + 碰撞翻转 + 视口夹取,面板宽度对齐触发器;placement 支持 12 向(默认 bottom-start)。

移动形态(底部抽屉) ​

触屏(coarse pointer)或窄视口(<768px)下,面板自动改由 oas-bottom-sheet 底部抽屉承载:贴视口底升起 + 遮罩 + 拖拽把手下滑关闭(点遮罩 / Esc 同样收起),底部避让安全区;时分秒列(含范围双列组)在抽屉内容区内各自滚动;PC 形态保持原有浮层下拉不变。抽屉内时间选项行触控目标抬升至 44px(--oas-touch-target-min)。

required 必填 ​

required 必填(原生校验链)

required 驱动原生校验链(form-associated):未填时 checkValidity() 为 false(valueMissing),原生表单提交被阻止;填写后自动恢复 :valid。

程序性读/写当前值走公开 value property:el.value 读取——单值为 value 属性原串,is-range 模式为起止时间字符串数组(与 oas-change detail 同形);el.value = x 写入——写受控 value 属性并即时回显 trigger(范围模式传数组自动 JSON 序列化,空值移除属性),不派发事件。

API ​

oas-time-picker ​

属性 ​

属性说明类型默认值
clearable可清除:有值时显示清除钮,点击清空并派发 oas-clear + oas-change(空值)boolean—
disabled禁用boolean—
format展示格式 token;含 HH/mm/ss 时对应列出现stringHH:mm:ss
hide-disabled-options禁用选项隐藏而非灰显(键盘导航与吸附仍跳过禁用值)boolean—
is-range时间范围:值为 JSON 数组 ["HH:mm:ss","HH:mm:ss"],确认时起止自动排序;该形态手输通道只读boolean—
label触发器可访问名(aria-label),外部 label for 关联优先string—
name表单字段名(原生 FormData 提交的 key;范围模式派生 name-start / name-end 两条 entry;无 name 浏览器自动不提交)string—
open受控开合:在场=展开、移除=收起;手势只派发 oas-open-change 由宿主回写;移动形态(触屏/窄视口 <768px)下展开态由 oas-bottom-sheet 底部抽屉承载(下滑/遮罩/Esc 收起),PC 为浮层下拉——
placeholder占位提示——
placement浮层位置,12 向(默认 bottom-start),fixed + 碰撞翻转 + 视口夹取(与 date-picker 同契约)stringbottom-start
readonly只读:面板可展开浏览,点选/此刻/预设/清除/手输均不提交boolean—
required必填标记(驱动原生校验链 valueMissing;不透传内层控件)boolean—
size尺寸档:small / medium / large(就近读取 config-provider 注入)stringmedium
status校验态:success / warning / error(error 联动 aria-invalid)string—
step步进:JSON 三元组 {"h":2,"m":5,"s":1} 分别控制时/分/秒列;单数字等价于分钟步进string—
timezone时区锚点:IANA 时区名或 UTC;缺省/非法回落本地。「此刻」按钮与默认值推导按该时区墙钟取值,value 契约不变string—
use12-hours12 小时制:显示与列走 12 小时制(附上午/下午列,文案随 locale);value 恒为 24 小时制boolean—
value当前值(HH:mm:ss;is-range 为 JSON 数组)string | string[] | null—

Property(JS property;是否写回 attribute 见各行说明) ​

Property说明类型默认值
disabledTime禁用时间谓词(property 函数通道,(parts) => { hours?, minutes?, seconds? })| ((parts: TimeParts) => { hours?: number[]; minutes?: number[]; seconds?: number[] } | null) | null—
presets快捷时刻预设(property 通道,[{ label, value }])PresetItem[] | null—
value当前值:单值时间串;is-range 为字符串数组string | string[] | null—

事件 ​

事件说明
oas-blur组件整体失焦(组件内转移不误报)
oas-change确认值变化,detail: { value }(is-range 为字符串数组)
oas-clear清除,detail: { value } 为清空前的值
oas-confirm确认提交时派发(Enter/外部点击/此刻,与 oas-change 并行),detail: { value: detail }
oas-focus组件整体获焦
oas-open-change开合变化,detail: { open }(受控/非受控均派发)

CSS 变量 ​

CSS 变量默认值
--oas-glass-blurnone
--oas-glass-ringtransparent

键盘:Enter / ↓ 展开,↑/↓ 调整当前列,Home/End 跳首末,←/→ 切换列,Enter 确认,Esc 取消。

基于 MIT OR Apache-2.0 双许可发布