Torna qualquer elemento ou widget livremente arrastável por mouse ou touch, com suporte a alça de cabeçalho, eixos fixos e limites de contêiner.
Módulo de arraste livre do SWCore para criação de janelas flutuantes, widgets de controle, post-its, painéis móveis e interfaces estilo desktop. Suporta definição de alça exclusiva (sw-drag-handle), restrição de movimento aos eixos X ou Y (sw-drag-axis) e trava dentro do elemento pai ou janela (sw-drag-bounds).
Calcula o offset do cursor/toque em tempo real e atualiza as coordenadas left e top via aceleração nativa. Define automaticamente position: absolute se o elemento for estático, aplica elevação automática de z-index trazendo o elemento ativo para a frente e injeta a classe is-dragging com feedback visual instantâneo.
<!-- Janela arrastável somente pela barra de título -->
<div sw-drag sw-drag-handle=".drag-win-hdr" sw-drag-bounds="parent" class="janela-flutuante">
<div class="drag-win-hdr">
<span>Barra de Título (Alça)</span>
</div>
<div class="conteudo">
<p>Conteúdo da janela...</p>
</div>
</div>
<!-- Múltiplos elementos arrastáveis livres com limites no elemento pai -->
<div class="canvas-relativo" style="position:relative; height:400px;">
<div sw-drag sw-drag-bounds="parent" class="card-1">Card 1</div>
<div sw-drag sw-drag-bounds="parent" class="card-2">Card 2</div>
<div sw-drag sw-drag-bounds="parent" class="card-3">Card 3</div>
</div>
O elemento só se move para a esquerda e direita
O elemento só se move para cima e para baixo
<!-- Arraste travado no eixo Horizontal -->
<div style="position:relative; height:60px;">
<div sw-drag sw-drag-axis="x" sw-drag-bounds="parent" class="slider-handle">Arraste X</div>
</div>
<!-- Arraste travado no eixo Vertical -->
<div style="position:relative; height:150px;">
<div sw-drag sw-drag-axis="y" sw-drag-bounds="parent" class="elevador-handle">Arraste Y</div>
</div>
sw-dragsw-drag-handle=".seletor"sw-drag-bounds="parent"sw-drag-bounds="window"sw-drag-axis="x"sw-drag-axis="y"Nenhum.
sw:drag:startsw:drag:movesw:drag:endNenhum.
sw-drag-handle=".classe-da-alca" se quiser que apenas uma parte do elemento (como o cabeçalho) inicie o movimento, permitindo que os botões internos funcionem sem conflito.position:relative (ou similar) se for utilizar sw-drag-bounds="parent" para delimitar os limites.