跳到主要内容

日历 Calendar

用于选择日期,或日期区间。

安装使用

import { TiCalendar } from '@titian-design/mobile-react';

用法示例

基础用法

import { useState } from 'react';

const App: React.FC = () => {

const [visible, setVisible] = useState(false);

const onConfirm = (event: any) => {
console.log("onConfirm", event.detail);
setVisible(false);
};

return (
<>
<TiCalendar visible={visible} onConfirm={onConfirm} />
</>
)
}

设置边界

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } minDate="2022-02-10" maxDate="2023-02-10" />
</>
)
}

设置默认值

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } defaultValue="2022-04-10" />
</>
)
}

受控模式

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } value="2022-04-10" />
</>
)
}

多选

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } mode="multiple" />
</>
)
}

多选 - 最多选择个数

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } mode="multiple" maxSize={ 2 } />
</>
)
}

选择范围

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } mode="range" />
</>
)
}

选择范围 - 最大范围

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } mode="range" maxRange={ 2 } />
</>
)
}

选择范围 - 允许起止同天

const App: React.FC = () => {
return (
<>
<TiCalendar visible={ true } mode="range" allowSameDay={ true } />
</>
)
}

TiCalendar API

属性 Properties

名称类型必填默认值说明备注
startWeekDayEnum'Sunday'从周几开始;参数类型 WeekDayEnum
modesingle | multiple | range'single'单选/多选/范围-
defaultValuearray | string | numbernull默认值,传值则组件设置为非受控模式-
valuearray | string | numbernull值,则组件设置为受控模式-
minDatestring | number当天最小日期范围,可转 Date 即可-
maxDatestring | number从当天起 6 个月最大日期范围,可转 Date 即可-
positiontop | bottom | left | rightbottom展示位置,透传给 popup.position-
closeOnMaskbooleantrue点击遮罩关闭,透传给 popup.close-on-mask-
destroyOnClosebooleanfalse关闭后销毁组件,透传给 popup.destroyOnClose-
usePopupbooleantrue是否使用弹窗-
confirmTextstring确认确认文案;传空字符串''则不展示按钮-
visiblebooleanfalse是否展示,透传给 popup.visible-
allowSameDaybooleanfalse起止日期是否可用是同一天;range 模式下生效-
maxRangenumber0起止日期最大跨度天数; range 模式且大于 0 下生效-
maxSizenumber0最多可选天数 ; multiple 模式且大于 0 下生效-
colorstring#2580FF选中颜色值-
roundbooleanfalse圆角模式-
titlestring'选择日期'标题-
formatter(date: CalRenderDateProps) => CalRenderDatePropsnull格式化日历函数,参数类型 CalRenderDateProps-
maskZIndexnumber10000遮罩 z-index 层级-
contentZIndexnumber10001内容 z-index 层级-
extStylestring''容器样式-
teleportElementdocument.bodyDOM 挂载节点-

事件 Events

名称参数列表描述备注
onSelect(e: CustomEvent<{date: CalDateProps; currentDate: CalRenderDateProps[];}>) => void日历面板选择事件参数类型见 CalDatePropsCalRenderDateProps
onConfirm(e: CustomEvent<CalRenderDateProps[]>) => void日历面板确认事件参数见 CalRenderDateProps
onClose(e: CustomEvent) => void日历面板关闭事件-
onError(e: CustomEvent<{error: CalErrorProps; date: CalDateProps; currentDate: CalRenderDateProps[]; }>) => void日历面板错误事件参数类型见 CalErrorPropsCalRenderDatePropsCalRenderDateProps

外部样式类 External Classes

类名说明备注
extPopupClasspopup 容器样式,透传给 popup/ext-class-
extPopupMaskClasspopup 遮罩样式,透传给 popup/ext-mask-class-
extPopupContentClasspopup 内容样式,透传给 popup/ext-content-class-
extClass日历组件容器样式-
extScrollClass日历组件滚动容器样式-

CSS 变量 CSS Variables

变量默认值说明
--calendar-popup-mask-bg-color默认值Popup 组件 --popup-mask-bg-color
--calendar-popup-radius默认值Popup 组件 --popup-popup-radius
--calendar-popup-box-bg-color默认值Popup 组件 --popup-box-bg-color
--calendar-scroll-height500px日历滚动区域高度
--calendar-week-height60px日历星期区域高度
--calendar-week-item-colorvar(--neutral-color-2, #757575)日历星期区域字体颜色
--calendar-title-height80px日历标题区域高度
--calendar-title-colorvar(--neutral-color-4, #c4c4c4)日历标题区域字体颜色
--calendar-date-text-colorvar(--neutral-color-1, #212121)日历时间区域日期字体颜色
--calendar-date-info-colorvar(--neutral-color-3, #9e9e9e)日历时间区域描述字体颜色
--calendar-date-select-colorvar(--neutral-color-9, #ffffff)日历时间区域选中字体颜色
--calendar-date-select-radiuscalc(var(--capsule-radius-size, 0px) + 8px)日历时间区域选中圆角
--calendar-date-disabled-colorvar(--neutral-color-4, #c4c4c4)日历时间区域禁用颜色
--calendar-date-margin-v10px日历时间区域垂直方向距离
--calendar-date-margin-h0px日历时间区域水平方向距离

数据结构 Data Structure

星期枚举 WeekDayEnum

含义备注
Sunday周日-
Monday周一-
Tuesday周二-
Wednesday周三-
Thursday周四-
Friday周五-
Saturday周六-

日期数据结构 CalDateProps

键名说明类型
date日期Date
time毫秒数number
yearnumber
monthmonth
daynumber
week星期number
fullDateNum年月日,如20211231number
text文本string | number
status状态DateStatusEnum
topInfo顶部文案string
bottomInfo底部文案string

日期渲染数据结构 CalRenderDateProps

interface CalRenderDateProps extends CalDateProps {
parentIndex: number;
}

报错数据结构 CalErrorProps

interface CalErrorProps {
message: string;
type: 'maxSize' | 'maxRange' | 'disabled';
}

日期状态枚举 DateStatusEnum

枚举值说明
null无状态
disabled禁用
single单选选中状态
range_start范围选择:起始状态
range_full范围选择:起始时间与结束时间为同一天
range_end范围选择:结束状态
multiple孤立多选(无连接)
multiple_start多选(有连接) 起始状态
multiple_middle多选(有连接) 中间状态
mulitiple_end多选(有连接) 结束状态