# Availability
URL: https://pro.rv-grid.com/guides/event-scheduler/scheduling-rules/availability/
Source: src/content/docs/guides/event-scheduler/scheduling-rules/availability.mdx
Description: Show working time, blocked time, breaks, holidays, and resource-specific availability in Event Scheduler.
Availability entries describe time ranges that are working, blocked, break, or holiday periods. They can apply globally or to specific resources.

For the full precedence model between availability, calendars, and conflict policies, see the [Scheduling Rules overview](../).

```ts
grid.eventSchedulerAvailability = [
  {
    id: 'business-hours',
    kind: 'working',
    title: 'Business hours',
    startDateTime: '2026-06-08T08:00:00.000Z',
    endDateTime: '2026-06-08T18:00:00.000Z',
  },
  {
    id: 'room-a-maintenance',
    resourceId: 'room-a',
    kind: 'blocked',
    title: 'Maintenance',
    reason: 'Projector replacement',
    startDateTime: '2026-06-08T13:00:00.000Z',
    endDateTime: '2026-06-08T15:00:00.000Z',
  },
];

grid.eventScheduler = {
  view: 'resourceTimeline',
  weekStartDate: '2026-06-08',
  nonWorkingTime: {
    enabled: true,
    workingDays: [1, 2, 3, 4, 5],
    workingHours: { start: '08:00', end: '19:00' },
    className: 'outside-shift-hours',
  },
};
```

Use `nonWorkingTime.workingHours` when the whole scheduler shares one operating window. Slots outside the configured windows are marked as closed/outside working hours and receive the scheduler non-working background. They also expose `data-event-scheduler-non-working="true"` and `data-event-scheduler-availability-reason="Outside working hours"` so apps can inspect or customize the cells without replacing the renderer.

Use named calendars when working hours differ by calendar or resource:

```ts
grid.eventScheduler = {
  view: 'week',
  weekStartDate: '2026-06-08',
  calendars: {
    primaryCalendarId: 'hospital-weekday',
    className: 'outside-shift-hours',
    calendars: [{
      id: 'hospital-weekday',
      name: 'Hospital weekday',
      timeZone: 'UTC',
      workingDays: [1, 2, 3, 4, 5],
      workingHours: { start: '08:00', end: '19:00' },
      holidays: [],
      hoursPerDay: 8,
    }],
  },
};
```

## Availability and Calendars

`eventSchedulerAvailability` and `eventScheduler.calendars` can be used together. They are resolved with these rules:

- `kind: 'blocked'`, `kind: 'holiday'`, and `kind: 'break'` entries are unavailable windows. Events that overlap them receive `blocked-time` conflicts.
- `kind: 'working'` entries are dated working windows. If matching working availability exists for a resource on a date, the event must be fully covered by those working intervals or it receives an `outside-availability` conflict.
- Calendars are the fallback for `outside-availability` checks when no matching dated `kind: 'working'` availability exists for that resource/date.

Use calendars for the recurring baseline, such as weekday hours, weekend crews, and resource calendars. Use availability for dated changes, such as extra opening hours, PTO, maintenance, one-off breaks, or temporary closures.

Timeline cells expose availability data attributes so apps can style or inspect availability state without replacing the scheduler renderer.
