Skip to main content

Dash Dynamic Grid Layout

Dash Dynamic Grid Layout is a Dash component library that provides a flexible grid layout system for arranging and moving components within a Dash application.

Dynamic Grid Example

Special thanks to BSDev BSd3v for contributing the improvements and bug fixes making this a much more polished project.

Features

  • Drag-and-drop functionality for rearranging components
  • Resizable grid items
  • Customizable layout with responsive breakpoints
  • Option to add or remove items dynamically
  • Customizable drag handles for each item
  • Persistence of component state
  • Local, memory, or session storage for persistence

Installation

pip install dash-dynamic-grid-layout

Usage

Here's a basic example of how to use the DashGridLayout component:

import dash_dynamic_grid_layout as dgl
from dash import Dash, html, dcc
import plotly.express as px

app = Dash(__name__)

df = px.data.iris()

app.layout = html.Div([
    dgl.DashGridLayout(
        id='grid-layout',
        children=[
            dgl.DraggableWrapper(
                children=[
                    html.Div('Drag me!', style={'height': '100%', 'display': 'flex', 'alignItems': 'center', 'justifyContent': 'center', 'border': '1px solid #ddd', 'borderRadius': '5px'})
                ],
                handleText='Move'
            ),
            dgl.DraggableWrapper(
                children=[
                    dcc.Graph(
                        figure=px.scatter(df, x="sepal_width", y="sepal_length", color="species"),
                        style={'height': '100%'}
                    )
                ],
                handleText='Move Graph'
            )
        ],
        rowHeight=150,
        cols={'lg': 12, 'md': 10, 'sm': 6, 'xs': 4, 'xxs': 2},
        style={'height': '600px'},
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

Prop Reference

DashGridLayout

DashGridLayout is a flexible grid layout system for arranging and moving components within a Dash application. These are the properties available for the DashGridLayout component:

Property Type Default Description
id string - The ID used to identify this component in Dash callbacks.
className string 'layout' CSS class name for the grid layout.
rowHeight number 100 The height of a single row in pixels.
cols object {lg: 12, md: 10, sm: 6, xs: 4, xxs: 2} An object containing breakpoints and column numbers.
style object - Inline styles for the grid layout.
itemCount number - The number of items in the grid.
itemToRemove any '' The item in the grid that should be removed when triggered.
compactType string 'vertical' Compaction type. Can be 'vertical', 'horizontal', or null.
showRemoveButton boolean true Whether to show remove buttons for grid items.
showResizeHandles boolean true Whether to show resize handles for grid items.
items array [] List of items to be rendered in the grid.
itemLayout array [] Layout configuration for each item. Each item should be an object with shape {i: string, x: number, y: number, w: number, h: number}.
currentLayout array [] The current layout of the grid items. Each item should be an object with shape {i: string, x: number, y: number, w: number, h: number}.
breakpoints object {lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0} Breakpoints for responsive layout.
breakpointData object - Data about the current breakpoint and columns. Shape: {newBreakpoint: string, newCols: number}.

Callbacks

Property Description
setProps Callback function to update Dash props.

DraggableWrapper

DraggableWrapper is a component that wraps other components and makes them draggable. These are the properties available for the DraggableWrapper component:

Property Type Default Description
children node - The content to be wrapped and made draggable
handleBackground string "rgb(85,85,85)" Background color of the drag handle
handleColor string "white" Text color of the drag handle
handleText string "Drag here" Text to display in the drag handle

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License.

Metadata

Release files for dash-dynamic-grid-layout 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dash-dynamic-grid-layout 0.1.3
File Size Uploaded
dash_dynamic_grid_layout-0.1.3.tar.gz 462.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dash-dynamic-grid-layout 0.1.3
File Interpreter ABI Platform
dash_dynamic_grid_layout-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 929.2 kB

Release files / dash_dynamic_grid_layout-0.1.3.tar.gz

Download URL dash_dynamic_grid_layout-0.1.3.tar.gz
Size 462.5 kB
Tags Source
SHA-256 checksum
How to use checksums
509feb67a18906134396f4561d701333bf9b66bbc57a2939bb7178578452fe83
BLAKE2b-256 checksum
How to use checksums
9316c304660bfebe6b9c2aed52dae5aac489b4a5d4c35b537aed4e97a1de6f98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.1

Release files / dash_dynamic_grid_layout-0.1.3-py3-none-any.whl

Download URL dash_dynamic_grid_layout-0.1.3-py3-none-any.whl
Size 466.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c7ce5ad07a93da8129db9f7a4be40cb11abd471bea110126ee103fba87e2fdf
BLAKE2b-256 checksum
How to use checksums
486defca3a03039ab798ba685b8e3fc03c98a7eb1be18dcd1003c2722d68a92e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.1

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page