DateRange
Duas datas e os dias entre elas, escolhidas em dois meses lado a lado ou em um, com o intervalo desenhado antes de ser confirmado.
Importação
import { DateRange } from '@vitral/vue';Dois meses
O padrão. Escolha um início e depois um fim; a faixa entre eles segue o ponteiro antes da confirmação. Cada calendário para no próprio mês — os dias de um lado e do outro ficam em branco, em vez de repetir o mês vizinho.
Um mês
O mesmo intervalo num único calendário, para um formulário sem espaço para dois. Sem vizinho para repetir, os dias de um lado e do outro do mês voltam.
Com os intervalos que as pessoas pedem pelo nome
O rodapé é um slot: presets, uma contagem de noites, o que o formulário precisar.
Inline
Sem o campo de texto nem o popup.
Mostrando os dias vizinhos mesmo assim
`show-other-months` passa por cima do que o número de calendários decidiu. Dois meses com as bordas desenhadas: os últimos dias de fevereiro aparecem de novo como os primeiros de março, e um intervalo que cruza a virada é pintado duas vezes.
Como usar
API
Lido de packages/vue/src/components/DateRange/types.ts, então diz o que o componente aceita de fato.
Props
| Nome | Tipo | Descrição |
|---|---|---|
| months | number | Quantos meses mostrar lado a lado. Dois é o padrão e a razão de ser deste componente: um intervalo que cruza a virada do mês é escolhido num só gesto em vez de paginando. Um mostra o mesmo intervalo num único calendário. |
| showOtherMonths | boolean | Se os dias de antes e depois de cada mês são desenhados. Sem definir, ficam ligados num único calendário e desligados em vários: com dois meses lado a lado os últimos dias de um são os primeiros do outro, então a mesma data aparece duas vezes, um intervalo é pintado nas duas cópias e a fronteira entre os calendários deixa de significar algo. As células permanecem — a grade mantém suas seis linhas e sua altura — apenas ficam vazias. |
| dateFormat | string | Um padrão de `formatDate`; o padrão é o `dateFormat` do locale. |
| separator | string | Entre as duas datas na caixa de texto. |
| minDate | Date | null | — |
| maxDate | Date | null | — |
| disabledDates | Date[] | — |
| disabledDays | number[] | Dias da semana que não podem ser escolhidos, 0 = domingo. |
| showClearButton | boolean | Um botão no rodapé que esvazia o intervalo. |
| firstDayOfWeek | number | 0 = domingo; o padrão é o `firstDayOfWeek` do locale. |
| placeholder | string | — |
| inline | boolean | Mostra os calendários no lugar, sem caixa de texto nem popup. |
| size | Size | — |
| variant | InputVariant | O padrão é o `inputVariant` do plugin. |
| invalid | boolean | — |
| disabled | boolean | — |
| readonly | boolean | — |
| fluid | boolean | — |
| placement | OverlayPlacement | — |
| appendTo | string | `'body'` (o padrão), `'self'` para renderizar no lugar, ou um seletor. |
Mais pt, dt e unstyled de BaseProps; veja pass-through e modo sem estilo.
Emits
| Evento | Payload | Descrição |
|---|---|---|
| rangeSelect | range: DateRangeValue | As duas pontas foram marcadas. Dispara quando o intervalo está completo, não no primeiro clique. |
| clear | — | — |
| show | — | — |
| hide | — | — |
| monthChange | event: { month: number; year: number } | — |
Slots
| Nome | Props do slot | Descrição |
|---|---|---|
| date | (props: { date: Date; day: number; today: boolean; inRange: boolean; end: 'start' | 'end' | null; disabled: boolean; otherMonth: boolean }) | O conteúdo de um dia. |
| footer | (props: { range: DateRangeValue; nights: number; clear: () => void }) | Abaixo dos calendários: presets, uma contagem de noites, um par de botões. |