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
valueWeeklySchedule—Controlled weekly local-time availability.
defaultValueWeeklySchedule—Initial weekly local-time availability in uncontrolled mode.
onChange(value: WeeklySchedule) => void—Called after a weekday availability change.
exceptionsDateException[]—Controlled date exceptions.
onExceptionsChange(exceptions: DateException[]) => void—Called after date exceptions change.
defaultRangeTimeRange—Range created when enabling a weekday. Default: 09:00–17:00.
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 6—First displayed weekday, where 0 is Sunday. Default: 1.
showExceptionsboolean—Whether to render date exceptions. Default: true.
labelsWeeklyScheduleEditorLabels—Translatable 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.
defaultRangeTimeRange—Range created when enabling a weekday. Default: 09:00–17:00.
weekStartsOnWeekday—First displayed weekday, where 0 is Sunday. Default: 1.
showExceptionsboolean—Whether to render date exceptions. Default: true.
labelsWeeklyScheduleEditorLabels—Translatable 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']"
/>