1.1.0 • Published 7 months ago

gridnd v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 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

7 months ago

1.0.77

7 months ago

1.0.76

7 months ago

1.0.75

7 months ago

1.0.74

7 months ago

1.0.73

7 months ago

1.0.72

7 months ago

1.0.71

7 months ago

1.0.70

7 months ago

1.0.69

7 months ago

1.0.68

7 months ago

1.0.67

7 months ago

1.0.66

7 months ago

1.0.65

7 months ago

1.0.64

7 months ago

1.0.63

7 months ago

1.0.62

7 months ago

1.0.61

7 months ago

1.0.60

7 months ago

1.0.59

7 months ago

1.0.58

7 months ago

1.0.57

7 months ago

1.0.56

7 months ago

1.0.55

7 months ago

1.0.54

7 months ago

1.0.53

7 months ago

1.0.52

7 months ago

1.0.51

7 months ago

1.0.50

7 months ago

1.0.49

7 months ago

1.0.48

7 months ago

1.0.47

7 months ago

1.0.46

7 months ago

1.0.45

7 months ago

1.0.44

7 months ago

1.0.43

7 months ago

1.0.42

7 months ago

1.0.41

7 months ago

1.0.40

7 months ago

1.0.39

7 months ago

1.0.38

7 months ago

1.0.37

7 months ago

1.0.36

7 months ago

1.0.35

7 months ago

1.0.34

7 months ago

1.0.33

7 months ago

1.0.32

7 months ago

1.0.31

7 months ago

1.0.30

7 months ago

1.0.28

7 months ago

1.0.27

7 months ago

1.0.26

7 months ago

1.0.25

7 months ago

1.0.24

7 months ago

1.0.23

7 months ago

1.0.22

7 months ago

1.0.21

7 months ago

1.0.20

7 months ago

1.0.19

7 months ago

1.0.18

7 months ago

1.0.17

7 months ago

1.0.16

7 months ago

1.0.15

7 months ago

1.0.14

7 months ago

1.0.13

7 months ago

1.0.12

7 months ago

1.0.11

7 months ago

1.0.10

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago