Skip to content

Calendar 日历 ​

用于输入与编辑日期的日期组件。单元格随可用空间放大;滑动网格或使用 PageUp / PageDown 切换月份,方向键在日期间移动。

基础用法 ​

网页近似预览,真机效果以 HarmonyOS 渲染为准。

多系列 ​

mode: 'multiple'——点按日期即可切换选中。

网页近似预览,真机效果以 HarmonyOS 渲染为准。

范围 ​

SRangeCalendar 足够宽时并排显示两个月,否则显示一个月。

网页近似预览,真机效果以 HarmonyOS 渲染为准。

语言与约束 ​

locale、weekStartsOn、minDate / maxDate、disabledDates(此处禁用周末)与 showOutsideDays。

网页近似预览,真机效果以 HarmonyOS 渲染为准。

API ​

从组件库源码中的 @Param / @Event / @BuilderParam 声明自动提取。

SCalendar ​

shadcn-vue 的 Calendar(v4 外观,react-day-picker 语义)。

  • 每种模式使用一个值属性,让类型保持简单:selected(单选)、selectedDates(多选)、range(范围)。每个都支持 $name 用于 !!,并有一个 on…Change 事件。保持它们未设置,则日历会自行管理选中状态。
  • month / defaultMonth:(第一个)显示的月份;onMonthChange 报告翻页。
  • 自测量(D11):日期格的大小随日历获得的宽度变化(32–44vp);当 numberOfMonths > 1 时,能放下则并排显示月份,否则上下堆叠。cellSize 可固定日期格大小。
  • 翻页:头部箭头、网格上的水平滑动、PageUp / PageDown(配合 Shift 则按年)。方向键移动焦点所在的日期(Home / End:周的开始 / 结束),Enter / Space 选中它。
  • 动效 key calendar:切换月份时网格滑动并淡入淡出(同一个容器);选中的日期始终立即切换。
  • weekStartsOn:1 表示周一(默认),0 表示周日。locale:'en' | 'zh' 标签。
属性类型默认值说明
modeSparkCalendarMode
SparkCalendarMode = 'single' | 'multiple' | 'range'
'single'
selected!!SparkDate | undefinedundefined单选模式
selectedDates!!SparkDate[][]多选模式
range!!SparkDateRangenew SparkDateRange()范围模式
month!!SparkDate | undefinedundefined显示的(第一个)月份——该月中的任意一天即可。设置后即为受控。
defaultMonthSparkDate | undefinedundefined初始显示的月份(默认:选中项所在的月份,否则为今天所在的月份)。
minDateSparkDate | undefinedundefined
maxDateSparkDate | undefinedundefined
disabledDatesSparkDateMatcher | undefinedundefined额外禁用的日期,例如周末。
requiredbooleanfalse单选 / 多选:再次点击已选中的日期会保持选中(不取消选择)。
weekStartsOnSparkWeekStart
SparkWeekStart = 0 | 1
1
localeSparkDateLocale
SparkDateLocale = 'en' | 'zh'
'en'
showOutsideDaysbooleantrue
numberOfMonthsnumber1
cellSizenumber | undefinedundefined固定的日期格大小,单位 vp;undefined 表示根据可用宽度自适应(32–44)。
borderedbooleanfalse卡片外观:rounded-lg border shadow-sm(在弹出框内关闭)。
事件类型默认值说明
onSelectedChange(d: SparkDate | undefined) => void() => { }
onSelectedDatesChange(d: SparkDate[]) => void() => { }
onRangeChange(r: SparkDateRange) => void() => { }
onMonthChange(m: SparkDate) => void() => { }

SRangeCalendar ​

shadcn-vue 的 RangeCalendar:处于范围模式的 {@link SCalendar};当自身宽度允许(≥ 2 × 7 × 36vp + 间距 + 内边距)时并排显示两个月份,否则只显示一个。

numberOfMonths 可固定月份数量(undefined 表示自动)。

属性类型默认值说明
range!!SparkDateRangenew SparkDateRange()
month!!SparkDate | undefinedundefined
defaultMonthSparkDate | undefinedundefined
minDateSparkDate | undefinedundefined
maxDateSparkDate | undefinedundefined
disabledDatesSparkDateMatcher | undefinedundefined
weekStartsOnSparkWeekStart
SparkWeekStart = 0 | 1
1
localeSparkDateLocale
SparkDateLocale = 'en' | 'zh'
'en'
showOutsideDaysbooleantrue
numberOfMonthsnumber | undefinedundefinedundefined 表示能放下则为 2,否则为 1
cellSizenumber | undefinedundefined
borderedbooleanfalse
事件类型默认值说明
onRangeChange(r: SparkDateRange) => void() => { }
onMonthChange(m: SparkDate) => void() => { }

MIT Licensed