1.1.0 • Published 11 months ago

gridnd v1.1.0

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

11 months ago

1.0.77

11 months ago

1.0.76

11 months ago

1.0.75

11 months ago

1.0.74

11 months ago

1.0.73

11 months ago

1.0.72

11 months ago

1.0.71

11 months ago

1.0.70

11 months ago

1.0.69

11 months ago

1.0.68

11 months ago

1.0.67

11 months ago

1.0.66

11 months ago

1.0.65

11 months ago

1.0.64

11 months ago

1.0.63

11 months ago

1.0.62

11 months ago

1.0.61

11 months ago

1.0.60

11 months ago

1.0.59

11 months ago

1.0.58

11 months ago

1.0.57

11 months ago

1.0.56

11 months ago

1.0.55

11 months ago

1.0.54

11 months ago

1.0.53

11 months ago

1.0.52

11 months ago

1.0.51

11 months ago

1.0.50

11 months ago

1.0.49

11 months ago

1.0.48

11 months ago

1.0.47

11 months ago

1.0.46

11 months ago

1.0.45

11 months ago

1.0.44

11 months ago

1.0.43

11 months ago

1.0.42

11 months ago

1.0.41

11 months ago

1.0.40

11 months ago

1.0.39

11 months ago

1.0.38

11 months ago

1.0.37

11 months ago

1.0.36

11 months ago

1.0.35

11 months ago

1.0.34

11 months ago

1.0.33

11 months ago

1.0.32

11 months ago

1.0.31

11 months ago

1.0.30

11 months ago

1.0.28

11 months ago

1.0.27

11 months ago

1.0.26

11 months ago

1.0.25

11 months ago

1.0.24

11 months ago

1.0.23

11 months ago

1.0.22

11 months ago

1.0.21

11 months ago

1.0.20

11 months ago

1.0.19

11 months ago

1.0.18

11 months ago

1.0.17

11 months ago

1.0.16

11 months ago

1.0.15

11 months ago

1.0.14

11 months ago

1.0.13

11 months ago

1.0.12

11 months ago

1.0.11

11 months ago

1.0.10

11 months ago

1.0.9

11 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.3

11 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago