gridstack 10.1.1 → 10.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/angular/package.json +1 -1
- package/angular/projects/demo/src/app/app.component.ts +4 -2
- package/angular/projects/demo/src/app/dummy.component.ts +3 -4
- package/angular/projects/lib/src/lib/base-widget.ts +1 -1
- package/angular/projects/lib/src/lib/gridstack-item.component.ts +1 -1
- package/angular/projects/lib/src/lib/gridstack.component.ts +1 -1
- package/angular/projects/lib/src/lib/gridstack.module.ts +1 -1
- package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
- package/dist/angular/fesm2015/gridstack-angular.mjs +4 -4
- package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
- package/dist/angular/fesm2020/gridstack-angular.mjs +4 -4
- package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
- package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
- package/dist/angular/lib/gridstack.component.d.ts +1 -1
- package/dist/angular/src/base-widget.ts +1 -1
- package/dist/angular/src/gridstack-item.component.ts +1 -1
- package/dist/angular/src/gridstack.component.ts +1 -1
- package/dist/angular/src/gridstack.module.ts +1 -1
- package/dist/dd-base-impl.d.ts +1 -1
- package/dist/dd-base-impl.js +1 -1
- package/dist/dd-base-impl.js.map +1 -1
- package/dist/dd-draggable.d.ts +1 -1
- package/dist/dd-draggable.js +1 -1
- package/dist/dd-draggable.js.map +1 -1
- package/dist/dd-droppable.d.ts +1 -1
- package/dist/dd-droppable.js +1 -1
- package/dist/dd-droppable.js.map +1 -1
- package/dist/dd-element.d.ts +1 -1
- package/dist/dd-element.js +1 -1
- package/dist/dd-element.js.map +1 -1
- package/dist/dd-gridstack.d.ts +1 -1
- package/dist/dd-gridstack.js +1 -1
- package/dist/dd-gridstack.js.map +1 -1
- package/dist/dd-manager.d.ts +1 -1
- package/dist/dd-manager.js +1 -1
- package/dist/dd-manager.js.map +1 -1
- package/dist/dd-resizable-handle.d.ts +1 -1
- package/dist/dd-resizable-handle.js +1 -1
- package/dist/dd-resizable-handle.js.map +1 -1
- package/dist/dd-resizable.d.ts +1 -1
- package/dist/dd-resizable.js +1 -1
- package/dist/dd-resizable.js.map +1 -1
- package/dist/dd-touch.d.ts +1 -1
- package/dist/dd-touch.js +1 -1
- package/dist/dd-touch.js.map +1 -1
- package/dist/es5/dd-base-impl.d.ts +1 -1
- package/dist/es5/dd-base-impl.js +1 -1
- package/dist/es5/dd-base-impl.js.map +1 -1
- package/dist/es5/dd-draggable.d.ts +1 -1
- package/dist/es5/dd-draggable.js +1 -1
- package/dist/es5/dd-draggable.js.map +1 -1
- package/dist/es5/dd-droppable.d.ts +1 -1
- package/dist/es5/dd-droppable.js +1 -1
- package/dist/es5/dd-droppable.js.map +1 -1
- package/dist/es5/dd-element.d.ts +1 -1
- package/dist/es5/dd-element.js +1 -1
- package/dist/es5/dd-element.js.map +1 -1
- package/dist/es5/dd-gridstack.d.ts +1 -1
- package/dist/es5/dd-gridstack.js +1 -1
- package/dist/es5/dd-gridstack.js.map +1 -1
- package/dist/es5/dd-manager.d.ts +1 -1
- package/dist/es5/dd-manager.js +1 -1
- package/dist/es5/dd-manager.js.map +1 -1
- package/dist/es5/dd-resizable-handle.d.ts +1 -1
- package/dist/es5/dd-resizable-handle.js +1 -1
- package/dist/es5/dd-resizable-handle.js.map +1 -1
- package/dist/es5/dd-resizable.d.ts +1 -1
- package/dist/es5/dd-resizable.js +1 -1
- package/dist/es5/dd-resizable.js.map +1 -1
- package/dist/es5/dd-touch.d.ts +1 -1
- package/dist/es5/dd-touch.js +1 -1
- package/dist/es5/dd-touch.js.map +1 -1
- package/dist/es5/gridstack-all.js +1 -1
- package/dist/es5/gridstack-all.js.LICENSE.txt +1 -1
- package/dist/es5/gridstack-all.js.map +1 -1
- package/dist/es5/gridstack-engine.d.ts +3 -3
- package/dist/es5/gridstack-engine.js +17 -14
- package/dist/es5/gridstack-engine.js.map +1 -1
- package/dist/es5/gridstack-poly.js +1 -1
- package/dist/es5/gridstack.d.ts +3 -2
- package/dist/es5/gridstack.js +56 -34
- package/dist/es5/gridstack.js.map +1 -1
- package/dist/es5/types.d.ts +1 -1
- package/dist/es5/types.js +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/utils.d.ts +3 -4
- package/dist/es5/utils.js +11 -9
- package/dist/es5/utils.js.map +1 -1
- package/dist/gridstack-all.js +1 -1
- package/dist/gridstack-all.js.LICENSE.txt +1 -1
- package/dist/gridstack-all.js.map +1 -1
- package/dist/gridstack-engine.d.ts +3 -3
- package/dist/gridstack-engine.js +15 -13
- package/dist/gridstack-engine.js.map +1 -1
- package/dist/gridstack.css +1 -1
- package/dist/gridstack.d.ts +3 -2
- package/dist/gridstack.js +57 -35
- package/dist/gridstack.js.map +1 -1
- package/dist/src/gridstack.scss +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +3 -4
- package/dist/utils.js +10 -9
- package/dist/utils.js.map +1 -1
- package/doc/CHANGES.md +10 -0
- package/doc/README.md +3 -4
- package/package.json +1 -1
package/dist/gridstack.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* GridStack 10.1.
|
|
2
|
+
* GridStack 10.1.2
|
|
3
3
|
* https://gridstackjs.com/
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) 2021-2022 Alain Dumesny
|
|
@@ -218,7 +218,8 @@ class GridStack {
|
|
|
218
218
|
if (bk?.length > 1)
|
|
219
219
|
bk.sort((a, b) => (b.w || 0) - (a.w || 0));
|
|
220
220
|
// elements DOM attributes override any passed options (like CSS style) - merge the two together
|
|
221
|
-
let defaults = {
|
|
221
|
+
let defaults = {
|
|
222
|
+
...Utils.cloneDeep(gridDefaults),
|
|
222
223
|
column: Utils.toNumber(el.getAttribute('gs-column')) || gridDefaults.column,
|
|
223
224
|
minRow: rowAttr ? rowAttr : Utils.toNumber(el.getAttribute('gs-min-row')) || gridDefaults.minRow,
|
|
224
225
|
maxRow: rowAttr ? rowAttr : Utils.toNumber(el.getAttribute('gs-max-row')) || gridDefaults.maxRow,
|
|
@@ -585,10 +586,17 @@ class GridStack {
|
|
|
585
586
|
load(items, addRemove = GridStack.addRemoveCB || true) {
|
|
586
587
|
items = Utils.cloneDeep(items); // so we can mod
|
|
587
588
|
const column = this.getColumn();
|
|
589
|
+
// if we have a mix of new items without coordinates and existing items, separate them out so they can be added after #2639
|
|
590
|
+
let addAfter = items.filter(n => (n.x === undefined || n.y === undefined) && !Utils.find(this.engine.nodes, n.id));
|
|
591
|
+
if (addAfter.length && addAfter.length !== items.length) {
|
|
592
|
+
items = items.filter(n => !Utils.find(addAfter, n.id));
|
|
593
|
+
}
|
|
594
|
+
else
|
|
595
|
+
addAfter = [];
|
|
588
596
|
// if passed list has coordinates, use them (insert from end to beginning for conflict resolution) else keep widget order
|
|
589
597
|
const haveCoord = items.some(w => w.x !== undefined || w.y !== undefined);
|
|
590
598
|
if (haveCoord)
|
|
591
|
-
items = Utils.sort(items, -1
|
|
599
|
+
items = Utils.sort(items, -1);
|
|
592
600
|
this._insertNotAppend = haveCoord; // if we create in reverse order...
|
|
593
601
|
// if we're loading a layout into for example 1 column and items don't fit, make sure to save
|
|
594
602
|
// the original wanted layout so we can scale back up correctly #1471
|
|
@@ -662,15 +670,20 @@ class GridStack {
|
|
|
662
670
|
this.addWidget(w);
|
|
663
671
|
}
|
|
664
672
|
});
|
|
673
|
+
// finally append any separate ones that didn't have explicit coordinates last so they can find next empty spot
|
|
674
|
+
if (addRemove) {
|
|
675
|
+
addAfter.forEach(w => this.addWidget(w));
|
|
676
|
+
}
|
|
665
677
|
this.engine.removedNodes = removed;
|
|
666
678
|
this.batchUpdate(false);
|
|
667
679
|
// after commit, clear that flag
|
|
668
680
|
delete this._ignoreLayoutsNodeChange;
|
|
669
681
|
delete this._insertNotAppend;
|
|
670
682
|
prevCB ? GridStack.addRemoveCB = prevCB : delete GridStack.addRemoveCB;
|
|
671
|
-
// delay adding animation back
|
|
672
|
-
if (noAnim && this.opts
|
|
673
|
-
setTimeout(() =>
|
|
683
|
+
// delay adding animation back, but check to make sure grid (opt) is still around
|
|
684
|
+
if (noAnim && this.opts?.animate)
|
|
685
|
+
setTimeout(() => { if (this.opts)
|
|
686
|
+
this.setAnimation(this.opts.animate); });
|
|
674
687
|
return this;
|
|
675
688
|
}
|
|
676
689
|
/**
|
|
@@ -1042,7 +1055,7 @@ class GridStack {
|
|
|
1042
1055
|
}
|
|
1043
1056
|
if (!node)
|
|
1044
1057
|
return;
|
|
1045
|
-
if (GridStack.addRemoveCB) {
|
|
1058
|
+
if (removeDOM && GridStack.addRemoveCB) {
|
|
1046
1059
|
GridStack.addRemoveCB(this.el, node, false, false);
|
|
1047
1060
|
}
|
|
1048
1061
|
// remove our DOM data (circular link) and drag&drop permanently
|
|
@@ -1062,15 +1075,21 @@ class GridStack {
|
|
|
1062
1075
|
/**
|
|
1063
1076
|
* Removes all widgets from the grid.
|
|
1064
1077
|
* @param removeDOM if `false` DOM elements won't be removed from the tree (Default? `true`).
|
|
1078
|
+
* @param triggerEvent if `false` (quiet mode) element will not be added to removed list and no 'removed' callbacks will be called (Default? true).
|
|
1065
1079
|
*/
|
|
1066
|
-
removeAll(removeDOM = true) {
|
|
1080
|
+
removeAll(removeDOM = true, triggerEvent = true) {
|
|
1067
1081
|
// always remove our DOM data (circular link) before list gets emptied and drag&drop permanently
|
|
1068
1082
|
this.engine.nodes.forEach(n => {
|
|
1083
|
+
if (removeDOM && GridStack.addRemoveCB) {
|
|
1084
|
+
GridStack.addRemoveCB(this.el, n, false, false);
|
|
1085
|
+
}
|
|
1069
1086
|
delete n.el.gridstackNode;
|
|
1070
|
-
this.
|
|
1087
|
+
if (!this.opts.staticGrid)
|
|
1088
|
+
this._removeDD(n.el);
|
|
1071
1089
|
});
|
|
1072
|
-
this.engine.removeAll(removeDOM);
|
|
1073
|
-
|
|
1090
|
+
this.engine.removeAll(removeDOM, triggerEvent);
|
|
1091
|
+
if (triggerEvent)
|
|
1092
|
+
this._triggerRemoveEvent();
|
|
1074
1093
|
return this;
|
|
1075
1094
|
}
|
|
1076
1095
|
/**
|
|
@@ -1334,8 +1353,9 @@ class GridStack {
|
|
|
1334
1353
|
}
|
|
1335
1354
|
// prevent added nodes from also triggering 'change' event (which is called next)
|
|
1336
1355
|
this.engine.addedNodes.forEach(n => { delete n._dirty; });
|
|
1337
|
-
|
|
1356
|
+
const addedNodes = [...this.engine.addedNodes];
|
|
1338
1357
|
this.engine.addedNodes = [];
|
|
1358
|
+
this._triggerEvent('added', addedNodes);
|
|
1339
1359
|
}
|
|
1340
1360
|
return this;
|
|
1341
1361
|
}
|
|
@@ -1344,8 +1364,9 @@ class GridStack {
|
|
|
1344
1364
|
if (this.engine.batchMode)
|
|
1345
1365
|
return this;
|
|
1346
1366
|
if (this.engine.removedNodes?.length) {
|
|
1347
|
-
|
|
1367
|
+
const removedNodes = [...this.engine.removedNodes];
|
|
1348
1368
|
this.engine.removedNodes = [];
|
|
1369
|
+
this._triggerEvent('removed', removedNodes);
|
|
1349
1370
|
}
|
|
1350
1371
|
return this;
|
|
1351
1372
|
}
|
|
@@ -1917,7 +1938,7 @@ class GridStack {
|
|
|
1917
1938
|
};
|
|
1918
1939
|
dd.droppable(this.el, {
|
|
1919
1940
|
accept: (el) => {
|
|
1920
|
-
let node = el.gridstackNode;
|
|
1941
|
+
let node = el.gridstackNode || this._readAttr(el, false);
|
|
1921
1942
|
// set accept drop to true on ourself (which we ignore) so we don't get "can't drop" icon in HTML5 mode while moving
|
|
1922
1943
|
if (node?.grid === this)
|
|
1923
1944
|
return true;
|
|
@@ -1932,7 +1953,7 @@ class GridStack {
|
|
|
1932
1953
|
let selector = (this.opts.acceptWidgets === true ? '.grid-stack-item' : this.opts.acceptWidgets);
|
|
1933
1954
|
canAccept = el.matches(selector);
|
|
1934
1955
|
}
|
|
1935
|
-
// finally check to make sure we actually have space left #1571
|
|
1956
|
+
// finally check to make sure we actually have space left #1571 #2633
|
|
1936
1957
|
if (canAccept && node && this.opts.maxRow) {
|
|
1937
1958
|
let n = { w: node.w, h: node.h, minW: node.minW, minH: node.minH }; // only width/height matters and autoPosition
|
|
1938
1959
|
canAccept = this.engine.willItFit(n);
|
|
@@ -1994,7 +2015,7 @@ class GridStack {
|
|
|
1994
2015
|
node._temporaryRemoved = true; // so we can insert it
|
|
1995
2016
|
}
|
|
1996
2017
|
// clear any marked for complete removal (Note: don't check _isAboutToRemove as that is cleared above - just do it)
|
|
1997
|
-
|
|
2018
|
+
GridStack._itemRemoving(node.el, false);
|
|
1998
2019
|
dd.on(el, 'drag', onDrag);
|
|
1999
2020
|
// make sure this is called at least once when going fast #1578
|
|
2000
2021
|
onDrag(event, el, helper);
|
|
@@ -2092,35 +2113,36 @@ class GridStack {
|
|
|
2092
2113
|
if (this._gsEventHandler['dropped']) {
|
|
2093
2114
|
this._gsEventHandler['dropped']({ ...event, type: 'dropped' }, origNode && origNode.grid ? origNode : undefined, node);
|
|
2094
2115
|
}
|
|
2095
|
-
// delay adding animation back
|
|
2116
|
+
// delay adding animation back, but check to make sure grid (opt) is still around
|
|
2096
2117
|
if (noAnim)
|
|
2097
|
-
setTimeout(() =>
|
|
2118
|
+
setTimeout(() => { if (this.opts)
|
|
2119
|
+
this.setAnimation(this.opts.animate); });
|
|
2098
2120
|
return false; // prevent parent from receiving msg (which may be grid as well)
|
|
2099
2121
|
});
|
|
2100
2122
|
return this;
|
|
2101
2123
|
}
|
|
2102
2124
|
/** @internal mark item for removal */
|
|
2103
|
-
_itemRemoving(el, remove) {
|
|
2104
|
-
|
|
2105
|
-
if (!node
|
|
2125
|
+
static _itemRemoving(el, remove) {
|
|
2126
|
+
const node = el ? el.gridstackNode : undefined;
|
|
2127
|
+
if (!node?.grid || el.classList.contains(node.grid.opts.removableOptions.decline))
|
|
2106
2128
|
return;
|
|
2107
2129
|
remove ? node._isAboutToRemove = true : delete node._isAboutToRemove;
|
|
2108
2130
|
remove ? el.classList.add('grid-stack-item-removing') : el.classList.remove('grid-stack-item-removing');
|
|
2109
2131
|
}
|
|
2110
2132
|
/** @internal called to setup a trash drop zone if the user specifies it */
|
|
2111
2133
|
_setupRemoveDrop() {
|
|
2112
|
-
if (
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2134
|
+
if (typeof this.opts.removable !== 'string')
|
|
2135
|
+
return this;
|
|
2136
|
+
let trashEl = document.querySelector(this.opts.removable);
|
|
2137
|
+
if (!trashEl)
|
|
2138
|
+
return this;
|
|
2139
|
+
// only register ONE static drop-over/dropout callback for the 'trash', and it will
|
|
2140
|
+
// update the passed in item and parent grid because the '.trash' is a shared resource anyway,
|
|
2141
|
+
// and Native DD only has 1 event CB (having a list and technically a per grid removableOptions complicates things greatly)
|
|
2142
|
+
if (!this.opts.staticGrid && !dd.isDroppable(trashEl)) {
|
|
2143
|
+
dd.droppable(trashEl, this.opts.removableOptions)
|
|
2144
|
+
.on(trashEl, 'dropover', (event, el) => GridStack._itemRemoving(el, true))
|
|
2145
|
+
.on(trashEl, 'dropout', (event, el) => GridStack._itemRemoving(el, false));
|
|
2124
2146
|
}
|
|
2125
2147
|
return this;
|
|
2126
2148
|
}
|
|
@@ -2375,7 +2397,7 @@ class GridStack {
|
|
|
2375
2397
|
node.el = node._isExternal && helper ? helper : el; // point back to real item being dragged
|
|
2376
2398
|
if (this.opts.removable === true) { // boolean vs a class string
|
|
2377
2399
|
// item leaving us and we are supposed to remove on leave (no need to drag onto trash) mark it so
|
|
2378
|
-
|
|
2400
|
+
GridStack._itemRemoving(el, true);
|
|
2379
2401
|
}
|
|
2380
2402
|
// finally if item originally came from another grid, but left us, restore things back to prev info
|
|
2381
2403
|
if (el._gridstackNodeOrig) {
|
|
@@ -2400,6 +2422,6 @@ GridStack.resizeToContentParent = '.grid-stack-item-content';
|
|
|
2400
2422
|
GridStack.Utils = Utils;
|
|
2401
2423
|
/** scoping so users can call new GridStack.Engine(12) for example */
|
|
2402
2424
|
GridStack.Engine = GridStackEngine;
|
|
2403
|
-
GridStack.GDRev = '10.1.
|
|
2425
|
+
GridStack.GDRev = '10.1.2';
|
|
2404
2426
|
export { GridStack };
|
|
2405
2427
|
//# sourceMappingURL=gridstack.js.map
|