Skip to content

refactor: миграция v-model на defineModel (DateTimePicker и другие) #59

Description

@IgorShevchik

Контекст

В PR #55 B24DateTimePicker использует «ручную» комбинацию ref + watch + emits('update:modelValue') вместо современного defineModel() (Vue 3.4+). Это исторически сложилось из паттерна старых компонентов библиотеки.

Минусы текущего подхода:

  • При внешнем обновлении modelValue во время открытого попапа watch сразу перезаписывает internalValue, что может прервать пользовательский флоу (особенно после step.value = 'time').
  • defineModel({ local: true }) решает это автоматически.

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

  1. Пройтись по всем компонентам с modelValue в src/runtime/components/*.vue и оценить, какие можно мигрировать на defineModel без breaking changes.
  2. Проверить совместимость с useComponentProps и useFormField.
  3. Сделать одним PR с миграцией пачкой (например 10–15 компонентов за раз).
  4. Снапшот-тесты должны остаться зелёными.

Definition of Done

  • Все компоненты с modelValue используют defineModel (или явно задокументировано, почему нет).
  • Tests + snapshots зелёные.
  • vue-tsc зелёный.

Приоритет: P2 — внутренняя чистка, не блокер.


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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions