Skip to content

DatePicker 日期选择器

YhDatePicker 是统一的日期输入组件,支持日、周、月、季度、年以及范围选择,同时支持内联面板、自定义单元格内容、快捷预设和主题变量覆盖。

展示模式

设置 panel-only 后可以直接以内联方式渲染日期面板,适合仪表盘、侧栏筛选或自定义布局场景。

选择模式:
单元格形状:
<div class="demo-viewport">
  <yh-date-picker :key="demoType + demoShape" v-model="demoValue" :type="demoType" :cell-shape="demoShape" panel-only />
</div>

<div class="demo-result">
  <span class="dot"></span>
  <span class="label">已选:</span>
  <span class="val">未选择</span>
</div>
展示模式

基础用法

通过 type 可以切换不同的选择模式。

基础用法

高级配置

结合插槽和扩展属性,可以定制图标、默认面板锚点以及日期时间格式。

高级配置

单元格形状

使用 cell-shape 在圆形和方形单元格之间切换。

单元格形状

自定义单元格内容

轻量标记场景可以使用 cell-render,如果需要完全接管单元格渲染,则使用 date-cell 插槽。

自定义单元格内容

禁用与只读

disabled 会完全禁止交互,readonly 会保留当前值显示但不允许打开面板。

禁用与只读

不同尺寸

组件遵循统一尺寸体系:largedefaultsmall

不同尺寸

快捷预设

通过 presets 可以在面板中提供快捷选择操作。

快捷预设

禁用日期

使用 disabled-date 控制哪些日期不可选。

禁用日期

范围选择

daterangemonthrange 等范围类型会使用双值模型。

-
-
范围选择

在 Nuxt 中使用

安装 @yh-ui/nuxt 后,可以在 Nuxt 3/4 中直接使用 YhDatePicker。输入框壳层可以正常参与 SSR,面板仍依赖客户端交互打开。

在 Nuxt 中使用

API

Props

属性说明类型默认值
model-value / v-model绑定值YhDatePickerValue | YhDatePickerRangeValuenull
type选择模式'date' | 'datetime' | 'year' | 'month' | 'week' | 'quarter' | 'daterange' | 'datetimerange' | 'monthrange' | 'yearrange' | 'quarterrange''date'
disabled是否禁用booleanfalse
readonly是否只读,开启后不会打开面板booleanfalse
clearable有值时是否显示清除按钮booleantrue
size组件尺寸'large' | 'default' | 'small''default'
placeholder非范围模式占位文本,不传时使用语言包文案stringundefined
start-placeholder范围开始占位文本,不传时使用语言包文案stringundefined
end-placeholder范围结束占位文本,不传时使用语言包文案stringundefined
format输入框显示格式string''
value-format绑定值输出格式string''
date-format面板日期格式string'YYYY-MM-DD'
time-format面板和底部时间显示格式string'HH:mm:ss'
range-separator范围输入框分隔符string'-'
first-day-of-week一周的第一天,取值 17number7
disabled-date禁用日期函数(date: Date) => booleanundefined
presets面板中的快捷预设项YhDatePickerPreset[][]
preset-position预设区域位置保留配置,当前实现仍固定渲染在面板下方'left' | 'right' | 'top' | 'bottom''bottom'
show-footer是否显示底部区域booleantrue
status视觉状态'success' | 'warning' | 'error'undefined
order-on-confirm范围选择时结束值早于开始值时是否自动排序booleanfalse
prefix-icon自定义前缀图标组件或字符串string | Component''
clear-icon自定义清除图标组件或字符串string | Component''
default-value打开面板时的默认锚点日期Date | Date[]undefined
panel-only是否只渲染面板,不显示输入框壳层booleanfalse
default-time日期时间模式下的默认时间值Date | Date[]undefined
popper-class浮层面板附加类名string''
teleported是否将面板传送到 bodybooleantrue
validate-event值变化后是否触发表单校验booleantrue
name原生表单字段名string''
id原生表单字段 idstring''
cell-shape日期单元格形状'round' | 'square''round'
cell-render自定义日期单元格文本渲染函数(date: Date) => string | { text: string; className?: string }undefined
theme-overrides组件主题覆盖变量ComponentThemeVarsundefined

Events

当前实现中,运行时实际会触发以下事件:

事件说明参数
update:modelValue绑定值变化时触发(value: YhDatePickerValue | YhDatePickerRangeValue) => void
change值更新后触发(value: YhDatePickerValue | YhDatePickerRangeValue) => void
clear清除按钮重置值后触发() => void
confirm点击确认按钮时触发(value: YhDatePickerValue | YhDatePickerRangeValue) => void

Slots

插槽说明参数
prefix-icon自定义前缀图标内容-
clear-icon自定义清除图标内容-
extra面板额外内容,渲染在预设和底部区域之前-
date-cell自定义日期单元格内容{ cell: CalendarCell }
footer自定义底部区域内容-

Expose

当前实现未暴露公开实例方法或属性。

类型导出

类型说明
YhDatePickerProps组件 Props 类型
YhDatePickerEmits组件 Emits 类型声明
YhDatePickerSlots组件 Slots 类型声明
YhDatePickerPreset预设项类型
YhDatePickerValue单值类型
YhDatePickerRangeValue范围值类型
YhDatePickerPanelView面板视图类型
YhDatePickerInstance组件实例类型

主题变量

YhDatePicker 在样式中实际消费以下组件级 CSS 变量,同时支持 themeOverrides 覆盖。

变量说明默认值
--yh-date-picker-width默认宽度220px
--yh-date-picker-range-width范围模式宽度400px
--yh-date-picker-primary主色var(--yh-color-primary)
--yh-date-picker-primary-rgb主色 RGB 令牌var(--yh-color-primary-rgb)
--yh-date-picker-text-main主文本颜色var(--yh-text-color-primary)
--yh-date-picker-text-secondary次文本颜色var(--yh-text-color-secondary)
--yh-date-picker-border边框颜色var(--yh-border-color)
--yh-date-picker-panel-shadow面板阴影var(--yh-shadow-lg)
--yh-date-picker-item-hover悬停背景色var(--yh-fill-color-light)
--yh-date-picker-range-bg范围选中背景色var(--yh-color-primary-light-9)
--yh-date-picker-panel-width面板宽度380px
--yh-date-picker-panel-bg面板背景色var(--yh-bg-color-overlay)
--yh-date-picker-hover-bg悬停态背景色var(--yh-date-picker-item-hover)
--yh-date-picker-active-bg激活单元格背景色var(--yh-date-picker-primary)
--yh-date-picker-active-color激活单元格文字颜色var(--yh-color-white)

Released under the MIT License.