Skip to content

feat(DateTimePicker): range-режим и top-level пропсы min/max/isDateDisabled #57

Description

@IgorShevchik

Контекст

PR #55 ввёл B24DateTimePicker с одиночным значением. Range-режим (диапазон даты+времени) — типовой запрос, особенно для отчётов и бронирования.

Сейчас min-value / max-value / is-date-disabled доступны только через pass-through :calendar-проп (см. пример DateTimePickerMinMaxDatesExample.vue). Это работает, но не самоочевидно из публичного API.

Что нужно сделать

  1. Range-режим

    • Проп range: boolean (по аналогии с B24Calendar, B24InputDate).
    • v-model принимает { start: DateValue, end: DateValue }.
    • В попапе два шага сохраняются, но шаг времени должен быть для каждой границы (start time / end time), либо отдельный сценарий "time only for end" — нужно продумать UX.
    • Пресеты получают факультативный диапазонный value или меняем интерфейс на value: DateValue | DateRange | (() => DateValue | DateRange).
  2. Top-level пропсы

    • min-value / max-value: DateValue — пробрасывать в B24Calendar.
    • is-date-disabled / is-date-unavailable: (date: DateValue) => boolean — пробрасывать.
    • Документация и пример DateTimePickerMinMaxDatesExample.vue остаются (но переходят на новый API без :calendar).
  3. Тесты: добавить кейсы в test/components/DateTimePicker.spec.ts.

Definition of Done

  • Range-режим работает с пресетами или явно от него отказались для range
  • min-value / max-value / is-date-disabled доступны как top-level пропсы
  • Документация обновлена, есть пример range
  • Tests + snapshots

Приоритет: P1.


Следствие ревью PR #55.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions