, correção de UX para gerara prévia do romaneio
This commit is contained in:
@@ -131,10 +131,15 @@ export default class extends Controller {
|
||||
this.buscaTarget.focus()
|
||||
}
|
||||
|
||||
// ── Prévia (bloco <details> nativo) ─────────────────────────────────────
|
||||
// Abrir e fechar é do NAVEGADOR — o <details> não depende deste controller,
|
||||
// e é isso que mantém a prévia viva quando o JavaScript não carrega. O que
|
||||
// sobra aqui é só recarregar a folha depois de uma edição.
|
||||
// ── Prévia (pop-up por :target, CSS puro) ───────────────────────────────
|
||||
// Abrir, fechar e trocar de folha são do NAVEGADOR: link para `#previa`,
|
||||
// link para `#sem-previa` e links `?veiculo=X#previa`. Nada disso depende
|
||||
// deste controller — é o que mantém a prévia viva quando o JS não carrega.
|
||||
// O que sobra aqui é recarregar a folha depois de uma edição.
|
||||
previewAberta() {
|
||||
return this.hasOverlayTarget && this.overlayTarget.matches(":target")
|
||||
}
|
||||
|
||||
carregarPreview() {
|
||||
if (!this.hasPreviewTarget) return
|
||||
|
||||
@@ -145,23 +150,21 @@ export default class extends Controller {
|
||||
this.previewDesatualizado = false
|
||||
}
|
||||
|
||||
// Chamada depois de cada gravação. Com o bloco FECHADO não gera PDF nenhum —
|
||||
// Chamada depois de cada gravação. Com o pop-up FECHADO não gera PDF nenhum —
|
||||
// o `loading="lazy"` do iframe já garante isso, e recarregar o src de um
|
||||
// iframe escondido forçaria o servidor a montar um PDF que ninguém vai ver.
|
||||
atualizarPreview() {
|
||||
if (!this.hasOverlayTarget || !this.overlayTarget.open) {
|
||||
if (!this.previewAberta()) {
|
||||
this.previewDesatualizado = true
|
||||
return
|
||||
}
|
||||
this.carregarPreview()
|
||||
}
|
||||
|
||||
// O operador pode abrir a prévia depois de ter editado: neste caso o iframe
|
||||
// ainda mostra a folha antiga, então recarregamos no momento da abertura.
|
||||
aoAbrirPreview() {
|
||||
if (this.hasOverlayTarget && this.overlayTarget.open && this.previewDesatualizado) {
|
||||
this.carregarPreview()
|
||||
}
|
||||
// O operador pode abrir a prévia DEPOIS de editar: aí o iframe ainda mostra a
|
||||
// folha antiga. Como quem abre é o `:target`, o gancho é o hashchange.
|
||||
aoTrocarHash() {
|
||||
if (this.previewAberta() && this.previewDesatualizado) this.carregarPreview()
|
||||
}
|
||||
|
||||
// ── Infra ───────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user