diff --git a/app/javascript/controllers/validacao_controller.js b/app/javascript/controllers/validacao_controller.js index 3b1245c..87708b1 100644 --- a/app/javascript/controllers/validacao_controller.js +++ b/app/javascript/controllers/validacao_controller.js @@ -7,6 +7,7 @@ import { Controller } from "@hotwired/stimulus" export default class extends Controller { static targets = [ "linha", "checkbox", "selecionarTodos", "busca", "buscaVazia", + "barraSelecao", "contadorSelecao", "resumo", "listaCol", "btnResumoLabel", "toggles", "barra", "barraManuais", "percentual", "chipVeiculo", "consolidarBtn", "consolidarHint", @@ -98,6 +99,22 @@ export default class extends Controller { if (linha && linha.classList.contains("hidden")) return c.checked = marcar }) + this.atualizarSelecao() + } + + // ── Barra de ações em massa: só existe quando há seleção ── + // Sem isto os 5 botões de pilar ficavam fixos no topo o tempo todo, comendo + // a altura da lista para não fazer nada (clicar sem seleção só alertava). + atualizarSelecao() { + const n = this.checkboxTargets.filter(c => c.checked).length + if (this.hasContadorSelecaoTarget) this.contadorSelecaoTarget.textContent = n + if (this.hasBarraSelecaoTarget) this.barraSelecaoTarget.classList.toggle("hidden", n === 0) + } + + limparSelecao() { + this.checkboxTargets.forEach(c => (c.checked = false)) + if (this.hasSelecionarTodosTarget) this.selecionarTodosTarget.checked = false + this.atualizarSelecao() } // O pilar está ativo (ring-2) na entrega indicada? @@ -137,8 +154,7 @@ export default class extends Controller { valor: valor }) ids.forEach(id => this.setToggle(id, tipo, !remover)) - this.checkboxTargets.forEach(c => c.checked = false) - if (this.hasSelecionarTodosTarget) this.selecionarTodosTarget.checked = false + this.limparSelecao() // some a barra de ações junto com a seleção this.atualizarResumo(resp) } diff --git a/app/views/consolidacao_entregas/validar.html.erb b/app/views/consolidacao_entregas/validar.html.erb index d5a7407..9b7253e 100644 --- a/app/views/consolidacao_entregas/validar.html.erb +++ b/app/views/consolidacao_entregas/validar.html.erb @@ -12,38 +12,43 @@ <%# Cabeçalho + controles fixos no topo (no desktop); só a lista de NFs rola. %>
<%= @consolidacao.nome %> · <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>
-<%= @consolidacao.nome %> · <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>
+ <% if @veiculos_sel.any? %><%= icone :caminhao %> <%= @veiculos_sel.join(', ') %> — <% end %> + <%= @classificadas %>/<%= @total_entregas %> + classificadas + · + +<%= @manuais %> manuais + +
+ + <%= link_to revisar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista), + class: 'shrink-0 bg-orange-500 hover:bg-orange-600 text-black font-bold px-4 h-11 rounded-lg flex items-center gap-1 text-sm' do %> + Revisar (Passo 3)<%= icone :avancar, cor: nil %> + <% end %>