# drag-tabs **Repository Path**: mirrors_bpmn-io/drag-tabs ## Basic Information - **Project Name**: drag-tabs - **Description**: A tiny tab dragging utility - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2025-11-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > As of version `1.0.0` this library exposes ES modules. Use an ES module aware transpiler such as Webpack, Rollup or Browserify + babelify to bundle it for the browser. # drag-tabs [![Build Status](https://github.com/bpmn-io/drag-tabs/actions/workflows/CI.yml/badge.svg)](https://github.com/bpmn-io/drag-tabs/actions/workflows/CI.yml) A tiny utility that makes tabs inside a container draggable. drag-tabs in action ## Features * Makes elements inside a drag container draggable * Supports ignored elements * Emits `drag`, `start`, `cancel` and `end` events * Does not perform actual dragging * Singleton (per element) ## How it Works Given you got an element with the following HTML markup: ```javascript var $el = (
); ``` Create the dragger: ```javascript var dragger = dragTabs($el, { selectors: { tabsContainer: '.my-tabs-container', tab: '.my-tab', ignore: '.ignore-me' } }); ``` Listen to drag events emitted via the `DragTabs` instance and use the updates to move the tabs to the appropriate position: ```javascript dragger.on('drag', function(context) { var dragTab = context.dragTab, newIdx = context.newIdx; // move the tab to the new position }); // move the tab to the initial position dragger.on('cancel', function(context) {}); ``` ## Emitted Events The `DragTabs` instance is an event emitter that fires the following events: - `start`: tab dragging starts - `drag`: fired on every position update - `end`: always fired at the end of the drag - `cancel`: only fired when the dragging is canceled The events `drag`, `end` and `cancel` are emitted with the following context: ```js { dragTab: {HTMLElement}, newIndex: {Number} } ``` The event `start` is fired with the following context: ```js { dragTab: {HTMLElement}, initialIndex: {Number} } ``` ## Manually Update Dragger To trigger a manual update on the `DragTabs` instance, i.e. because the displayed tabs change call `DragTabs#update`: ```javascript dragger.update(); ``` ## How to Test ``` npm run test ``` ## License MIT