Files
aurora-admin/site/end-content/rangequickpicker.react.json
T

67 lines
3.4 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"slug": "rangequickpicker",
"end": "react",
"curated": true,
"summary": "React 端日期范围快捷选择:预设区间一键填入,也可手改起止日期,确认后才回调。",
"usage": [
"modelValue 形状固定为 {start, end},但 start 与 end 是各自独立的内部 state,初始值只在挂载时取自 modelValue。",
"与多数选择器不同,这里 preset 与自定义输入都不立即上报,只有点确定才走 confirm 调 onChange,取消或点外部只关闭弹层。",
"内部保存了 modelValue 与本地 start / end 两套值,触发器上显示的是 modelValue,自定义输入显示的是本地值,二者在未确认前可能不一致。",
"预设项高亮由 activeIndex 控制,选预设会把区间算好填进本地 start / end 并记下索引,手动改日期则清掉高亮。",
"关闭行为集中在 useEffect 里的 document click:点到组件外部就收起弹层并把 activeIndex 复位为 -1。",
"预设来自 presets prop,默认是内置的今天、近 7 天、本月等区间,算区间只依赖本地时间函数。"
],
"bestPractices": [
"点确定只回调 onChange,不会自持最终值,受控方必须把新区间写回 modelValue,否则触发器文案不会变。",
"弹层开合、预设高亮、草稿区间三者都是内部状态,外部无法命令式关闭,需要关闭得靠用户点击外部区域。",
"取消按钮只关弹层、不还原草稿值,再次打开时自定义输入里仍是上次改到一半的值。"
],
"apiCarrier": {
"kind": "props",
"note": "React 端 3 个 props 加 onChange;弹层开合 open、草稿区间 start / end、预设高亮 activeIndex 均为内部 state,确认前不对外通信。",
"table": [
{
"name": "modelValue",
"type": "Object,{start, end}",
"desc": "已确认的区间,用于初始化草稿值并驱动触发器显示"
},
{
"name": "presets",
"type": "Array<Object>",
"desc": "预设区间列表,默认内置今天与近 7 天等,元素含 label 与区间规则"
},
{
"name": "onChange",
"type": "(range) => void",
"desc": "点确定后回调,参数为最终区间对象"
}
]
},
"a11y": [
"触发器是 div 加 onClick,没有 tabindex、role 与 aria-expanded,键盘无法展开。",
"预设项是原生 button,键盘可聚焦触发,是本面板里唯一键盘可用的部分。",
"弹层没有 role=dialog,打开时焦点也不移入,读屏器不会播报弹层出现。",
"起止用的是原生 date 输入,键盘可编辑,但没有 label 说明哪个是开始、哪个是结束。"
],
"resources": [
{
"file": "frameworks/RangeQuickPicker.jsx",
"kind": "React 实现",
"desc": "RangeQuickPicker.jsx —— 本端实现全文(结构、事件与状态逻辑)"
},
{
"file": "frameworks/RangeQuickPicker.css",
"kind": "样式文件",
"desc": "frameworks/RangeQuickPicker.css —— 本端 kole-* 类名与 is-* 状态类的样式定义"
}
],
"exampleIds": [
"rangequickpicker-ex-1"
],
"notes": [
"props 与默认区间见 frameworks/RangeQuickPicker.jsx:33,草稿与高亮 state 见第 35-38 行。",
"点外部关闭见 frameworks/RangeQuickPicker.jsx:40-49,预设填充见第 51-56 行。",
"仅确认才回调见 frameworks/RangeQuickPicker.jsx:57-61。"
]
}