Skip to content

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

@IgorShevchik

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

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions