banner



How To Draw A Resizable Grid In Java

React-Grid-Layout

travis build CDNJS npm package npm downloads

React-Filigree-Layout is a grid layout system much similar Packery or Gridster, for React.

Different those systems, it is responsive and supports breakpoints. Breakpoint layouts tin be provided by the user or autogenerated.

RGL is React-only and does not crave jQuery.

BitMEX UI

GIF from production usage on BitMEX.com

[Demo | Changelog | CodeSandbox Editable demo]

Table of Contents

  • Demos
  • Features
  • Installation
  • Usage
  • Responsive Usage
  • Providing Filigree Width
  • Filigree Layout Props
  • Responsive Filigree Layout Props
  • Filigree Item Props
  • User Recipes
  • Performance
  • Contribute
  • TODO List

Demos

  1. Showcase
  2. Basic
  3. No Dragging/Resizing (Layout Only)
  4. Messy Layout Autocorrect
  5. Layout Divers on Children
  6. Static Elements
  7. Adding/Removing Elements
  8. Saving Layout to LocalStorage
  9. Saving a Responsive Layout to LocalStorage
  10. Minimum and Maximum Width/Height
  11. Dynamic Minimum and Maximum Width/Height
  12. No Vertical Compacting (Free Movement)
  13. Prevent Collision
  14. Error Case
  15. Toolbox
  16. Elevate From Exterior
  17. Divisional Layout
  18. Resizable Handles
  19. Scaled Containers

Projects Using React-Filigree-Layout

  • BitMEX
  • AWS CloudFront Dashboards
  • Grafana
  • Metabase
  • HubSpot
  • ComNetViz
  • Stoplight
  • Reflect
  • ez-Dashing
  • Kibana
  • Graphext
  • Mon
  • Quadency
  • Hakkiri
  • Ubidots
  • Statsout

Know of others? Create a PR to let me know!

Features

  • 100% React - no jQuery
  • Compatible with server-rendered apps
  • Draggable widgets
  • Resizable widgets
  • Static widgets
  • Configurable packing: horizontal, vertical, or off
  • Premises checking for dragging and resizing
  • Widgets may be added or removed without rebuilding grid
  • Layout can be serialized and restored
  • Responsive breakpoints
  • Carve up layouts per responsive breakpoint
  • Grid Items placed using CSS Transforms
    • Performance with CSS Transforms: on / off, note paint (greenish) equally % of time
  • Compatibility with
Version Compatibility
>= 0.17.0 React sixteen & 17
>= 0.11.3 React 0.14 & xv
>= 0.ten.0 React 0.14
0.viii. - 0.9.2 React 0.13
< 0.8 React 0.12

Installation

Install the React-Grid-Layout package package using npm:

npm install react-grid-layout

Include the following stylesheets in your application:

              /node_modules/react-grid-layout/css/styles.css /node_modules/react-resizable/css/styles.css                          

Usage

Use ReactGridLayout like any other component. The post-obit instance below will produce a grid with 3 items where:

  • users will not exist able to drag or resize item a
  • item b will be restricted to a minimum width of two grid blocks and a maximum width of 4 grid blocks
  • users will be able to freely drag and resize item c
                import                GridLayout                from                'react-filigree-layout'                ;                class                MyFirstGrid                extends                React                .                Component                {                render                (                )                {                // layout is an array of objects, see the demo for more complete usage                const                layout                =                [                {                i:                'a'                ,                x:                0                ,                y:                0                ,                w:                1                ,                h:                2                ,                static:                true                }                ,                {                i:                'b'                ,                10:                ane                ,                y:                0                ,                westward:                3                ,                h:                ii                ,                minW:                ii                ,                maxW:                iv                }                ,                {                i:                'c'                ,                x:                4                ,                y:                0                ,                due west:                one                ,                h:                2                }                ]                ;                return                (                <                GridLayout                className                =                "layout"                layout                =                {                layout                }                cols                =                {                12                }                rowHeight                =                {                30                }                width                =                {                1200                }                >                <                div                key                =                "a"                >a<                /                div                >                <                div                cardinal                =                "b"                >b<                /                div                >                <                div                cardinal                =                "c"                >c<                /                div                >                <                /                GridLayout                >                )                }                }              

Y'all may also choose to ready layout properties directly on the children:

                import                GridLayout                from                'react-grid-layout'                ;                grade                MyFirstGrid                extends                React                .                Component                {                render                (                )                {                return                (                <                GridLayout                className                =                "layout"                cols                =                {                12                }                rowHeight                =                {                30                }                width                =                {                1200                }                >                <                div                central                =                "a"                data-filigree                =                {                {                x:                0                ,                y:                0                ,                westward:                1                ,                h:                2                ,                static:                true                }                }                >a<                /                div                >                <                div                key                =                "b"                data-grid                =                {                {                ten:                i                ,                y:                0                ,                w:                3                ,                h:                two                ,                minW:                2                ,                maxW:                4                }                }                >b<                /                div                >                <                div                key                =                "c"                data-filigree                =                {                {                x:                4                ,                y:                0                ,                westward:                1                ,                h:                2                }                }                >c<                /                div                >                <                /                GridLayout                >                )                }                }              

Usage without Browserify/Webpack

A module usable in a

Comments

  • Cannot find module 'react/lib/emptyFunction' when using react 0.14.0

    When I endeavor to use this packet with react 0.14.0 I become the following mistake on compile:

                                  Mistake: Cannot find module 'react/lib/emptyFunction' from '<redacted>/node_modules/react-grid-layout/node_modules/react-resizable/node_modules/react-draggable/lib'                                                          

    opened by tom-james-watson 37

  • Tracking `adjacent` release

    As many have you been awaiting, the next branch:

    • Contains a refactor of most of the projection
    • Has React 0.14 Support
    • Has ameliorate IE/Touch compatibility
    • Is fully validated using Catamenia
    • Uses mainline React-Draggable and React-Resizable (1.x versions).

    Much of the difficulty in this co-operative involves a rethinking of how we manage country in child components and a move toward a completely stateless <Draggable>, which is not withal integrated in RGL.

    This effect is tracking the release of this branch. Meet besides discussion in #117.

    Blockers:

    • [10] React-Draggable 1.x is calling back with clientX/Y when it should be sending offsetX/Y. This is causing a bad 300px offset in the demo. (fixed in https://github.com/mzabriskie/react-draggable/commit/c1a5bb3daaebfef07512fabf9dfbd435279241c8)
    • [x] Draggable is non post-obit mouse position with placeholder in the filigree, it is instead following the placeholder directly. For example:
    • [ten] Apply <DraggableCore> directly and store state in RGL, rather than in each <Draggable>.

    Stretch goals:

    • [ ] Once onto <DraggableCore>, we can use percentage top/left and height/width direct. This volition non only allow us to stop listening for resize events, but do more proper server-side rendering.
      • Tin we nonetheless use CSS transforms with percentages? CSS transform percentages are relative to the element's width/summit, not the offsetParent's width/height. We could trick it past measuring the offsetParent and doing the math with JS, but we lose the server-rendering benefits as above.

    opened past STRML 33

  • Update layout when props changed

    How to update layout programmatically? Currently, when i endeavour to gear up new layout to GridLayout it will be ignored This is new props that i provided image This is yours component state after i provided new layout image

    As yous tin see, props are just ignored, all i need to do is to change children isDraggable on push button click I tried to do the same with inline grid, merely it had no effect

    opened past SergeyShablenko 29

  • Child component does not properly inherit GridItem props

    Hi, I am rather new to React as a whole, so if this result is off-base or needs clarification please don't hesitate.

    I am seeing an issue where I define a child component and endeavour to instantiate it through the standard React constructor as seen beneath. "tile_info" is an object retrieved from a server which you can assume contains attributes seen in TilePanel

                                  <ReactGridLayout ref="rgl" {...this.props} layout={this.props.layout}>     <TilePanel tile={this.props.tile_info} grid={this.generateGrid()} </ReactGridLayout>                                                          
                                  var TilePanel = React.createClass({   render: function () {     return (         <div key={this.props.tile.championship} form="widget-number" data-grid ={this.props.filigree} >           <h1 className="title">{this.props.tile.championship}</h1>           <h2 className="value">{this.props.tile.value}</h2>           <p style={styles.last_updated}>{this.props.tile.last_update}</p>         </div>     )   } });                                                          

    The resulting HTML for that GridItem does not contain the expected class/fashion attributes.
    Expected:

                                  <div class="react-grid-item widget-number     cssTransforms react-resizable" style="width: 270px; height: 310px; position: absolute; bear on-action: none; transform: interpret(10px, 10px);">                                                          

    Actual:

                                  <div form="widget-number" manner="background-colour:#ff9618;" data-reactid=".0.1.0.1.0:$/=one$daily_revenue">                                                          

    Notice the lack of props on the grade and way attributes.

    If this isn't clear, I will do my best to clarify

    opened by nitronick600 25

  • Resizable handles on other corners

    Thanks for submitting an issue to RGL!

    Please mark the type of this outcome:

    • [ ] Bug
    • [x] Feature Asking
    • [ ] Question

    If you have a question or bug written report, please use the WebpackBin Template to demonstrate. It is much easier for us to help y'all if you exercise. image

    opened by zhangzhike 22

  • How to attain horizontal + Vertical compacting together?

    Tin can we have both horizontal and vertical compacting together?

    opened by nitesh619 21

  • Supercede ReactDOM.findDOMNode with React.createRef

    Hullo,

    This PR is trying to solve this result: https://github.com/STRML/react-grid-layout/issues/1091

    opened by Ginioo 20

  • Grid item class name not changing

    I'm running into an upshot dynamically updating the classname of a filigree item.

    I have a button that adds an item to the grid when clicked. When the item is created, I add actress props such equally boolean for if it's a new item, a class name to specify that it is true for styling, and a boolean setting edit manner to true. When the item is confirmed, a push button click there is meant to update the item setting the booleans to false and irresolute the class name. The class proper name on the element stays the same, though. I'yard assuming this is because on updates simply layout data is cared nearly.

    Is at that place any style I can make this piece of work?

    opened by jomasti 20

  • How should the parent pass in new layout(due south)?

    Related to #98

    This is an open consequence for annotate.

    Currently, the following methods are used to determine whether or not to reload the layout:

    RGL:

    !_.isEqual(this.props.layout, nextProps.layout)

    ResponsiveRGL:

    ``!_.isEqual(this.props.layouts, nextProps.layouts)`

    This doesn't fairly cover some apply issues, like:

    • (#98) - If I reset the layout, to what was originally passed in, the props haven't changed, so the layout doesn't reset.

    This is really very similar to the problem that acquired me to rewrite <Draggable> in the starting time place. It's difficult, in React, to enforce a state reset on children at some times while assuasive them to manage their own country at other times.

    Should users just only take hold of a ref and setState() themselves? I don't know if I see a ameliorate option.

    opened past STRML 20

  • Looking for Maintainers

    Devs,

    As is likely obvious at this betoken, I don't accept the time to go along up with the big influx of issues on this repository. RGL works great for our use example at BitMEX but is clearly not as customizable every bit the community wants it to be.

    My intention is for RGL to ascertain proper extension points so that a vibrant plugin system may emerge, reducing the brunt on this repository to implement custom functionality, such every bit compactors. For those reasons, I've prepared #346 which defines this in particular.

    Are in that location whatsoever volunteers to help go the work started? I would be happy to review PRs but I simply don't take the time to spearhead this.

    opened by STRML 20

  • AutoSize not working on initial ResponsiveReactGridLayout render

    Hi. I'thousand non sure if I'm doing something wrong simply it seems similar ResponsiveReactGridLayout autoSize doesn't burn initially, or not after the initial rendering. In the attached gif I show reloading the page, the filigree width is fully sized based on the widget layout but its not resized.

    When I resize the browser window the grid volition automobile resize, but when I reload the page, aforementioned story.

    autoSize

    My usage is as follows. The trouble exists with or without the onBreapointChange scrap that I had to add together to force pre-render on breakpoint changes related to another outcome.

    I played with the layout change callback and they don't fire on initial render. Whatever tips would be bang-up. Cheers.

                                  <ResponsiveReactGridLayout             autoSize={true}             cols={iv}             breakpoints={{lg: 1200, physician: 996, sm: 768}}             cols={{lg: 4, doctor: 2, sm: 1}}             useCSSTransforms             isDraggable={false}             isResizable={fake}             compactType={null}             rowHeight={150}             central={bp} // necessary to force breakpoint to reassess layout             onBreakpointChange={setBp} // necessary to force breakpoint to reassess layout         >                                                          

    opened by duhmojo 1

  • elevate'n'drop from exterior doesn't piece of work on Android

    Hi!

    I have an issue with dragging item from outside. Device: Galaxy Tab A 2022 Android 5. x

    For testing check this sandbox please https://codesandbox.io/s/applied-sky-3npys

    Does anyone faced this issue and institute a piece of work around?

    opened by HannaRestoGuru 0

  • chore(deps): bump follow-redirects from i.14.6 to 1.xiv.8

    Bumps follow-redirects from 1.fourteen.six to 1.fourteen.8.

    Commits
    • 3d81dc3 Release version one.14.viii of the npm parcel.
    • 62e546a Driblet confidential headers across schemes.
    • 2ede36d Release version 1.xiv.7 of the npm package.
    • 8b347cb Drop Cookie header across domains.
    • Meet full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as yous don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You tin trigger Dependabot deportment by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge volition merge this PR later your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot abolish merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating information technology. You lot tin can achieve the same upshot by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to information technology yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating whatsoever more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more than for this dependency (unless yous reopen the PR or upgrade to it yourself)
    • @dependabot utilise these labels will set the current labels as the default for time to come PRs for this repo and language
    • @dependabot use these reviewers volition set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will ready the current assignees as the default for time to come PRs for this repo and language
    • @dependabot utilize this milestone will set up the current milestone equally the default for hereafter PRs for this repo and language

    You can disable automatic security fix PRs for this repo from the Security Alerts page.

    opened past dependabot[bot] 0

  • Prevent dragStart issue getting fired when click effect happens

    Issue: when i click the actions in grid Item it automatically trigger the dragStart event and preventing the click functionality getting called sometimes.

    Expectation: Demand the PR set #1411 mentioned here / any alternatives. delight merge it the stable co-operative and release it. Because this is majorly impact the usability of react-grid-layout in desktops and bear on devices (ex. iPad).

    Notation: we utilise this library in production that really touch the user experience.

    Environs: "react-grid-layout": "^1.3.0"

    opened by kishok ane

  • ResponsiveReactGridLayout breakpoint resizing doesn't pop dorsum when growing to original size

    Hi. When using ResponsiveReactGridLayout it appears as if when I compress the viewport the breakpoints are enforced and the grid layout pops downwardly accordingly, simply when I grow it back through larger breakpoints, I see the items resize but and then shrink downwards once again. This could be some misuse of the breakpoint sizes in relation to the item sizes. I'm not sure. Any guidance would exist awesome.

    I was using RGL 1.0.0 but I updated to 1.3.3 merely now and the trouble notwithstanding persists.

    Hither'due south a captured video of the problem

    RGL-resize

    Here'due south some bits from my lawmaking, hopefully its enough to spot if this is a bug or a user error:

                                  const widgets = [   {     id: 'IncrementWidget',     layout: { i: 'IncrementWidget', x: 0, y: 0, w: i, h: ii, isDraggable: false },   },   {     id: 'DecrementWidget',     layout: { i: 'DecrementWidget', 10: 1, y: 0, due west: 1, h: ii, isDraggable: false },   },   {     id: 'ImageWidget',     layout: { i: 'ImageWidget', x: ii, y: 0, w: 1, h: i, isDraggable: false },   },   {     id: 'ImageWidget',     layout: { i: 'ImageWidget', x: 2, y: 1, w: ane, h: one, isDraggable: false },   },   {     id: 'ImageWidget',     layout: { i: 'ImageWidget', x: 3, y: 0, w: 1, h: 2, isDraggable: false },   },   {     id: 'ImageWidget',     layout: { i: 'ImageWidget', x: 0, y: 1, w: iv, h: 2, isDraggable: false },   }, ];  ...          <ResponsiveReactGridLayout             autoSize             cols={iv} // 3 chunky cols             breakpoints={{lg: 1200, md: 996, sm: 768}}             cols={{lg: 4, md: 2, sm: 1}}             preventCollision             useCSSTransforms             isDroppable             compactType={null}             rowHeight={150}             onDrop={onDrop}             onDragStop={onLayoutChange}             onResizeStop={onLayoutChange}         >           {widgets.map((ten, idx) => (             <DashboardWidget central={'widget_'+idx} widget={x} information-filigree={10.layout} />           ))}         </ResponsiveReactGridLayout>                                                          

    Whatsoever tips would be great. Thanks for making this crawly project available.

    opened by duhmojo 4

  • Crash in IE11

    Hi guys,

    https://github.com/react-grid-layout/react-filigree-layout/blob/7c06498166b3c8613c866f374da5dd318c5faa8d/lib/calculateUtils.js#L31

    The line above causes a crash in IE11 with the error Object doesn't support property or method 'isFinite'. This is the simply line in the project which uses this syntax, so maybe it would be worth using code below instead, which is supported in IE11:

                                  if (!isFinite(gridUnits)) return gridUnits;                                                          

    opened by jedlikowski 0

  • How to set variable height to kid

    • How to set dynamic meridian to layout "h" key based on child height
    • codesandbox example

    opened past asopromadze 0

  • Add enableUserSelectHack prop to reply a possible performance issue

    react-draggable uses a hack to hide the user selection during drag. This hack consists in applying a rule (all: inherit) to every torso children'south selection. This tin can create a lag spike. I fixed it by calculation the necessary prop to pass to react-draggable.

    I'yard creating this PR along with an issue.

    opened by floklein 0

  • Add enableUserSelectHack prop to respond a possible performance issue

    react-draggable uses a hack to hide the user choice during elevate. This hack consists in applying a rule (all: inherit) to every torso children's pick. This can create a lag spike.

    I'1000 creating this issue along with a PR adding the necessary prop to pass to react-draggable.

    opened by floklein 2

  • Nested Grids don't piece of work. Unable to drag elements within a nested grid.

    I have a sub-grid within a filigree and I am unable to drag elements that are in that sub-grid. I'g also unable to resize the elements horizontally

    Here is the example: https://codesandbox.io/south/damp-currying-40xso?file=/src/ShowcaseLayout.js

    opened by willh33 0

Releases(1.iii.3)

  • 1.3.three(January 24, 2022)

    Uncategorized
    • Fix Npm build - remove coverage binder (-60%size) - move eslint parser to devDependencies
      • PR: #1655

React component to create graphic user interface with: - draggable nodes with ports and edges on a directed graph editor. - extensibility to customize the widgets or behaviors. - accessbility and testability support

Piece of work in progress react-flow-editor Overview React component to create graphic user interface with: draggable nodes with ports and edges on a directed

Feb iv, 2022

:sparkles: A sortable and resizable pane component for React.

Sortable and resizable pane component for react. Table of Contents Screenshot Live Demo Storybook CodeSandbox Install Usage uncontrolled controlled Pr

Feb 10, 2022

React draggable component

React-Draggable A unproblematic component for making elements draggable. <Draggable> <div>I tin now exist moved around!</div> </Draggable> Demo Changelog Vers

February 12, 2022

React draggable component

A uncomplicated component for making elements draggable.

Feb 12, 2022

React component for a list of draggable collapsible items

react-draggable-listing This component lets you make a user re-orderable list that animates nicely so that the user can easily move large items: The abov

Feb 1, 2022

A simple draggable list component for React

react-elevate-listview React elevate list component. install Example Drag Rows Simple dragging demo Dragging Ant-Design table Dragging Ant-Design table widt

February 15, 2022

Draggable tree for react.

react-draggable-tree Draggable tree for react. installation npm install -S @jswork/react-draggable-tree properties Name Type Required Default Descript

Mar 25, 2022

React elevate and drib sort support flex layout and nested.

react-flex-dnd React elevate and drib sort support flex layout and nested. This package using hooks, annotation that your React version is above 16.8 :) Why fl

February 14, 2022

a dragger layout system with React style .

特别声明 由于本人正在忙其他的事情,dragact 已经暂停维护了。请不要使用 dragact(出了问题我实在没精力帮您解决,实在抱歉 最后,我推荐的替换是: https://github.com/STRML/react-grid-layout https://github.com/atlassia

Feb x, 2022

Drag and drib page architect and CMS for React, Vue, Angular, and more

Drag and drib page builder and CMS for React, Vue, Angular, and more Use your code components and the stack of your choice. No more existence pestered for

Feb 7, 2022

Cute and accessible drag and driblet for lists with React

react-beautiful-dnd (rbd) Beautiful and accessible elevate and drib for lists with React Play with this example if you want! Core characteristics Beautif

Feb 10, 2022

🔀 Drag and drib for your React lists and tables. Accessible. Tiny.

react-movable See all the other examples and their source code! Installation yarn add react-movable Usage import * every bit React from 'react'; import { Li

Feb 14, 2022

ReactJS elevate and drop functionality for mouse and touch devices

DragDropContainer and DropTarget Alive demo: peterh32.github.io/react-drag-drop-container Features Very like shooting fish in a barrel to implement and empathise. Works on mous

Feb 3, 2022

Drag and Drop for React

React DnD Drag and Drop for React. See the docs, tutorials and examples on the website: http://react-dnd.github.io/react-dnd/ Run into the changelog on the

February 16, 2022

Drag and Drop for React

React DnD Elevate and Driblet for React. See the docs, tutorials and examples on the website: http://react-dnd.github.io/react-dnd/ Meet the changelog on the

Feb 16, 2022

A modernistic, lightweight, performant, attainable and extensible elevate & drop toolkit for React.

A modern, lightweight, performant, accessible and extensible drag & drib toolkit for React.

Feb 12, 2022

Elevate and Drop for React

Elevate and Driblet for React

February 9, 2022

Light React Elevate & Driblet files and images library styled by styled-components

Light React Elevate & Driblet files and images library styled by styled-components

February 12, 2022

React Drag and Drop file input

React Drag and Drop file input

Feb 1, 2022

Source: https://bestofreactjs.com/repo/strml-react-grid-layout-react-drag-and-drop

Posted by: wolfewhisce.blogspot.com

0 Response to "How To Draw A Resizable Grid In Java"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel