匯入
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 檔案中的活動,並把時間統一到同一個時區。 |