Skip to content

Commit 2917acc

Browse files
committed
mouse event rewritte of draggable=true
* part 1 of #1757 * converted previous HTML5 `draggable=true` based code to simple mouse move/enter/leave events for dragging (like sizing) in preparation of mobile support. * modified example to help debug issues * tested to be on par with prev code on Chrome, minus custom cursors.
1 parent 0b2c534 commit 2917acc

File tree

11 files changed

+238
-307
lines changed

11 files changed

+238
-307
lines changed

demo/nested.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ <h1>Nested grids demo</h1>
6969
id: 'main',
7070
children: [
7171
{x:0, y:0, content: 'regular item'},
72-
{x:1, w:4, h:4, subGrid: {children: sub1, class: 'sub1', ...subOptions}},
73-
{x:5, w:3, h:4, subGrid: {children: sub2, class: 'sub2', ...subOptions}},
72+
{x:1, w:4, h:4, subGrid: {children: sub1, id:'sub1_grid', class: 'sub1', ...subOptions}},
73+
{x:5, w:3, h:4, subGrid: {children: sub2, id:'sub2_grid', class: 'sub2', ...subOptions}},
7474
]
7575
};
7676

demo/static.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ <h1>Static vs can move/drag Demo</h1>
5454

5555
GridStack.setupDragIn('.sidebar .grid-stack-item', { revert: 'invalid', scroll: false, appendTo: 'body', helper: 'clone' });
5656

57-
// TEST enable after disabled
58-
// grid.setStatic(false);
57+
// grid.setStatic(false); // TEST enable after disabled
5958

6059
</script>
6160
</body>

demo/two-jq.html

Lines changed: 17 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,6 @@
1111
<link rel="stylesheet" href="../dist/gridstack-extra.css"/>
1212

1313
<script src="../dist/gridstack-jq.js"></script>
14-
15-
<style type="text/css">
16-
.grid-stack-item-removing {
17-
opacity: 0.5;
18-
}
19-
.trash {
20-
height: 150px;
21-
margin-bottom: 20px;
22-
background: rgba(255, 0, 0, 0.1) center center url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDQzOC41MjkgNDM4LjUyOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDM4LjUyOSA0MzguNTI5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTQxNy42ODksNzUuNjU0Yy0xLjcxMS0xLjcwOS0zLjkwMS0yLjU2OC02LjU2My0yLjU2OGgtODguMjI0TDMwMi45MTcsMjUuNDFjLTIuODU0LTcuMDQ0LTcuOTk0LTEzLjA0LTE1LjQxMy0xNy45ODkgICAgQzI4MC4wNzgsMi40NzMsMjcyLjU1NiwwLDI2NC45NDUsMGgtOTEuMzYzYy03LjYxMSwwLTE1LjEzMSwyLjQ3My0yMi41NTQsNy40MjFjLTcuNDI0LDQuOTQ5LTEyLjU2MywxMC45NDQtMTUuNDE5LDE3Ljk4OSAgICBsLTE5Ljk4NSw0Ny42NzZoLTg4LjIyYy0yLjY2NywwLTQuODUzLDAuODU5LTYuNTY3LDIuNTY4Yy0xLjcwOSwxLjcxMy0yLjU2OCwzLjkwMy0yLjU2OCw2LjU2N3YxOC4yNzQgICAgYzAsMi42NjQsMC44NTUsNC44NTQsMi41NjgsNi41NjRjMS43MTQsMS43MTIsMy45MDQsMi41NjgsNi41NjcsMi41NjhoMjcuNDA2djI3MS44YzAsMTUuODAzLDQuNDczLDI5LjI2NiwxMy40MTgsNDAuMzk4ICAgIGM4Ljk0NywxMS4xMzksMTkuNzAxLDE2LjcwMywzMi4yNjQsMTYuNzAzaDIzNy41NDJjMTIuNTY2LDAsMjMuMzE5LTUuNzU2LDMyLjI2NS0xNy4yNjhjOC45NDUtMTEuNTIsMTMuNDE1LTI1LjE3NCwxMy40MTUtNDAuOTcxICAgIFYxMDkuNjI3aDI3LjQxMWMyLjY2MiwwLDQuODUzLTAuODU2LDYuNTYzLTIuNTY4YzEuNzA4LTEuNzA5LDIuNTctMy45LDIuNTctNi41NjRWODIuMjIxICAgIEM0MjAuMjYsNzkuNTU3LDQxOS4zOTcsNzcuMzY3LDQxNy42ODksNzUuNjU0eiBNMTY5LjMwMSwzOS42NzhjMS4zMzEtMS43MTIsMi45NS0yLjc2Miw0Ljg1My0zLjE0aDkwLjUwNCAgICBjMS45MDMsMC4zODEsMy41MjUsMS40Myw0Ljg1NCwzLjE0bDEzLjcwOSwzMy40MDRIMTU1LjMxMUwxNjkuMzAxLDM5LjY3OHogTTM0Ny4xNzMsMzgwLjI5MWMwLDQuMTg2LTAuNjY0LDguMDQyLTEuOTk5LDExLjU2MSAgICBjLTEuMzM0LDMuNTE4LTIuNzE3LDYuMDg4LTQuMTQxLDcuNzA2Yy0xLjQzMSwxLjYyMi0yLjQyMywyLjQyNy0yLjk5OCwyLjQyN0gxMDAuNDkzYy0wLjU3MSwwLTEuNTY1LTAuODA1LTIuOTk2LTIuNDI3ICAgIGMtMS40MjktMS42MTgtMi44MS00LjE4OC00LjE0My03LjcwNmMtMS4zMzEtMy41MTktMS45OTctNy4zNzktMS45OTctMTEuNTYxVjEwOS42MjdoMjU1LjgxNVYzODAuMjkxeiIgZmlsbD0iI2ZmOWNhZSIvPgoJCTxwYXRoIGQ9Ik0xMzcuMDQsMzQ3LjE3MmgxOC4yNzFjMi42NjcsMCw0Ljg1OC0wLjg1NSw2LjU2Ny0yLjU2N2MxLjcwOS0xLjcxOCwyLjU2OC0zLjkwMSwyLjU2OC02LjU3VjE3My41ODEgICAgYzAtMi42NjMtMC44NTktNC44NTMtMi41NjgtNi41NjdjLTEuNzE0LTEuNzA5LTMuODk5LTIuNTY1LTYuNTY3LTIuNTY1SDEzNy4wNGMtMi42NjcsMC00Ljg1NCwwLjg1NS02LjU2NywyLjU2NSAgICBjLTEuNzExLDEuNzE0LTIuNTY4LDMuOTA0LTIuNTY4LDYuNTY3djE2NC40NTRjMCwyLjY2OSwwLjg1NCw0Ljg1MywyLjU2OCw2LjU3QzEzMi4xODYsMzQ2LjMxNiwxMzQuMzczLDM0Ny4xNzIsMTM3LjA0LDM0Ny4xNzJ6IiBmaWxsPSIjZmY5Y2FlIi8+CgkJPHBhdGggZD0iTTIxMC4xMjksMzQ3LjE3MmgxOC4yNzFjMi42NjYsMCw0Ljg1Ni0wLjg1NSw2LjU2NC0yLjU2N2MxLjcxOC0xLjcxOCwyLjU2OS0zLjkwMSwyLjU2OS02LjU3VjE3My41ODEgICAgYzAtMi42NjMtMC44NTItNC44NTMtMi41NjktNi41NjdjLTEuNzA4LTEuNzA5LTMuODk4LTIuNTY1LTYuNTY0LTIuNTY1aC0xOC4yNzFjLTIuNjY0LDAtNC44NTQsMC44NTUtNi41NjcsMi41NjUgICAgYy0xLjcxNCwxLjcxNC0yLjU2OCwzLjkwNC0yLjU2OCw2LjU2N3YxNjQuNDU0YzAsMi42NjksMC44NTQsNC44NTMsMi41NjgsNi41N0MyMDUuMjc0LDM0Ni4zMTYsMjA3LjQ2NSwzNDcuMTcyLDIxMC4xMjksMzQ3LjE3MnogICAgIiBmaWxsPSIjZmY5Y2FlIi8+CgkJPHBhdGggZD0iTTI4My4yMiwzNDcuMTcyaDE4LjI2OGMyLjY2OSwwLDQuODU5LTAuODU1LDYuNTctMi41NjdjMS43MTEtMS43MTgsMi41NjItMy45MDEsMi41NjItNi41N1YxNzMuNTgxICAgIGMwLTIuNjYzLTAuODUyLTQuODUzLTIuNTYyLTYuNTY3Yy0xLjcxMS0xLjcwOS0zLjkwMS0yLjU2NS02LjU3LTIuNTY1SDI4My4yMmMtMi42NywwLTQuODUzLDAuODU1LTYuNTcxLDIuNTY1ICAgIGMtMS43MTEsMS43MTQtMi41NjYsMy45MDQtMi41NjYsNi41Njd2MTY0LjQ1NGMwLDIuNjY5LDAuODU1LDQuODUzLDIuNTY2LDYuNTdDMjc4LjM2NywzNDYuMzE2LDI4MC41NSwzNDcuMTcyLDI4My4yMiwzNDcuMTcyeiIgZmlsbD0iI2ZmOWNhZSIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=) no-repeat;
23-
}
24-
.sidebar {
25-
background: rgba(0, 255, 0, 0.1);
26-
height: 150px;
27-
padding: 25px 0;
28-
text-align: center;
29-
}
30-
.sidebar .grid-stack-item {
31-
width: 120px;
32-
height: 50px;
33-
border: 2px dashed green;
34-
text-align: center;
35-
line-height: 35px;
36-
z-index: 10;
37-
background: rgba(0, 255, 0, 0.1);
38-
cursor: default;
39-
display: inline-block;
40-
}
41-
.sidebar .grid-stack-item .grid-stack-item-content {
42-
background: none;
43-
}
44-
</style>
4514
</head>
4615
<body>
4716
<div class="container-fluid">
@@ -66,16 +35,16 @@ <h1>Two grids demo (Jquery version)</h1>
6635
</div>
6736
</div>
6837

69-
<div class="row">
38+
<div class="row" style="margin-top: 20px">
7039
<div class="col-md-6">
7140
<a onClick="toggleFloat(this, 0)" class="btn btn-primary" href="#">float: false</a>
7241
<a onClick="compact(0)" class="btn btn-primary" href="#">Compact</a>
73-
<div class="grid-stack grid-stack-6"></div>
42+
<div class="grid-stack"></div>
7443
</div>
7544
<div class="col-md-6">
7645
<a onClick="toggleFloat(this, 1)" class="btn btn-primary" href="#">float: true</a>
7746
<a onClick="compact(1)" class="btn btn-primary" href="#">Compact</a>
78-
<div class="grid-stack grid-stack-6"></div>
47+
<div class="grid-stack"></div>
7948
</div>
8049
</div>
8150
</div>
@@ -91,10 +60,10 @@ <h1>Two grids demo (Jquery version)</h1>
9160
float: false,
9261
// dragIn: '.sidebar .grid-stack-item', // add draggable to class
9362
// dragInOptions: { revert: 'invalid', scroll: false, appendTo: 'body', helper: 'clone' }, // clone
94-
removable: '.trash', // drag-out delete class
95-
acceptWidgets: function(el) { return true; } // function example, else can be simple: true | false | '.someClass' value
63+
removable: '.trash', // true or drag-out delete class
64+
acceptWidgets: function(el) { return true; } // function example, but can also be: true | false | '.someClass' value
9665
};
97-
grids = GridStack.initAll(options);
66+
let grids = GridStack.initAll(options);
9867
grids[1].float(true);
9968

10069
// new 4.x static method instead of setting up options on every grid (never been per grid really) but old options still works
@@ -115,19 +84,19 @@ <h1>Two grids demo (Jquery version)</h1>
11584
});
11685
});
11786

118-
// decide what the dropped item will be - for now just a clone but can be anything
119-
function myClone(event) {
120-
return event.target.cloneNode(true);
121-
}
87+
// decide what the dropped item will be - for now just a clone but can be anything
88+
function myClone(event) {
89+
return event.target.cloneNode(true);
90+
}
12291

123-
function toggleFloat(button, i) {
124-
grids[i].float(! grids[i].getFloat());
125-
button.innerHTML = 'float: ' + grids[i].getFloat();
126-
}
92+
function toggleFloat(button, i) {
93+
grids[i].float(! grids[i].getFloat());
94+
button.innerHTML = 'float: ' + grids[i].getFloat();
95+
}
12796

128-
function compact(i) {
129-
grids[i].compact();
130-
}
97+
function compact(i) {
98+
grids[i].compact();
99+
}
131100
</script>
132101
</body>
133102
</html>

demo/two.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ <h1>Two grids demo</h1>
3030
</div>
3131
</div>
3232
<div class="col-md-9">
33-
<div class="trash">
33+
<div class="trash" id="trash">
3434
</div>
3535
</div>
3636
</div>
@@ -39,12 +39,12 @@ <h1>Two grids demo</h1>
3939
<div class="col-md-6">
4040
<a onClick="toggleFloat(this, 0)" class="btn btn-primary" href="#">float: false</a>
4141
<a onClick="compact(0)" class="btn btn-primary" href="#">Compact</a>
42-
<div class="grid-stack"></div>
42+
<div class="grid-stack" id="left_grid"></div>
4343
</div>
4444
<div class="col-md-6">
4545
<a onClick="toggleFloat(this, 1)" class="btn btn-primary" href="#">float: true</a>
4646
<a onClick="compact(1)" class="btn btn-primary" href="#">Compact</a>
47-
<div class="grid-stack"></div>
47+
<div class="grid-stack" id="right_grid"></div>
4848
</div>
4949
</div>
5050
</div>

doc/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ Change log
7070
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
7171

7272
## TBD
73+
* converted previous HTML5 `draggable=true` based code to simple mouse move/enter/leave events for dragging in preparation of mobile support.
7374
* changed `commit()` to be `batchUpdate(false)` to make it easier to turn batch on/off. updated doc. old API remains for now
7475

7576
## 5.1.1 (2022-06-16)

src/gridstack-dd.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export type DDValue = number | string;
2424
/** drag&drop events callbacks */
2525
export type DDCallback = (event: Event, arg2: GridItemHTMLElement, helper?: GridItemHTMLElement) => void;
2626

27-
// TEST let count = 0;
27+
// let count = 0; // TEST
2828

2929
/**
3030
* Base class implementing common Grid drag'n'drop functionality, with domain specific subclass (h5 vs jq subclasses)
@@ -153,7 +153,7 @@ GridStack.prototype._setupAcceptWidget = function(this: GridStack): GridStack {
153153
* entering our grid area
154154
*/
155155
.on(this.el, 'dropover', (event: Event, el: GridItemHTMLElement, helper: GridItemHTMLElement) => {
156-
// TEST console.log(`over ${this.el.gridstack.opts.id} ${count++}`);
156+
// console.log(`over ${this.el.gridstack.opts.id} ${count++}`); // TEST
157157
let node = el.gridstackNode;
158158
// ignore drop enter on ourself (unless we temporarily removed) which happens on a simple drag of our item
159159
if (node?.grid === this && !node._temporaryRemoved) {
@@ -163,7 +163,7 @@ GridStack.prototype._setupAcceptWidget = function(this: GridStack): GridStack {
163163

164164
// fix #1578 when dragging fast, we may not get a leave on the previous grid so force one now
165165
if (node?.grid && node.grid !== this && !node._temporaryRemoved) {
166-
// TEST console.log('dropover without leave');
166+
// console.log('dropover without leave'); // TEST
167167
let otherGrid = node.grid;
168168
otherGrid._leave(el, helper);
169169
}
@@ -189,7 +189,7 @@ GridStack.prototype._setupAcceptWidget = function(this: GridStack): GridStack {
189189
// if the item came from another grid, make a copy and save the original info in case we go back there
190190
if (node.grid && node.grid !== this) {
191191
// copy the node original values (min/max/id/etc...) but override width/height/other flags which are this grid specific
192-
// TEST console.log('dropover cloning node');
192+
// console.log('dropover cloning node'); // TEST
193193
if (!el._gridstackNodeOrig) el._gridstackNodeOrig = node; // shouldn't have multiple nested!
194194
el.gridstackNode = node = {...node, w, h, grid: this};
195195
this.engine.cleanupNode(node)
@@ -215,7 +215,7 @@ GridStack.prototype._setupAcceptWidget = function(this: GridStack): GridStack {
215215
* Leaving our grid area...
216216
*/
217217
.on(this.el, 'dropout', (event, el: GridItemHTMLElement, helper: GridItemHTMLElement) => {
218-
// TEST console.log(`out ${this.el.gridstack.opts.id} ${count++}`);
218+
// console.log(`out ${this.el.gridstack.opts.id} ${count++}`); // TEST
219219
let node = el.gridstackNode;
220220
if (!node) return false;
221221
// fix #1578 when dragging fast, we might get leave after other grid gets enter (which calls us to clean)
@@ -237,7 +237,7 @@ GridStack.prototype._setupAcceptWidget = function(this: GridStack): GridStack {
237237
this.placeholder.remove();
238238

239239
// notify previous grid of removal
240-
// TEST console.log('drop delete _gridstackNodeOrig')
240+
// console.log('drop delete _gridstackNodeOrig') // TEST
241241
let origNode = el._gridstackNodeOrig;
242242
delete el._gridstackNodeOrig;
243243
if (wasAdded && origNode && origNode.grid && origNode.grid !== this) {
@@ -474,7 +474,7 @@ GridStack.prototype._onStartMoving = function(this: GridStack, el: GridItemHTMLE
474474
// @ts-ignore
475475
this._writePosAttr(this.placeholder, node)
476476
this.el.appendChild(this.placeholder);
477-
// TEST console.log('_onStartMoving placeholder')
477+
// console.log('_onStartMoving placeholder') // TEST
478478

479479
node.el = this.placeholder;
480480
node._lastUiPosition = ui.position;
@@ -483,7 +483,7 @@ GridStack.prototype._onStartMoving = function(this: GridStack, el: GridItemHTMLE
483483
delete node._lastTried;
484484

485485
if (event.type === 'dropover' && node._temporaryRemoved) {
486-
// TEST console.log('engine.addNode x=' + node.x);
486+
// console.log('engine.addNode x=' + node.x); // TEST
487487
this.engine.addNode(node); // will add, fix collisions, update attr and clear _temporaryRemoved
488488
node._moving = true; // AFTER, mark as moving object (wanted fix location before)
489489
}
@@ -523,7 +523,7 @@ GridStack.prototype._leave = function(this: GridStack, el: GridItemHTMLElement,
523523

524524
// finally if item originally came from another grid, but left us, restore things back to prev info
525525
if (el._gridstackNodeOrig) {
526-
// TEST console.log('leave delete _gridstackNodeOrig')
526+
// console.log('leave delete _gridstackNodeOrig') // TEST
527527
el.gridstackNode = el._gridstackNodeOrig;
528528
delete el._gridstackNodeOrig;
529529
} else if (node._isExternal) {

src/gridstack.scss

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,6 @@ $animation_speed: .3s !default;
6161
&.ui-resizable-disabled > .ui-resizable-handle,
6262
&.ui-resizable-autohide > .ui-resizable-handle { display: none; }
6363

64-
&.ui-draggable-dragging,
65-
&.ui-resizable-resizing {
66-
z-index: 100;
67-
68-
> .grid-stack-item-content {
69-
box-shadow: 1px 4px 6px rgba(0, 0, 0, 0.2);
70-
opacity: 0.8;
71-
}
72-
}
73-
7464
> .ui-resizable-se,
7565
> .ui-resizable-sw {
7666
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDUxMS42MjYgNTExLjYyNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTExLjYyNiA1MTEuNjI3OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTMyOC45MDYsNDAxLjk5NGgtMzYuNTUzVjEwOS42MzZoMzYuNTUzYzQuOTQ4LDAsOS4yMzYtMS44MDksMTIuODQ3LTUuNDI2YzMuNjEzLTMuNjE1LDUuNDIxLTcuODk4LDUuNDIxLTEyLjg0NSAgIGMwLTQuOTQ5LTEuODAxLTkuMjMxLTUuNDI4LTEyLjg1MWwtNzMuMDg3LTczLjA5QzI2NS4wNDQsMS44MDksMjYwLjc2LDAsMjU1LjgxMywwYy00Ljk0OCwwLTkuMjI5LDEuODA5LTEyLjg0Nyw1LjQyNCAgIGwtNzMuMDg4LDczLjA5Yy0zLjYxOCwzLjYxOS01LjQyNCw3LjkwMi01LjQyNCwxMi44NTFjMCw0Ljk0NiwxLjgwNyw5LjIyOSw1LjQyNCwxMi44NDVjMy42MTksMy42MTcsNy45MDEsNS40MjYsMTIuODUsNS40MjYgICBoMzYuNTQ1djI5Mi4zNThoLTM2LjU0MmMtNC45NTIsMC05LjIzNSwxLjgwOC0xMi44NSw1LjQyMWMtMy42MTcsMy42MjEtNS40MjQsNy45MDUtNS40MjQsMTIuODU0ICAgYzAsNC45NDUsMS44MDcsOS4yMjcsNS40MjQsMTIuODQ3bDczLjA4OSw3My4wODhjMy42MTcsMy42MTcsNy44OTgsNS40MjQsMTIuODQ3LDUuNDI0YzQuOTUsMCw5LjIzNC0xLjgwNywxMi44NDktNS40MjQgICBsNzMuMDg3LTczLjA4OGMzLjYxMy0zLjYyLDUuNDIxLTcuOTAxLDUuNDIxLTEyLjg0N2MwLTQuOTQ4LTEuODA4LTkuMjMyLTUuNDIxLTEyLjg1NCAgIEMzMzguMTQyLDQwMy44MDIsMzMzLjg1Nyw0MDEuOTk0LDMyOC45MDYsNDAxLjk5NHoiIGZpbGw9IiM2NjY2NjYiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K);
@@ -131,3 +121,19 @@ $animation_speed: .3s !default;
131121
// pointer-events: none;
132122
// }
133123
}
124+
125+
.ui-draggable-dragging,
126+
.ui-resizable-resizing {
127+
z-index: 100;
128+
129+
> .grid-stack-item-content {
130+
box-shadow: 1px 4px 6px rgba(0, 0, 0, 0.2);
131+
opacity: 0.8;
132+
}
133+
}
134+
.ui-draggable-dragging {
135+
will-change: left, top;
136+
}
137+
.ui-resizable-resizing {
138+
will-change: width, height;
139+
}

src/h5/dd-base-impl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export abstract class DDBaseImplement {
99
public get disabled(): boolean { return this._disabled; }
1010

1111
/** @internal */
12-
protected _disabled = false;
12+
protected _disabled: boolean; // initial state to differentiate from false
1313
/** @internal */
1414
protected _eventRegister: {
1515
[eventName: string]: EventCallback;

0 commit comments

Comments
 (0)