Импорт

import-scheduler.tsx
import { NuiScheduler, type NuiSchedulerHandle } from '@needless-ui/react/scheduler';

NuiScheduler

События в виде месяца, недели, дня, повестки дня или таймлайна.

NuiScheduler: Свойства
ИмяТипПо умолчаниюОписание
eventsПропNuiSchedulerEvent<T>[][]Показываемые события.
resourcesПропNuiSchedulerResource[][]Комнаты, люди или оборудование: строки таймлайна и столбцы дня и недели.
view
defaultView
onViewChangeСостояние
'month' | 'week' | 'day' | 'agenda' | 'timeline''week'Показанный вид.
viewsПропNuiSchedulerView[]allВиды, между которыми можно переключаться. По умолчанию — все, а таймлайн — только при наличии ресурсов.
timelineSpanПроп'day' | 'week' | 'month''day'Что показывает таймлайн: день по слотам или неделю либо месяц по дням.
date
defaultDate
onDateChangeСостояние
NuiDatetodayПоказанный день; на нём же находится фокус клавиатуры. Если планировщик рендерит сервер, передайте defaultDate: у сервера может быть другое «сегодня», чем у читателя.
slotMinutesПропnumber30Минут в строке временной сетки или в столбце таймлайна дня.
snapMinutesПропnumberslotMinutesШаг, с которым события переносятся и меняют длительность.
dayStart, dayEndПропnumber0, 24С какого и до какого часа показывается временная сетка.
scrollHourПропnumber8Час, с которого открывается временная сетка.
agendaDaysПропnumber30Сколько дней вперёд охватывает повестка дня.
businessHoursПропNuiSchedulerHours[]Рабочие часы, например { days: [1, 2, 3, 4, 5], start: '09:00', end: '17:00' }. Остальное время затеняется.
weekendsПропbooleantrueПоказывает выходные. Без него все виды скрывают выходные дни, принятые в локали.
weekNumbersПропbooleanfalseПоказывает номера недель по ISO — в месяце и над столбцом времени.
editableПропbooleanfalseСобытия можно переносить и менять их длительность — указателем и с клавиатуры.
selectableПропbooleanfalseВ сетке можно выбирать время, чтобы создавать события.
allowПроп(time) => booleanРешает, можно ли перенести событие, изменить его длительность или выбрать время.
toolbarПропboolean | ((toolbar: NuiSchedulerToolbar) => ReactNode)trueПоказывает панель инструментов или, если передана функция, рисует вашу по полученным данным.
firstDayПроп1 … 7Первый день недели, 1 — понедельник. По умолчанию — как в локали.
headingLevelПропnumber2Уровень заголовка; дни в повестке дня — на уровень глубже.
localeПропstring'en-US'Форматирует дни и время.
labelsПропPartial<NuiSchedulerLabels>Все показываемые и озвучиваемые планировщиком тексты — для перевода.
cornersПропNuiCornersФорма углов: round, squircle, bevel, scoop, notch или square.
radiusПропNuiRadiusРадиус скругления углов: none, small, medium, large или full.
densityПропNuiDensityСколько места занимает компонент: compact, regular или roomy.
renderEventРендер-проп(event, { time }) => ReactNodeСвоя отрисовка событий: из события и его времени в виде текста.
renderResourceРендер-проп(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Вызывается с первым и последним показанными днями, когда они меняются, — чтобы загрузить их события.
refПропRef<NuiSchedulerHandle>Что доступно через ref планировщика: листание страниц — для своей панели инструментов.
previous, next, goTodayМетод() => voidПоказывают предыдущую или следующую страницу либо сегодняшний день — для своей панели инструментов.
titleСвойствоstringПоказанный период — так, как он записан в заголовке панели инструментов.

Состояние работает как у полей ввода в React: передайте значение и обновляйте его в колбэке on…Change или передайте значение default…, и его будет хранить компонент.

Если проп настройки не задан, компонент берёт его значение из ближайшего атрибута data-nui-*. Подробнее — в руководстве по настройке.

NuiSchedulerToolbar

Что получает функция toolbar, чтобы нарисовать свою панель инструментов.

NuiSchedulerToolbar: Свойства
ИмяТипПо умолчаниюОписание
titleСвойствоstringПоказанный период — так, как он записан в заголовке панели инструментов.
view, viewsСвойствоNuiSchedulerView, NuiSchedulerView[]Показанный вид и доступные виды.
setView, previous, next, goTodayМетод(view?) => voidПереключают вид, показывают предыдущую или следующую страницу либо сегодняшний день.

NuiSchedulerEvent

Событие. Конец события со временем в него не входит, а конец события на весь день — это его последний день.

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

Комната, человек или оборудование, к которым относятся события.

NuiSchedulerResource: Свойства
ИмяТипПо умолчаниюОписание
id, titleСвойствоstringКлюч ресурса и показываемое имя.
tone, colorСвойствоNuiSchedulerTone, stringЦвета его событий, если у них нет своих.
businessHoursСвойствоNuiSchedulerHours[]Когда ресурс доступен — вместо рабочих часов планировщика.
dataСвойствоRЛюбые другие данные, которые нужно хранить вместе с ним.

Helpers

Функции для повторяющихся событий и файлов iCalendar.

Helpers: Свойства
ИмяТипПо умолчаниюОписание
nuiSchedulerOccurrencesМетод(event, first, last) => NuiSchedulerEvent[]Событие так, как оно показывается в заданные дни: у повторяющегося — каждый экземпляр.
nuiSchedulerRuleМетод(text: string) => NuiSchedulerRule | nullЧитает правило повторения или возвращает null.
nuiSchedulerToIcsМетод(events, options?) => stringЗаписывает события в файл iCalendar.
nuiSchedulerFromIcsМетод(text, { timeZone? }) => NuiSchedulerEvent[]Читает события из файла iCalendar, приводя их время к одному часовому поясу.