Компонент DateTimePicker в библиотеке WordPress предоставляет удобный интерфейс для выбора даты и времени. Он сочетает в себе календарь и часы, позволяя пользователю легко выбрать нужный момент времени. При необходимости, можно использовать только календарь или часы, вызвав компоненты DatePicker и TimePicker соответственно.

Подключение компонента
Для использования компонента DateTimePicker, импортируйте его из библиотеки компонентов WordPress:
import { useState } from 'react';
import { DateTimePicker } from '@wordpress/components';
Базовый пример использования
Создадим базовый пример с возможностью выбора даты и времени. В этом примере используется useState для отслеживания выбранной даты, которая обновляется при каждом изменении в DateTimePicker.
const MyDateTimePicker = () => {
const [ date, setDate ] = useState(new Date());
return (
<DateTimePicker
currentDate={ date }
onChange={ (newDate) => setDate(newDate) }
is12Hour={ true }
/>
);
};
Описание пропсов
Компонент DateTimePicker поддерживает несколько параметров, которые позволяют гибко настраивать его отображение и поведение.
currentDate(опциональный)- Тип:
Date | string | number | null - Задает текущую дату и время для инициализации компонента. Можно передать
null, чтобы по умолчанию не было выбрано никакой даты. ЕслиcurrentDateне указан, по умолчанию используется текущая дата.
- Тип:
Пример использования с заданной датой:
<DateTimePicker currentDate="2024-11-15T10:30:00" />
onChange(опциональный)- Тип:
(date: string | null) => void - Функция, вызываемая при изменении даты или времени. Принимает новую дату в виде строки (ISO формат) или
null, если дата не выбрана.
- Тип:
Пример использования с функцией-обработчиком:
<DateTimePicker onChange={(newDate) => console.log("Выбранная дата:", newDate)} />
is12Hour(опциональный)- Тип:
boolean - Определяет, будет ли использоваться 12-часовой формат. При значении
trueдобавляется виджет AM/PM, и формат времени меняется на MM-DD-YYYY. По умолчанию используется 24-часовой формат с форматом даты DD-MM-YYYY.
- Тип:
Пример использования в 24-часовом формате:
<DateTimePicker is12Hour={false} />
dateOrder(опциональный)- Тип:
'dmy' | 'mdy' | 'ymd' - Позволяет установить порядок отображения дня, месяца и года. Этот параметр переопределяет формат, заданный с помощью
is12Hour.
- Тип:
Пример использования с форматом месяц-день-год:
<DateTimePicker dateOrder="mdy" />
isInvalidDate(опциональный)- Тип:
(date: Date) => boolean - Функция для определения недопустимых дат. Принимает
Dateобъект и должна возвращатьtrueдля недопустимых дат иfalseдля допустимых.
- Тип:
Пример с блокировкой всех дат до сегодняшнего дня:
<DateTimePicker isInvalidDate={(date) => date < new Date()} />
onMonthPreviewed(опциональный)- Тип:
(date: Date) => void - Функция, вызываемая при переходе к предыдущему или следующему месяцу в календаре. Получает дату нового месяца в виде
Dateобъекта.
- Тип:
Пример использования с логированием предварительного просмотра месяца:
<DateTimePicker onMonthPreviewed={(monthDate) => console.log("Просмотр месяца:", monthDate)} />
events(опциональный)- Тип:
{ date: Date }[] - Список событий, отображаемых в календаре. Для каждого события будет показана точка на соответствующем дне.
- Тип:
Пример использования с несколькими событиями:
<DateTimePicker events={[
{ date: new Date("2024-11-18") },
{ date: new Date("2024-12-25") },
]} />
startOfWeek(опциональный)- Тип:
number - Задает день, с которого начинается неделя (0 для воскресенья, 1 для понедельника и т.д.). По умолчанию неделя начинается с воскресенья (0).
- Тип:
Пример использования с началом недели в понедельник:
<DateTimePicker startOfWeek={1} />
Пример с кастомными настройками формата даты и времени
В этом примере используется 12-часовой формат с кастомным порядком отображения даты.
const CustomDateTimePicker = () => {
const [selectedDate, setSelectedDate] = useState(new Date());
return (
<DateTimePicker
currentDate={selectedDate}
onChange={(newDate) => setSelectedDate(newDate)}
is12Hour={true}
dateOrder="mdy"
/>
);
};
Пример с недопустимыми датами и событиями
Добавим настройку для блокировки выходных и отметим несколько событий.
const EventfulDateTimePicker = () => {
const [selectedDate, setSelectedDate] = useState(new Date());
return (
<DateTimePicker
currentDate={selectedDate}
onChange={(newDate) => setSelectedDate(newDate)}
isInvalidDate={(date) => date.getDay() === 0 || date.getDay() === 6}
events={[
{ date: new Date("2024-11-20") },
{ date: new Date("2024-12-01") },
]}
/>
);
};
Заключение
Компонент DateTimePicker в WordPress позволяет легко и гибко управлять выбором даты и времени. Этот компонент удобен для создания форм с календарем и часами, а также подходит для интерфейсов с ограничениями по дате или с отмеченными событиями. Настройки, такие как is12Hour, dateOrder, и isInvalidDate, позволяют подстроить компонент под любые требования вашего проекта.