Dicas

Nesta seção, compartilho algumas dicas para aprimorar a aparência da aplicação dependendo da plataforma de acesso. Por exemplo, na tela de URLs, existem dois botões: um nativo e outro web. Para melhorar a usabilidade, o botão web pode ser ocultado quando a aplicação for acessada pelo app iOS ou Android.

Escondendo elementos web

Para ocultar elementos web quando a aplicação Rails é acessada por um app nativo, é possível utilizar o helper Rails:

hotwire_native_app?

Com base nisso, é possível criar um helper em ApplicationHelper que adicione uma classe do Tailwind, como hidden, garantindo que o botão web seja exibido apenas em navegadores e ocultado em acessos via iOS.

Criando Helper

module ApplicationHelper
  def hidden_when_native
    "hidden" if hotwire_native_app?
  end
end

Uso no markup:

<%= link_to "New url", new_url_path, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium #{hidden_when_native}", 
  data: { controller: "button", bridge_title: "New Url" } %>

Agora, o botão web é ocultado quando a aplicação Rails é acessada via plataforma nativa, mas permanece visível na versão web.

Screenshot 2024-12-22 at 12.12.04.png

Melhorando o botão "Voltar" na navegação em stack

Quando uma nova tela é acessada, a navegação em stack exibe um símbolo < seguido do nome da tela anterior. Em casos onde o nome da tela é muito longo, o botão "Voltar" pode ficar desproporcional e visualmente estranho. Para resolver isso, é possível configurar o Hotwire Native para exibir apenas o símbolo <.

Hotwire.config.backButtonDisplayMode = .minimal

Que tal aproveitar para adicionar mais uma melhoria antes de executar novamente a aplicação iOS?

Adicionando o botão "Done" nos modais

Nos modais, atualmente, é necessário realizar um gesto de slide down para fechá-los. O Hotwire Native oferece uma configuração para adicionar automaticamente um botão com o título "Done" em todos os modais. Assim, o modal pode ser fechado tanto pelo gesto de slide down quanto clicando no botão ** "Done"**.

Hotwire.config.showDoneButtonOnModals = true

Execute o aplicativo com Command + R para visualizar como as alterações aparecem nas telas. Verifique especialmente os modais, garantindo que o botão "Done" foi adicionado corretamente e que sua funcionalidade de fechamento está funcionando como esperado.

Screenshot 2024-12-22 at 12.24.01.png

Se não for necessário exibir o botão "Voltar" em uma determinada tela, uma solução simples é adicionar o atributo data-turbo-action: replace no helper link_to. Essa configuração evita que a navegação seja empilhada na stack.

<%= link_to "URLs", urls_path, class: "text-white hover:text-purple-200", data: { turbo_action: "replace" } %>