1.1.0 • Published 6 months ago

gridnd v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

🚀 Funcionalidades

  • 📦 Widgets personalizáveis: Crie um grid com itens de tamanhos variáveis (sm, md, lg, xl).
  • ↔️ Arrastar e soltar: Reordene os cards de forma simples com drag-and-drop.
  • 👁️ Ocultar itens: Cada card pode ser ocultado ou redimensionado.

📦 Instalação

npm install gridnd
# ou
yarn add gridnd

🛠️ Uso

import { Droppable, Draggable, reorderItens } from 'gridnd'
import 'gridnd/style.css'

import { useState } from 'react';
import { Card, cards, CardProps } from '@/components/Card';


export default function Home() {
  const [widgets, setWidgets] = useState<CardProps[]>(cards);

  function handleDropMove(idOrigin: string, idDestiny: string) {
    const indexOrigin = widgets.findIndex(item => item.id.toString() === idOrigin);
    const indexDestiny = widgets.findIndex(item => item.id.toString() === idDestiny);
    
    const result = reorderItens(widgets, indexOrigin, indexDestiny);

    setWidgets(result);
  }

  return (
    <div className="w-screen h-screen bg-slate-900 p-4">
      <Droppable style={{ backgroundColor: '#1e293b' }}>   
        {widgets.map(item =>
          <Draggable
            key={item.id}
            id={item.id.toString()}
            size={item.size}
            onDragMove={handleDropMove}
            isSizingDynamic
            onHidden={() => {}}
          >
            <Card colorStyle={item.colorStyle} title={item.title}/>
          </Draggable>
        )}
      </Droppable>
    </div>
  );
}

📚 Documentação

Props do componente :

Esse componente é a area de arraste dos objetos, ela é a responsável por organizar os itens em grid.

PropTipoDescrição
ChildrenReactNodeÉ necessário passarmos para dentro do componentes filhos

Props do componente :

Esse componente é o que torna os objetos arrastáveis.

PropTipoDescrição
idStringID do componente a ser arrastado.
size'sm' ou 'md' ou 'lg' ou 'xl'Tamanho que o componente irá ocupar na grid
onDragMove(idOrigin: string, idDestiny: string) => voidFunção responsável por gerenciar o arraste dos itens
onHidden (opcional)() => voidFunção responsável pelo clique em ocultar os cards
isSizingDynamic (opcional)BooleanVerifica se o card pode alterar o tamanho
availableSizes (opcional)('sm' ou 'md' ou 'lg' ou 'xl')[]Representa os tamanhos que os cards podem ter
ChildrenReactNodeÉ necessário passarmos O Componente que desejamos que fique dentro do card

Função reorder:

Essa função é uma função padrão para reordenação dos cards.

export function reorderItens<T>(list: T[], indexOrigin: number, indexDestiny:number){
    const result = Array.from(list);
    const [removed] = result.splice(indexOrigin, 1);
    result.splice(indexDestiny, 0, removed);
  
    return result;
  }

🖼️ Demonstração

gridnd

🏗️ Contribuição

Contribuições são bem-vindas!

📄 Licença

Este projeto está sob a licença MIT.


1.1.0

6 months ago

1.0.77

6 months ago

1.0.76

6 months ago

1.0.75

6 months ago

1.0.74

6 months ago

1.0.73

6 months ago

1.0.72

6 months ago

1.0.71

6 months ago

1.0.70

6 months ago

1.0.69

6 months ago

1.0.68

6 months ago

1.0.67

6 months ago

1.0.66

6 months ago

1.0.65

6 months ago

1.0.64

6 months ago

1.0.63

6 months ago

1.0.62

6 months ago

1.0.61

6 months ago

1.0.60

6 months ago

1.0.59

6 months ago

1.0.58

6 months ago

1.0.57

6 months ago

1.0.56

6 months ago

1.0.55

6 months ago

1.0.54

6 months ago

1.0.53

6 months ago

1.0.52

6 months ago

1.0.51

6 months ago

1.0.50

6 months ago

1.0.49

6 months ago

1.0.48

6 months ago

1.0.47

6 months ago

1.0.46

6 months ago

1.0.45

6 months ago

1.0.44

6 months ago

1.0.43

6 months ago

1.0.42

6 months ago

1.0.41

6 months ago

1.0.40

6 months ago

1.0.39

6 months ago

1.0.38

6 months ago

1.0.37

6 months ago

1.0.36

6 months ago

1.0.35

6 months ago

1.0.34

6 months ago

1.0.33

6 months ago

1.0.32

6 months ago

1.0.31

6 months ago

1.0.30

6 months ago

1.0.28

6 months ago

1.0.27

6 months ago

1.0.26

6 months ago

1.0.25

6 months ago

1.0.24

6 months ago

1.0.23

6 months ago

1.0.22

6 months ago

1.0.21

6 months ago

1.0.20

6 months ago

1.0.19

6 months ago

1.0.18

6 months ago

1.0.17

6 months ago

1.0.16

6 months ago

1.0.15

6 months ago

1.0.14

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.10

6 months ago

1.0.9

6 months ago

1.0.8

6 months ago

1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.1

6 months ago

1.0.0

6 months ago