WeeklyScheduleEditor

WeeklyScheduleEditor registra quando alguém está disponível no horário de parede local. Escolha-o para uma política de disponibilidade que permanece em janelas HH:mm e exceções locais YYYY-MM-DD; converta para UTC somente no limite do consumer, onde o fuso aplicável é conhecido.

Exemplos

Uma semana de trabalho regular

Cada dia habilitado tem um ou mais intervalos locais. Adicione outro intervalo para um dia dividido ou use o controle de cópia para clonar os intervalos de um dia nos dias escolhidos.

Unavailable
Unavailable

Substituir uma data específica

Exceções substituem seu dia da semana. Um array ranges vazio torna toda aquela data local indisponível; um array não vazio substitui as janelas normais do dia da semana para aquela data.

Unavailable
Unavailable
Unavailable
Unavailable
Unavailable
Unavailable
Exceptions
Dec 25, 2026Unavailable all day
Dec 31, 202610:00–13:00

Quando usar

Use WeeklyScheduleEditor para definir a disponibilidade semanal local habitual de uma pessoa, com exceções ocasionais.

Prefira outro componente quando:

  • Um evento se repete em uma agenda — use RecurrenceSelector, que descreve uma única série recorrente.
  • Pessoas escolhem um slot UTC reservável — use SlotPicker, que converte esses instantes para exibição.
  • A aplicação precisa visualizar eventos concretos — use CalendarView.

Acessibilidade

  • Cada switch de dia da semana tem o respectivo dia como label. Intervalos habilitados expõem controles TimeInput de início e fim nomeados, e um fim inválido recebe marcação de inválido e explicação inline.
  • A ação de cópia abre Popover como diálogo nomeado. Suas checkboxes são alcançáveis por teclado e Apply fica desabilitado até que exista um destino selecionado.
  • O seletor de exceção não adiciona uma data anterior a hoje. Os controles de adicionar e remover, assim como strings de dias e intervalos, vêm de labels.

API e código

NomeTipoObrigatóriaDescrição
valueWeeklyScheduleControlled weekly local-time availability.
defaultValueWeeklyScheduleInitial weekly local-time availability in uncontrolled mode.
onChange(value: WeeklySchedule) => voidCalled after a weekday availability change.
exceptionsDateException[]Controlled date exceptions.
onExceptionsChange(exceptions: DateException[]) => voidCalled after date exceptions change.
defaultRangeTimeRangeRange created when enabling a weekday. Default: 09:00–17:00.
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 6First displayed weekday, where 0 is Sunday. Default: 1.
showExceptionsbooleanWhether to render date exceptions. Default: true.
labelsWeeklyScheduleEditorLabelsTranslatable visible and accessible labels, merged over English defaults.

x-data="lyraWeeklyScheduleEditor({ … })"

OpçãoTipoObrigatóriaDescrição
valuePartial<WeeklySchedule>Weekly local-time availability, merged over the empty seven-day schedule.
exceptionsDateException[]Date-specific availability overrides.
defaultRangeTimeRangeRange created when enabling a weekday. Default: 09:00–17:00.
weekStartsOnWeekdayFirst displayed weekday, where 0 is Sunday. Default: 1.
showExceptionsbooleanWhether to render date exceptions. Default: true.
labelsWeeklyScheduleEditorLabelsTranslatable labels merged over English defaults.

Sem React, você controla a validação de intervalos, a cópia e as regras de substituição por exceção:

html
<div class="lyra-sched">
  <div class="lyra-sched__row">
    <div class="lyra-sched__daycell">
      <label>Segunda-feira <input type="checkbox" checked /></label>
    </div>
    <div class="lyra-sched__ranges">
      <div class="lyra-sched__range">
        <input class="lyra-input" value="09:00" /><span class="lyra-sched__dash"></span
        ><input class="lyra-input" value="17:00" />
      </div>
      <button class="lyra-sched__addrange" type="button">+ Adicionar intervalo</button>
    </div>
  </div>
</div>

<lyra:weekly-schedule-editor> Gerado do lyra-ds/blade v0.10.0.

O comportamento vem de lyraWeeklyScheduleEditor() — instale @lyra-ds/alpine e veja a aba HTML + Alpine.

PropPadrãoObrigatóriaValores de exemplo
valuenull
exceptions[]
defaultRangenull
weekStartsOn1
showExceptionstrue
labels[]
namenull
blade
<lyra:weekly-schedule-editor
    name="availability"
    :week-starts-on="1"
    :value="[
        1 => [['start' => '09:00', 'end' => '12:00'], ['start' => '13:00', 'end' => '18:00']],
        2 => [['start' => '09:00', 'end' => '18:00']],
        3 => [['start' => '09:00', 'end' => '18:00']],
    ]"
    :default-range="['start' => '09:00', 'end' => '17:00']"
/>