npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

reachjs

v0.2.8

Published

Biblioteca JavaScript para pesquisa rápida de páginas em sua aplicação.

Downloads

11

Readme

ReachJS

Build Status Coverage Status GitHub issues NPM Version LICENSE Built With %E2%9D%A4

Biblioteca JavaScript para pesquisa rápida de páginas em sua aplicação.

Seus usuários poderão encontrar mais facilmente as páginas da sua aplicação utilizando apenas o teclado.

ReachJS funciona basicamente como uma ferramenta de busca para o usuário (como o Pesquisar do Windows ou o Spotlight do macOS), utilizando os dados que são passados na inicialização da biblioteca.

Veja alguns exemplos

Instalação

Você pode fazer o download direto do arquivo clicando aqui e importar ele na página como no exemplo.

<script type="text/javascript" src="./libs/reachjs.js"></script>

Ou pode também fazer o download via NPM ou Yarn.

npm install --save reachjs
yarn add reachjs

E importa-lo nos arquivos .js utilizando webpack ou browserify por exemplo.

import reachjs from 'reachjs';

// ou

var reachjs = require('reachjs');

Utilização

Para inicializar a biblioteca, o único parâmetro obrigatório são as rotas disponíveis da sua aplicação. As demais configurações têm seus valores padrões caso você não queira customizá-los.

Rotas

O parâmetro de rotas pode ser passado tanto como um array de items como uma URL para serem resgatadas.

Para carregar como um array de items é necessário passar a chave routes no objeto de inicialização.

import reachjs from 'reachjs';

reachjs.init({
  routes: [{
    title: 'Home',
    path: 'home',
    description: 'Página principal do sistema',
  }, {
    title: 'Quem Somos',
    path: '/quem_somos',
    description: 'Nós somos o que está nessa pequena descrição aqui',
  }, {
    title: 'Contato',
    path: 'contato',
    description: 'Nós temos várias formas de contato e estamos localizados nesse lugar aqui bem bacana :)',
  }]
});

Ou utilizar o método setRoutes exposto pela biblioteca.

import reachjs from 'reachjs';

reachjs.setRoutes([ ... ]); // mesmo array do exemplo anterior

reachjs.init();

Para carregar os items por uma URL é necessário passar a chave routesUrl no objeto de inicialização.

import reachjs from 'reachjs';

reachjs.init({
  routesUrl: 'http://app.minhaaplicacao.com.br/sistema/rotas'
});

Ou utilizar o método setRoutesUrl exposto pela biblioteca.

import reachjs from 'reachjs';

reachjs.setRoutesUrl('http://app.minhaaplicacao.com.br/sistema/rotas');

reachjs.init();

Para configurações especiais na url de rotas você pode utilizar a chave routesConfig no objeto de inicialização. As alterações que podem ser feitas são:

  • Parâmetro de pesquisa da URL (searchQueryParam), que por padrão é q
  • Headers diferentes na requisição (customHeader)
import reachjs from 'reachjs';

reachjs.init({
  routesConfig: {
    searchQueryParam: 'search',
    customHeader: {
      Authorization: 'UmVhY2hKUw=='
    }
  }
});

Ou utilizar o método setRoutesConfig exposto pela biblioteca.

import reachjs from 'reachjs';

reachjs.setRoutesConfig({
  searchQueryParam: 'search',
  customHeader: {
    Authorization: 'UmVhY2hKUw=='
  }
});

reachjs.init();

Internacionalização

Os idiomas com suporte são:

  • Português (pt)
  • Inglês (us)

O idioma padrão é o português.

Para selecionar um idioma diferente é necessário passar a chave locale no objeto de inicialização.

import reachjs from 'reachjs';

reachjs.init({
  locale: 'us'
});

Ou utilizar o método setLocale exposto pela biblioteca.

import reachjs from 'reachjs';

reachjs.setLocale('us');

reachjs.init();

Teclas para disparo

Você pode customizar as teclas que irão fazer o ReachJS aparecer na tela. É obrigatório passar 2 teclas, sendo que a primeira tecla deverá obrigatoriamente ficar pressionada e a segunda ser apertada durante o pressionamento da primeira tecla.

As teclas padrões são CTRL + SPACEBAR e seus respectivos keyCodes são 17 e 32.

Para utilizar teclas de disparo diferentes é necessário passar a chave openKeys no objeto de inicialização.

import reachjs from 'reachjs';

reachjs.init({
  openKeys: [16, 18] // SHIFT + ALT
});

Ou utilizar o método setOpenKeys exposto pela biblioteca.

import reachjs from 'reachjs';

reachjs.setOpenKeys([16, 18]);

reachjs.init();

OBS.: Essa configuração aceita apenas o keyCode das teclas. Os keyCodes podem ser encontrados neste link.

Evento de item selecionado

Você pode customizar o evento que é disparado sempre que o usuário escolher um dos items pesquisado.

Por padrão o ReachJS vai apenas redirecionar o usuário para o parâmetro path passado no objeto da rota selecionada.

Para disparar um evento diferente é necessário passar a chave onSelect no objeto de inicialização.

import reachjs from 'reachjs';

reachjs.init({
  onSelect: data => {
    alert(`Você será redirecionado para a página ${data.title}.`);
    window.location = data.path;
  }
});

Ou utilizar o método setOnSelect exposto pela biblioteca.

import reachjs from 'reachjs';

reachjs.setOnSelect(data => {
  // ...
}));

reachjs.init();

Pendências

  • ~~Demonstração visual de carregando enquanto busca as rotas via URL~~ 1 e 2
  • ~~Melhorar a forma de filtrar os dados para encontrar mais resultados~~ 1

Novas pendências aqui.

License

MIT license.