Skip to content

Нативный паритет select и подготовка репозитория для агентов - #1

Merged
alexstep merged 1 commit into
mainfrom
cursor/agent-ready-select-c0a3
Oct 7, 2026
Merged

alexstep merged 1 commit into
mainfrom
cursor/agent-ready-select-c0a3

Conversation

@alexstep

@alexstep alexstep commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Версия пакета не менялась (1.1.5), в npm ничего не публиковалось, main не затронут.

Что сделано

  • Форма как у нативного <select>: ElementInternals пишет значение в FormData (для multiple — по одному полю на значение, в порядке опций), name отражается в атрибут, required даёт valueMissing, formResetCallback возвращает исходный выбор, disabled и <fieldset disabled> выключают контрол и убирают его из отправки.
  • input и change всплывают и несут detail.value. Программное .value = события не шлёт.
  • Клавиатура и ARIA по паттерну combobox/listbox: стрелки, Home/End, type-ahead, Esc, Enter/Space, фокус на выбранной опции, закрытие по Esc, Tab и клику вне.
  • Авторские <option> больше не уничтожаются при рендере, поэтому опции можно менять после апгрейда.
  • Пустой multiple больше не попадает в форму как строка "null".
  • AGENTS.md, custom-elements.json, типы (required, validity), .cursor/environment.json (установка Bun, зависимостей и Chromium для Playwright).
  • Тесты Playwright и workflow: bun test, e2e, деплой демо на GitHub Pages при push в main.

Что проверено

  • bun test — 33 теста.
  • bunx tsc -p tsconfig.declarations.json --noEmit.
  • Playwright (Chromium): отправка формы, required, input/change, reset, multiple, disabled и fieldset, клавиатура, клик вне, динамические опции, name. 10 тестов.
  • Демо demo.html: выбор с клавиатуры обновляет значение, пустой multiple не попадает в FormData.
  • .cursor/install.sh отрабатывает: bun install без изменений при повторном запуске, системные пакеты Playwright уже стоят.

Бэклог

  1. Пробросить CSS-переменные на попап в режиме shadow-dom и сделать доступным ::part(popup) (сейчас попап в document.body).
  2. Визуальная регрессия демо: light/dark, открытый и закрытый список.
  3. Длинные списки без роста первого кадра.
  4. Локализация validationMessage (сейчас английская строка, как у Chrome).
  5. Слот для своего рендера option без смены value и FormData.
Open in Web Open in Cursor 

Keep the public API and version, and add form validation, combobox behavior, Playwright coverage, CI, and Cloud Agent install.

Co-authored-by: kellas <alex.step.kellas@gmail.com>
@alexstep
alexstep marked this pull request as ready for review October 7, 2026 21:00
@alexstep
alexstep merged commit d89e635 into main Oct 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants