@gavinrigs/decap-schedule-picker
v1.0.2
Published
Calendar and time schedule picker widget for Decap CMS: single dates, ranges or multiple dates, with default hours and per-weekday overrides.
Readme
@gavinrigs/decap-schedule-picker
A combined calendar and time picker for anything that happens on dates — events, opening hours, availability, class timetables, seasonal schedules. It replaces the several loose date/time string fields an editor would otherwise have to keep consistent by hand.
- Single, range or multiple dates, chosen on one calendar
- Default start/end times for the whole schedule
- Per-weekday time overrides, for schedules that vary by day
Registering
import CMS from "decap-cms-app";
import { register } from "@gavinrigs/decap-schedule-picker";
register(CMS);| Option | Default | Purpose |
| --- | --- | --- |
| name | "schedule-picker" | Widget name used in config.yml. |
Field configuration
- { label: Schedule, name: schedule, widget: schedule-picker }
- label: Opening Hours
name: hours
widget: schedule-picker
default_start_time: "8:00 AM"
default_end_time: "6:00 PM"| Field setting | Default | Purpose |
| --- | --- | --- |
| default_start_time | "9:00 AM" | Start time pre-filled for a new schedule. |
| default_end_time | "5:00 PM" | End time pre-filled for a new schedule. |
Stored value
schedule:
scheduleType: range # single | range | multiple
startDate: "2026-03-01"
endDate: "2026-03-05" # range only
additionalDates: [] # multiple only
defaultStartTime: "9:00 AM"
defaultEndTime: "5:00 PM"
timeOverrides:
- { overrideType: dayOfWeek, dayOfWeek: saturday, startTime: "10:00 AM", endTime: "2:00 PM" }
- { overrideType: date, date: "2026-03-02", startTime: "1:00 PM", endTime: "3:00 PM" }timeOverrides entries come in two flavors:
overrideType: dayOfWeek— applies to every selected date that falls on that weekday.overrideType: date— applies to exactly one specific selected date (adate-type override takes precedence over adayOfWeek-type override for the same day), useful for a one-off exception within arange/multipleschedule that a day-of-week override can't express.
The shape is deliberately domain-neutral, so templates decide what a schedule means — an event run, a shop's hours, or a booking window.
Dependencies
@gavinrigs/decap-plugin-core- Peer:
react
