Project

page_stack

0.0
No commit activity in last 3 years
No release in over 3 years
This GEM make easy the navigation with stacked pages
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

PageStack

Code Climate

Essa GEM fornece a possibilidade de navegação de paǵinas sobrepostas, facilitando assim a abertura de novas páginas em perder o conteúdo anterior.

Requisitos

  • Rails 4.2+
  • jQuery 2+
  • Remotipart (Envio de formulário por Ajax)

Instalação

Adicione essa linha no Gemfile do projeto:

gem 'page_stack'

Instale a gem utilizando o comando abaixo no diretório raiz da aplicação:

$ bundle install

Adicione no seu arquivo application_controller.rb a seguinte configuração:

class ApplicationController < ActionController::Base
  include PageStack
  layout :pagestack_layout 
end

Adicione a seguinte linha no seu arquivo application.css:

*= require pagestack

Adicione a seguinte linha no seu arquivo application.js:

//= require pagestack
//= require jquery.remotipart

Para inicializar o plugin você utilizará o código abaixo:

var pagestack = new PageStack().init();

Seus eventos são baseados em delegator do jQuery e estão vinculados ao document.

Configuração

Você possui três parâmetros de configuração para o pagestack:

  • form : (padrão: 'form') Informe o elemento form que ele deverá o recurso "submit" via AJAX.
  • loading : (padrão: true) Informa se o ícone de carregando será exibido para informar ao usuário o progresso de ações AJAX.
  • closeOnEsc : (padrão: false) Permite fechar o pagestack ativo com a tecla ESC
  • debug : (padrão: false) Exibe as mensagens de testes no console.log
var pagestack = new PageStack({
    form: 'form',
    loading: true,
    closeOnEsc: false,
    debug: false
}).init();

Utilização

Você pode abrir multiplas páginas sobrepostas apenas configurando os links em cada página.

Para indicar que um link abrirá uma pagestack adicione a classe pagestack ao seu elemento:

    = link_to "Abrir Página", root_path, class: 'pagestack'

Para indicar o título da nova página utilize o atributo data pagestack-title:

    = link_to "Abrir Página", root_path, class: 'pagestack', data: {'pagestack-title' => 'Título da minha página sobreposta'}

Caso você abra uma sub-página sobreposta e precise que ao fechar essa página você recarregue o conteúdo da página origem você precisa indicar o atributo data pagestack-refresh-parent-onclose:

    = link_to "Abrir Página", root_path, class: 'pagestack', data: {'pagestack-refresh-parent-onclose' => true}

Caso você precise alterar o conteúdo da própria pagestack (self) ao invés de abrir uma nova você pode informar o atributo data-pagestack-replace-content:

    = link_to "Abrir Página", root_path, class: 'pagestack', data: {'pagestack-refresh-replace-content' => true}

Para ativar/desativar o fechamento do pagestack ativo através da tecla ESC utilize o atributo data-pagestack-close-esc. O padrão é false:

    = link_to "Abrir Página", root_path, class: 'pagestack', data: {'pagestack-esc-close' => 'true'}
    = link_to "Abrir Página", root_path, class: 'pagestack', data: {'pagestack-esc-close' => 'false'}

Eventos Javascript

Ao iniciar o plugin você recebe o retorno e pode atribuir a uma variável (Ex: var pagestack no código de instalação):

var pagestack = PageStack().init();
var current_page = pagestack.getItem(elemento_dentro_do_pagestack);
pagestack.close(elemento_dentro_do_pagestack);
  • init: Método que inicia o pagestack e atriu os eventos
  • close(elemento): Fecha o pagestack de um elemento indicado (pode ser qualquer elemento dentro daquele pagestack, inclusive o próprio elemento pagestack).
  • getItem(elemento): Retorna o elemento "container" do pagestack a partir de um elemento interno indicado.

Comportamento

Formulário

  • Receberá por padrão o atributo data-pagestack-replace-content para carregar o conteúdo de retorno na própria página do formulário.
  • Receberá por padrão o atributo rails data-remote para processamento o "submit" por AJAX através do plugin jquery.remotipart.

Links

  • Os links com method=delete (Links de exclusão) receberão por padrão o atributo rails data-remote para processamento via AJAX.

Referências