feat(ansible): default source/playbook dropdowns to the first item
CI / lint (push) Successful in 2s
CI / unit (push) Successful in 46s
CI / integration (push) Successful in 2m18s
CI / publish (push) Successful in 1m0s

The schedule and host run forms opened their Source/Playbook <select>s on a
"— choose … —" placeholder, forcing an extra click. Default them to the first
item and cascade the dependent fields so the initial state is real:

- Remove the placeholder options (schedules source+playbook, host source+
  playbook, and the shared _playbook_options fragment).
- schedules(): pass sel_source (first source, or the edited schedule's) and
  that source's pre-rendered playbooks so the playbook dropdown starts populated
  (create mode too, no longer the all-sources union).
- Cascade on load/change: the source <select> fires playbook-options then
  (hx-on::after-settle) re-triggers the playbook <select>, which loads that
  playbook's variable fields. Host form drives the whole chain from a load
  trigger; schedule create mode loads vars via the playbook <select>'s own load
  trigger, while edit mode keeps its server-rendered prefill untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-30 23:35:01 -04:00
parent efc11c1837
commit 524fd1f509
4 changed files with 20 additions and 14 deletions
@@ -1,6 +1,7 @@
{# <option> list for a playbook <select>, populated when a source is chosen.
Returned by /ansible/playbook-options. `selected` pre-selects one (edit). #}
<option value="">— choose playbook —</option>
Returned by /ansible/playbook-options. `selected` pre-selects one; with none
given the browser selects the first, so the dropdown never sits on a
placeholder. #}
{% for pb in playbooks %}
<option value="{{ pb }}" {% if pb == selected %}selected{% endif %}>{{ pb }}</option>
{% endfor %}