Ревью: oob-обновление панели действий при свопе источника
Кнопка «Применить» (завязана на HasLinks) лежит вне #source-block и не обновлялась при htmx-свопе выбора источника — в краевом случае (пустой предпросмотр из-за коллизии) рассинхронивалась с превью до полной перезагрузки. Выделил панель в партиал review_action_bar с id=action-bar; reviewBlockAction теперь рендерит review_source_swap — свежий #source-block плюс oob-копию панели (hx-swap-oob), так кнопка синхронно отражает HasLinks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,12 +61,20 @@
|
||||
</div>
|
||||
|
||||
<!-- Панель действий (выходы из ревью — обычные формы, полная навигация) -->
|
||||
<div class="action-bar">
|
||||
<span class="grow">{{if .HasLinks}}Превью готово — можно применять.{{else}}Подтверди источник, чтобы получить превью раскладки.{{end}}</span>
|
||||
<form method="post" action="/ui/downloads/{{.ID}}/defer"><button class="btn btn-lg" type="submit">🕗 Позже</button></form>
|
||||
<form method="post" action="/ui/downloads/{{.ID}}/cancel"><button class="btn btn-lg btn-danger" type="submit">❌ Отклонить</button></form>
|
||||
{{if .HasLinks}}<form method="post" action="/ui/downloads/{{.ID}}/apply"><button class="btn btn-lg btn-primary" type="submit">✅ Применить</button></form>{{end}}
|
||||
</div>
|
||||
{{template "review_action_bar" .}}
|
||||
|
||||
</main>
|
||||
{{end}}
|
||||
|
||||
{{/* Панель действий ревью. Живёт вне #source-block, но зависит от HasLinks
|
||||
(есть ли превью раскладки), поэтому при свопе источника обновляется oob
|
||||
из того же ответа (ActionBarOOB → hx-swap-oob). Выходы из ревью — обычные
|
||||
POST-формы без hx-* (полная навигация, см. web-ui.md). */}}
|
||||
{{define "review_action_bar"}}
|
||||
<div class="action-bar" id="action-bar"{{if .ActionBarOOB}} hx-swap-oob="true"{{end}}>
|
||||
<span class="grow">{{if .HasLinks}}Превью готово — можно применять.{{else}}Подтверди источник, чтобы получить превью раскладки.{{end}}</span>
|
||||
<form method="post" action="/ui/downloads/{{.ID}}/defer"><button class="btn btn-lg" type="submit">🕗 Позже</button></form>
|
||||
<form method="post" action="/ui/downloads/{{.ID}}/cancel"><button class="btn btn-lg btn-danger" type="submit">❌ Отклонить</button></form>
|
||||
{{if .HasLinks}}<form method="post" action="/ui/downloads/{{.ID}}/apply"><button class="btn btn-lg btn-primary" type="submit">✅ Применить</button></form>{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
@@ -72,3 +72,9 @@
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
{{/* Ответ на своп выбора источника: свежий #source-block + oob-обновление
|
||||
панели действий (#action-bar), чтобы кнопка «Применить» синхронно отражала
|
||||
актуальный HasLinks. Рендерится с ActionBarOOB=true (reviewBlockAction). */}}
|
||||
{{define "review_source_swap"}}{{template "review_source_block" .}}
|
||||
{{template "review_action_bar" .}}{{end}}
|
||||
|
||||
Reference in New Issue
Block a user