simple-search-dropdown v0.2.2
Instalação
Instalando simple-search-dropdown
:
npm install simple-search-dropdown
# OU
yarn add simple-search-dropdown
# OU
pnpm add simple-search-dropdown
Uso/Exemplos
!IMPORTANT
Caso queira usar somente o componenteSearchSelect
, é necessário importar o CSS como mostrado abaixo:
@import url('../node_modules/simple-search-dropdown/dist/style.css');
Dados como Array
import { SearchSelect } from 'simple-search-dropdown'
function App() {
const data = [
{value: 1, label: "Abacaxi"},
{value: 2, label: "Banana"},
{value: 3, label: "Avião"},
{value: 4, label: "Bola"},
{value: 5, label: "Lula"},
{value: 6, label: "Faca"},
{value: 7, label: "Magnus"},
{value: 8, label: "Xadrez"},
]
return (
<main className="flex flex-col justify-center items-center ">
<div className="flex flex-col mt-2">
<SearchSelect data={data} placeholder="Pesquisar"} />
</div>
</main>
)
}
export default App
Dados como função Async
import { SearchSelect } from 'simple-search-dropdown'
function App() {
const promiseOptions = () =>
new Promise((resolve) => {
setTimeout(() => {
const data = [
{value: 1, label: "Abacaxi"},
{value: 2, label: "Banana"},
{value: 3, label: "Avião"},
{value: 4, label: "Bola"},
{value: 5, label: "Lula"},
{value: 6, label: "Faca"},
{value: 7, label: "Magnus"},
{value: 8, label: "Xadrez"},
]
resolve(data);
}, 1000);
});
return (
<main className="flex flex-col justify-center items-center ">
<div className="flex flex-col mt-2">
<SearchSelect data={promiseOptions} placeholder="Pesquisar"} />
</div>
</main>
)
}
export default App
Usando react-hook-form
import { useForm } from 'react-hook-form'
import { SearchSelect } from 'simple-search-dropdown'
function App() {
const { handleSubmit, register } = useForm()
const promiseOptions = () =>
new Promise((resolve) => {
setTimeout(() => {
const data = [
{ value: 1, label: 'Abacaxi' },
{ value: 2, label: 'Banana' },
{ value: 3, label: 'Avião' },
{ value: 4, label: 'Bola' },
{ value: 5, label: 'Lula' },
{ value: 6, label: 'Faca' },
{ value: 7, label: 'Magnus' },
{ value: 8, label: 'Xadrez' },
]
resolve(data)
}, 1000)
})
return (
<main className="flex flex-col justify-center items-center ">
<form className="flex flex-col mt-2" onSubmit={handleSubmit((data) => console.log(data))}>
<SearchSelect data={promiseOptions} placeholder="Pesquisar" {...register('abc')} />
<button type="submit" className="p-2 bg-blue-500 text-white mt-2">
Submit
</button>
</form>
</main>
)
}
export default App
Criando seu próprio
É possível fazer seu próprio componente usando o Select
e useDataSearch
do pacote.
!NOTE
O uso do CSS presente na dependência se torna totalmente OPCIONAL aqui.
import { Select, useDataSearch } from 'simple-search-dropdown'
function YourSelectComponent({ data, name }) {
const itemFiltered = useDataSearch(data, name)
return (
<Select name={name}>
<Select.Trigger>
<Select.Search />
</Select.Trigger>
<Select.Panel>
{itemFiltered.length > 0 &&
itemFiltered.map((item, idx) => <Select.Item key={idx} value={item.value} label={item.label} />)}
</Select.Panel>
</Select>
)
}
export default YourSelectComponent
!WARNING
Os dados vindo do parâmetrodata
precisa ser uma lista com o seguinte formato:{ label: "", value: 0 || "" }
. E o parâmetroname
servirá para vincular o campo com os dados filtrados.
Funcionalidades
- Faz a menor quantidade de requisições possível.
- Aceita lista de dados ou uma função assíncrona.
- Componente primitivo para customização pessoal.
- Compatível com react-hook-form.
- Sistema de pesquisa e dropdown em um só.
Para Desenvolvedores
Contribuições são sempre bem-vindas!
Conhecimento
É necessário o entendimento de TypeScript para contribuições envolvendo os componentes. Além do TypeScript, entender como funciona o react e ref são essenciais.
Pré requisito
- Git
- Node.js
- IDE (VSCode/Zed)
Contribuindo
- Crie um fork do projeto clicando no botão localizado a direita do nome do repositório.
- Clone o repositório que está na sua conta do github. (Siga os passos do próximo tópico)
- Faça suas alterações.
- Commit e abra um Pull Request.
- Espere a aprovação de algum desenvolvedor.
Rodando localmente
Clone o projeto
git clone https://github.com/KingTimer12/simple-search-dropdown.git
Entre no diretório do projeto
cd simple-search-dropdown
Instale as dependências
pnpm install
Rodando os testes
Para rodar os testes, rode o seguinte comando
npm run test
# OU
yarn test
# OU
pnpm test
Tecnologias
- Tailwind - CSS Framework
- Zustand - State-management Library
- react-remove-scroll-bar - Dependency to Remove Scroll Bar
- React - Web Library
Licença
Autores
10 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago