导入
import { NuiScheduler, type NuiSchedulerHandle } from '@needless-ui/react/scheduler';NuiScheduler
按月、周、日、日程列表或时间轴显示的日程。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
eventsprop | NuiSchedulerEvent<T>[] | [] | 要显示的日程。 |
resourcesprop | NuiSchedulerResource[] | [] | 会议室、人员或设备:时间轴的行,以及日视图和周视图的列。 |
viewdefaultViewonViewChange状态 | 'month' | 'week' | 'day' | 'agenda' | 'timeline' | 'week' | 当前显示的视图。 |
viewsprop | NuiSchedulerView[] | all | 用户可以切换的视图。默认为全部视图,其中时间轴仅在有资源时提供。 |
timelineSpanprop | 'day' | 'week' | 'month' | 'day' | 时间轴显示的范围:按时间段显示一天,或按天显示一周或一个月。 |
datedefaultDateonDateChange状态 | NuiDate | today | 显示的日期,也是键盘焦点所在的日期。由服务端渲染日程表时,请传入 defaultDate:服务器上的今天未必是用户的今天。 |
slotMinutesprop | number | 30 | 时间网格每行的分钟数,或单日时间轴每列的分钟数。 |
snapMinutesprop | number | slotMinutes | 日程移动和调整时长的步长。 |
dayStart, dayEndprop | number | 0, 24 | 时间网格显示的起止小时。 |
scrollHourprop | number | 8 | 时间网格打开时定位到的小时。 |
agendaDaysprop | number | 30 | 日程列表向后显示的天数。 |
businessHoursprop | NuiSchedulerHours[] | 工作时间,例如 { days: [1, 2, 3, 4, 5], start: '09:00', end: '17:00' }。其余时间以灰底标出。 | |
weekendsprop | boolean | true | 显示周末。关闭后,所有视图都会隐藏语言环境所定的周末。 |
weekNumbersprop | boolean | false | 在月视图中和时间列上方显示 ISO 周数。 |
editableprop | boolean | false | 可以用指针和键盘移动日程、调整时长。 |
selectableprop | boolean | false | 可以在网格上选择时间,用来创建日程。 |
allowprop | (time) => boolean | 决定移动、调整时长或选择时间能否进行。 | |
toolbarprop | boolean | ((toolbar: NuiSchedulerToolbar) => ReactNode) | true | 显示工具栏,或根据收到的信息绘制你自己的工具栏。 |
firstDayprop | 1 … 7 | 一周的第一天,1 表示星期一。默认遵循语言环境。 | |
headingLevelprop | number | 2 | 标题的级别;日程列表中各日期的标题再低一级。 |
localeprop | string | 'en-US' | 用于格式化日期和时间。 |
labelsprop | Partial<NuiSchedulerLabels> | 日程表显示或播报的所有文本,供翻译使用。 | |
cornersprop | NuiCorners | 边角的形状:round、squircle、bevel、scoop、notch 或 square。 | |
radiusprop | NuiRadius | 边角的大小:none、small、medium、large 或 full。 | |
densityprop | NuiDensity | 占用的空间:compact、regular 或 roomy。 | |
renderEvent渲染 prop | (event, { time }) => ReactNode | 自行绘制日程,参数为日程及其文本形式的时间。 | |
renderResource渲染 prop | (resource) => ReactNode | 自行绘制资源的表头。 | |
onEventClick回调 | (event: NuiSchedulerEvent<T>) => void | 日程被点击或按 Enter 键打开时调用,参数为该日程。 | |
onEventChange回调 | ({ event, start, end, resource? }) => void | 移动日程或调整时长后调用,参数为日程的新时间;资源改变时,还包括新的资源。要保留这次修改,请更新 events。 | |
onSlotSelect回调 | ({ start, end, allDay, resource? }) => void | 在网格上选择时间后调用,参数为该时间及其资源。 | |
onRangeChange回调 | ({ start, end }) => void | 显示的第一天和最后一天变化时调用,参数为这两天,便于加载其中的日程。 | |
refprop | Ref<NuiSchedulerHandle> | 日程表的 ref 能调用的方法:翻页,供自定义的工具栏使用。 | |
previous, next, goToday方法 | () => void | 显示上一页、下一页或今天,供自定义的工具栏使用。 | |
title属性 | string | 当前显示的内容,说法与工具栏的标题相同。 |
状态的用法与 React 自带的表单输入相同:传入一个值,并在它的 on…Change 回调中更新;或者传入 default… 值,让组件自己保存。
用于自定义的 prop 如果未设置,会沿用最近的 data-nui-* 属性。详见自定义指南。
NuiSchedulerToolbar
toolbar 函数收到的参数,用来绘制你自己的工具栏。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
title属性 | string | 当前显示的内容,说法与工具栏的标题相同。 | |
view, views属性 | NuiSchedulerView, NuiSchedulerView[] | 当前显示的视图,以及可供切换的视图。 | |
setView, previous, next, goToday方法 | (view?) => void | 切换视图,或显示上一页、下一页或今天。 |
NuiSchedulerEvent
一条日程。有具体时间的日程不包含结束时刻;全天日程的结束日期就是它的最后一天。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id, title属性 | string | 它的键,以及显示的内容。 | |
start, end属性 | NuiDateTime | NuiDate | 日期和时间;全天日程只用日期。 | |
allDay属性 | boolean | 默认取决于 start 是否不带时间。 | |
tone属性 | 'accent' | 'neutral' | 'success' | 'warning' | 'danger' | 'accent' | 它的配色。 |
color, class属性 | string | 任意 CSS 颜色(优先于配色),以及用来设置样式的类名。 | |
resource属性 | string | string[] | 它所属的资源。 | |
rrule属性 | string | RFC 5545 的重复规则,例如 FREQ=WEEKLY;BYDAY=MO。 | |
exdate属性 | string[] | 不会发生的各次日程的开始时间。 | |
recurrenceId属性 | NuiDateTime | NuiDate | 出现在日程表报告的单次日程上:规则为它定下的开始时间。 | |
editable属性 | boolean | 无论日程表如何设置,它能否被移动。 | |
data属性 | T | 需要随它一起保存的其他数据。 |
NuiSchedulerResource
日程所属的会议室、人员或设备。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id, title属性 | string | 它的键,以及显示的名称。 | |
tone, color属性 | NuiSchedulerTone, string | 其日程的颜色,除非日程有自己的颜色。 | |
businessHours属性 | NuiSchedulerHours[] | 它的可用时间,用来代替日程表的工作时间。 | |
data属性 | R | 需要随它一起保存的其他数据。 |
Helpers
处理重复日程和 iCalendar 文件的函数。
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
nuiSchedulerOccurrences方法 | (event, first, last) => NuiSchedulerEvent[] | 日程在给定日期中的显示方式:重复日程会展开为其中的每一次。 | |
nuiSchedulerRule方法 | (text: string) => NuiSchedulerRule | null | 解析重复规则,无法解析时返回 null。 | |
nuiSchedulerToIcs方法 | (events, options?) => string | 把日程写成 iCalendar 文件。 | |
nuiSchedulerFromIcs方法 | (text, { timeZone? }) => NuiSchedulerEvent[] | 读取 iCalendar 文件中的日程,并把时间统一到一个时区。 |