• 简体中文
  • Calendar 日历

    查看日期、选择时间安排并展示日程。

    基础用法

    交互预览基础用法
    一二三四五六日

    已选日期:2026-10-4

    一二三四五六日
    basic.tsx
    import { Calendar, Tag } from '@sudden3/leaf-ui';
    import { useState } from 'react';
    export function CalendarBasic() {
      const [value, setValue] = useState(new Date(2026, 9, 4));
      return (
        <div className="leaf-demo-stack leaf-demo-stack--wide">
          <Calendar
            value={value}
            onChange={setValue}
            cellRender={(date) =>
              date.getMonth() === 9 && date.getDate() === 8 ? (
                <Tag color="primary" size="sm">
                  项目评审
                </Tag>
              ) : date.getMonth() === 9 && date.getDate() === 15 ? (
                <Tag color="info" size="sm">
                  发布
                </Tag>
              ) : null
            }
          />
          <p className="leaf-demo-note">
            已选日期:{value.getFullYear()}-{value.getMonth() + 1}-{value.getDate()}
          </p>
          <div className="leaf-demo-row">
            <Calendar
              fullscreen={false}
              defaultValue={new Date(2026, 9, 4)}
              disabledDate={(date) => date.getDay() === 0 || date.getDay() === 6}
            />
            <Calendar fullscreen={false} mode="month" defaultValue={new Date(2026, 9, 1)} />
          </div>
        </div>
      );
    }
    

    Calendar API

    属性类型默认值说明
    value / defaultValueDate—受控日期 / 初始选中日期
    onChange(date: Date) => void—选中日期后触发
    visibleDateDate—受控展示的月份或年份
    onVisibleChange(date: Date) => void—展示范围变化
    mode'date' | 'month''date'选择日期或月份
    fullscreenbooleantrue使用完整日历布局
    minDate / maxDateDate—可选择日期边界
    disabledDate(date: Date) => boolean—禁用指定日期
    cellRender(date: Date) => ReactNode—在日期或月份下补充内容

    类型

    定义组件属性或组装列表时可导入相关类型。

    import type { CalendarProps } from '@sudden3/leaf-ui';

    使用说明

    完整日历适合展示日程,fullscreen={false} 可展示紧凑日历。cellRender 中使用文字、Tag 等非交互内容,避免在日期按钮内再嵌套按钮。方向键移动日期,Home / End 跳至一行首尾,PageUp / PageDown 切换月份。SSR 页面应为服务端和客户端提供相同的初始日期,详见 SSR 使用指南。

    SSR 使用。