gridstack 9.3.0 → 9.5.0

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.
Files changed (111) hide show
  1. package/.github/FUNDING.yml +1 -1
  2. package/angular/package.json +1 -1
  3. package/angular/projects/lib/package.json +1 -1
  4. package/angular/projects/lib/src/lib/base-widget.ts +1 -1
  5. package/angular/projects/lib/src/lib/gridstack-item.component.ts +1 -1
  6. package/angular/projects/lib/src/lib/gridstack.component.ts +1 -1
  7. package/angular/projects/lib/src/lib/gridstack.module.ts +1 -1
  8. package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
  9. package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
  10. package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
  11. package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
  12. package/dist/angular/fesm2015/gridstack-angular.mjs +4 -4
  13. package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
  14. package/dist/angular/fesm2020/gridstack-angular.mjs +4 -4
  15. package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
  16. package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
  17. package/dist/angular/lib/gridstack.component.d.ts +1 -1
  18. package/dist/angular/package.json +1 -1
  19. package/dist/angular/src/base-widget.ts +1 -1
  20. package/dist/angular/src/gridstack-item.component.ts +1 -1
  21. package/dist/angular/src/gridstack.component.ts +1 -1
  22. package/dist/angular/src/gridstack.module.ts +1 -1
  23. package/dist/dd-base-impl.d.ts +1 -1
  24. package/dist/dd-base-impl.js +1 -1
  25. package/dist/dd-base-impl.js.map +1 -1
  26. package/dist/dd-draggable.d.ts +1 -5
  27. package/dist/dd-draggable.js +52 -24
  28. package/dist/dd-draggable.js.map +1 -1
  29. package/dist/dd-droppable.d.ts +1 -1
  30. package/dist/dd-droppable.js +1 -1
  31. package/dist/dd-droppable.js.map +1 -1
  32. package/dist/dd-element.d.ts +1 -1
  33. package/dist/dd-element.js +1 -1
  34. package/dist/dd-element.js.map +1 -1
  35. package/dist/dd-gridstack.d.ts +1 -1
  36. package/dist/dd-gridstack.js +1 -1
  37. package/dist/dd-gridstack.js.map +1 -1
  38. package/dist/dd-manager.d.ts +1 -1
  39. package/dist/dd-manager.js +1 -1
  40. package/dist/dd-manager.js.map +1 -1
  41. package/dist/dd-resizable-handle.d.ts +1 -1
  42. package/dist/dd-resizable-handle.js +1 -1
  43. package/dist/dd-resizable-handle.js.map +1 -1
  44. package/dist/dd-resizable.d.ts +1 -1
  45. package/dist/dd-resizable.js +46 -23
  46. package/dist/dd-resizable.js.map +1 -1
  47. package/dist/dd-touch.d.ts +1 -1
  48. package/dist/dd-touch.js +1 -1
  49. package/dist/dd-touch.js.map +1 -1
  50. package/dist/es5/dd-base-impl.d.ts +1 -1
  51. package/dist/es5/dd-base-impl.js +1 -1
  52. package/dist/es5/dd-base-impl.js.map +1 -1
  53. package/dist/es5/dd-draggable.d.ts +1 -5
  54. package/dist/es5/dd-draggable.js +52 -27
  55. package/dist/es5/dd-draggable.js.map +1 -1
  56. package/dist/es5/dd-droppable.d.ts +1 -1
  57. package/dist/es5/dd-droppable.js +1 -1
  58. package/dist/es5/dd-droppable.js.map +1 -1
  59. package/dist/es5/dd-element.d.ts +1 -1
  60. package/dist/es5/dd-element.js +1 -1
  61. package/dist/es5/dd-element.js.map +1 -1
  62. package/dist/es5/dd-gridstack.d.ts +1 -1
  63. package/dist/es5/dd-gridstack.js +1 -1
  64. package/dist/es5/dd-gridstack.js.map +1 -1
  65. package/dist/es5/dd-manager.d.ts +1 -1
  66. package/dist/es5/dd-manager.js +1 -1
  67. package/dist/es5/dd-manager.js.map +1 -1
  68. package/dist/es5/dd-resizable-handle.d.ts +1 -1
  69. package/dist/es5/dd-resizable-handle.js +1 -1
  70. package/dist/es5/dd-resizable-handle.js.map +1 -1
  71. package/dist/es5/dd-resizable.d.ts +1 -1
  72. package/dist/es5/dd-resizable.js +47 -25
  73. package/dist/es5/dd-resizable.js.map +1 -1
  74. package/dist/es5/dd-touch.d.ts +1 -1
  75. package/dist/es5/dd-touch.js +1 -1
  76. package/dist/es5/dd-touch.js.map +1 -1
  77. package/dist/es5/gridstack-all.js +1 -1
  78. package/dist/es5/gridstack-all.js.LICENSE.txt +1 -1
  79. package/dist/es5/gridstack-all.js.map +1 -1
  80. package/dist/es5/gridstack-engine.d.ts +1 -1
  81. package/dist/es5/gridstack-engine.js +3 -3
  82. package/dist/es5/gridstack-engine.js.map +1 -1
  83. package/dist/es5/gridstack-poly.js +1 -1
  84. package/dist/es5/gridstack.d.ts +2 -2
  85. package/dist/es5/gridstack.js +54 -41
  86. package/dist/es5/gridstack.js.map +1 -1
  87. package/dist/es5/types.d.ts +3 -1
  88. package/dist/es5/types.js +1 -1
  89. package/dist/es5/types.js.map +1 -1
  90. package/dist/es5/utils.d.ts +3 -7
  91. package/dist/es5/utils.js +8 -34
  92. package/dist/es5/utils.js.map +1 -1
  93. package/dist/gridstack-all.js +1 -1
  94. package/dist/gridstack-all.js.LICENSE.txt +1 -1
  95. package/dist/gridstack-all.js.map +1 -1
  96. package/dist/gridstack-engine.d.ts +1 -1
  97. package/dist/gridstack-engine.js +3 -3
  98. package/dist/gridstack-engine.js.map +1 -1
  99. package/dist/gridstack.css +1 -1
  100. package/dist/gridstack.d.ts +2 -2
  101. package/dist/gridstack.js +50 -37
  102. package/dist/gridstack.js.map +1 -1
  103. package/dist/src/gridstack.scss +1 -1
  104. package/dist/types.d.ts +3 -1
  105. package/dist/types.js +1 -1
  106. package/dist/types.js.map +1 -1
  107. package/dist/utils.d.ts +3 -7
  108. package/dist/utils.js +8 -34
  109. package/dist/utils.js.map +1 -1
  110. package/doc/CHANGES.md +12 -0
  111. package/package.json +1 -1
@@ -36,7 +36,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.GridStack = void 0;
38
38
  /*!
39
- * GridStack 9.3.0
39
+ * GridStack 9.5.0
40
40
  * https://gridstackjs.com/
41
41
  *
42
42
  * Copyright (c) 2021-2022 Alain Dumesny
@@ -592,12 +592,14 @@ var GridStack = exports.GridStack = /** @class */ (function () {
592
592
  * @example
593
593
  * see http://gridstackjs.com/demo/serialization.html
594
594
  */
595
- GridStack.prototype.load = function (layout, addRemove) {
595
+ GridStack.prototype.load = function (items, addRemove) {
596
596
  var _this = this;
597
597
  if (addRemove === void 0) { addRemove = GridStack.addRemoveCB || true; }
598
+ items = utils_1.Utils.cloneDeep(items); // so we can mod
598
599
  // if passed list has coordinates, use them (insert from end to beginning for conflict resolution) else force widget same order
599
- var haveCoord = layout.some(function (w) { return w.x !== undefined || w.y !== undefined; });
600
- var items = haveCoord ? utils_1.Utils.sort(layout, -1, this._prevColumn || this.getColumn()) : layout;
600
+ var haveCoord = items.some(function (w) { return w.x !== undefined || w.y !== undefined; });
601
+ if (haveCoord)
602
+ items = utils_1.Utils.sort(items, -1, this._prevColumn || this.getColumn());
601
603
  this._insertNotAppend = haveCoord; // if we create in reverse order...
602
604
  // if we're loading a layout into for example 1 column (_prevColumn is set only when going to 1) and items don't fit, make sure to save
603
605
  // the original wanted layout so we can scale back up correctly #1471
@@ -613,9 +615,11 @@ var GridStack = exports.GridStack = /** @class */ (function () {
613
615
  this.batchUpdate();
614
616
  // see if any items are missing from new layout and need to be removed first
615
617
  if (addRemove) {
616
- var copyNodes_1 = __spreadArray([], this.engine.nodes, true); // don't loop through array you modify
617
- copyNodes_1.forEach(function (n) {
618
- var item = items.find(function (w) { return n.id === w.id; });
618
+ var copyNodes = __spreadArray([], this.engine.nodes, true); // don't loop through array you modify
619
+ copyNodes.forEach(function (n) {
620
+ if (!n.id)
621
+ return;
622
+ var item = utils_1.Utils.find(items, n.id);
619
623
  if (!item) {
620
624
  if (GridStack.addRemoveCB)
621
625
  GridStack.addRemoveCB(_this.el, n, false, false);
@@ -624,20 +628,37 @@ var GridStack = exports.GridStack = /** @class */ (function () {
624
628
  }
625
629
  });
626
630
  }
627
- // now add/update the widgets - starting with an empty list to reduce collision and add no-coord ones at next available spot
628
- var copyNodes = this.engine.nodes;
629
- this.engine.nodes = [];
631
+ // now add/update the widgets - starting with removing items in the new layout we will reposition
632
+ // to reduce collision and add no-coord ones at next available spot
633
+ var updateNodes = [];
634
+ this.engine.nodes = this.engine.nodes.filter(function (n) {
635
+ if (utils_1.Utils.find(items, n.id)) {
636
+ updateNodes.push(n);
637
+ return false;
638
+ } // remove if found from list
639
+ return true;
640
+ });
641
+ var widthChanged = false;
630
642
  items.forEach(function (w) {
631
643
  var _a;
632
- var item = (w.id !== undefined) ? copyNodes.find(function (n) { return n.id === w.id; }) : undefined;
644
+ var item = utils_1.Utils.find(updateNodes, w.id);
633
645
  if (item) {
646
+ // if item sizes to content, re-use the exiting height so it's a better guess at the final size 9same if width doesn't change)
647
+ if (utils_1.Utils.shouldSizeToContent(item))
648
+ w.h = item.h;
634
649
  // check if missing coord, in which case find next empty slot with new (or old if missing) sizes
635
650
  if (w.autoPosition || w.x === undefined || w.y === undefined) {
636
651
  w.w = w.w || item.w;
637
652
  w.h = w.h || item.h;
638
653
  _this.engine.findEmptyPosition(w);
639
654
  }
640
- _this.engine.nodes.push(item); // now back to current list...
655
+ widthChanged = widthChanged || (w.w !== undefined && w.w !== item.w);
656
+ // add back to current list BUT force a collision check if it 'appears' we didn't change to make sure we don't overlap others now
657
+ _this.engine.nodes.push(item);
658
+ if (utils_1.Utils.samePos(item, w)) {
659
+ _this.moveNode(item, __assign(__assign({}, w), { forceCollide: true }));
660
+ utils_1.Utils.copyPos(w, item, true);
661
+ }
641
662
  _this.update(item.el, w);
642
663
  if ((_a = w.subGridOpts) === null || _a === void 0 ? void 0 : _a.children) { // update any sub grid as well
643
664
  var sub = item.el.querySelector('.grid-stack');
@@ -652,6 +673,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
652
673
  }
653
674
  });
654
675
  this.engine.removedNodes = removed;
676
+ this.doContentResize(widthChanged, true); // we only need to wait for animation if we changed any widths
655
677
  this.batchUpdate(false);
656
678
  // after commit, clear that flag
657
679
  delete this._ignoreLayoutsNodeChange;
@@ -775,9 +797,9 @@ var GridStack = exports.GridStack = /** @class */ (function () {
775
797
  if (!column || column < 1 || this.opts.column === column)
776
798
  return this;
777
799
  var oldColumn = this.getColumn();
778
- // if we go into 1 column mode (which happens if we're sized less than minW unless disableOneColumnMode is on)
800
+ // if we go into 1 column mode due to size change (disableOneColumnMode is off and we hit min width)
779
801
  // then remember the original columns so we can restore.
780
- if (column === 1) {
802
+ if (column === 1 && !this.opts.disableOneColumnMode) {
781
803
  this._prevColumn = oldColumn;
782
804
  }
783
805
  else {
@@ -1131,6 +1153,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1131
1153
  return;
1132
1154
  var w = utils_1.Utils.cloneDeep(opt); // make a copy we can modify in case they re-use it or multiple items
1133
1155
  delete w.autoPosition;
1156
+ delete w.id;
1134
1157
  // move/resize widget if anything changed
1135
1158
  var keys = ['x', 'y', 'w', 'h'];
1136
1159
  var m;
@@ -1148,14 +1171,14 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1148
1171
  // check for content changing
1149
1172
  if (w.content !== undefined) {
1150
1173
  var itemContent = el.querySelector('.grid-stack-item-content');
1151
- if (!itemContent || itemContent.innerHTML === w.content)
1152
- return;
1153
- itemContent.innerHTML = w.content;
1154
- // restore any sub-grid back
1155
- if ((_a = n.subGrid) === null || _a === void 0 ? void 0 : _a.el) {
1156
- itemContent.appendChild(n.subGrid.el);
1157
- if (!n.subGrid.opts.styleInHead)
1158
- n.subGrid._updateStyles(true); // force create
1174
+ if (itemContent && itemContent.innerHTML !== w.content) {
1175
+ itemContent.innerHTML = w.content;
1176
+ // restore any sub-grid back
1177
+ if ((_a = n.subGrid) === null || _a === void 0 ? void 0 : _a.el) {
1178
+ itemContent.appendChild(n.subGrid.el);
1179
+ if (!n.subGrid.opts.styleInHead)
1180
+ n.subGrid._updateStyles(true); // force create
1181
+ }
1159
1182
  }
1160
1183
  delete w.content;
1161
1184
  }
@@ -1171,7 +1194,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1171
1194
  }
1172
1195
  utils_1.Utils.sanitizeMinMax(n);
1173
1196
  // finally move the widget
1174
- if (m)
1197
+ if (m !== undefined)
1175
1198
  _this.moveNode(n, m);
1176
1199
  if (changed) { // move will only update x,y,w,h so update the rest too
1177
1200
  _this._writeAttr(el, n);
@@ -1647,7 +1670,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1647
1670
  || this.engine.nodes.find(function (n) { return n.sizeToContent; }));
1648
1671
  if (!forceRemove && trackSize && !this.resizeObserver) {
1649
1672
  this._sizeThrottle = utils_1.Utils.throttle(function () { return _this.onResize(); }, this.opts.cellHeightThrottle);
1650
- this.resizeObserver = new ResizeObserver(function (entries) { return _this._sizeThrottle(); });
1673
+ this.resizeObserver = new ResizeObserver(function () { return _this._sizeThrottle(); });
1651
1674
  this.resizeObserver.observe(this.el);
1652
1675
  this._skipInitialResize = true; // makeWidget will originally have called on startup
1653
1676
  }
@@ -1893,16 +1916,15 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1893
1916
  // vars shared across all methods
1894
1917
  var cellHeight, cellWidth;
1895
1918
  var onDrag = function (event, el, helper) {
1896
- var _a, _b;
1919
+ var _a;
1897
1920
  var node = el.gridstackNode;
1898
1921
  if (!node)
1899
1922
  return;
1900
1923
  helper = helper || el;
1901
1924
  var parent = _this.el.getBoundingClientRect();
1902
- var scaleX = (_a = utils_1.Utils.getScaleForElement(helper), _a.scaleX), scaleY = _a.scaleY;
1903
- var top = (_b = helper.getBoundingClientRect(), _b.top), left = _b.left;
1904
- left = (left - parent.left) / scaleX;
1905
- top = (top - parent.top) / scaleY;
1925
+ var top = (_a = helper.getBoundingClientRect(), _a.top), left = _a.left;
1926
+ left -= parent.left;
1927
+ top -= parent.top;
1906
1928
  var ui = { position: { top: top, left: left } };
1907
1929
  if (node._temporaryRemoved) {
1908
1930
  node.x = Math.max(0, Math.round(left / cellWidth));
@@ -2066,6 +2088,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
2066
2088
  _this.engine.cleanupNode(node); // removes all internal _xyz values
2067
2089
  node.grid = _this;
2068
2090
  }
2091
+ delete node.grid._isTemp;
2069
2092
  dd.off(el, 'drag');
2070
2093
  // if we made a copy ('helper' which is temp) of the original node then insert a copy, else we move the original node (#1102)
2071
2094
  // as the helper will be nuked by jquery-ui otherwise. TODO: update old code path
@@ -2096,6 +2119,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
2096
2119
  if (!subGrid.opts.styleInHead)
2097
2120
  subGrid._updateStyles(true); // re-create sub-grid styles now that we've moved
2098
2121
  }
2122
+ _this._prepareDragDropByNode(node);
2099
2123
  _this._updateContainerHeight();
2100
2124
  _this.engine.addedNodes.push(node); // @ts-ignore
2101
2125
  _this._triggerAddEvent(); // @ts-ignore
@@ -2104,17 +2128,6 @@ var GridStack = exports.GridStack = /** @class */ (function () {
2104
2128
  if (_this._gsEventHandler['dropped']) {
2105
2129
  _this._gsEventHandler['dropped'](__assign(__assign({}, event), { type: 'dropped' }), origNode && origNode.grid ? origNode : undefined, node);
2106
2130
  }
2107
- // wait till we return out of the drag callback to set the new drag&resize handler or they may get messed up
2108
- window.setTimeout(function () {
2109
- // IFF we are still there (some application will use as placeholder and insert their real widget instead and better call makeWidget())
2110
- if (node.el && node.el.parentElement) {
2111
- _this._prepareDragDropByNode(node);
2112
- }
2113
- else {
2114
- _this.engine.removeNode(node);
2115
- }
2116
- delete node.grid._isTemp;
2117
- });
2118
2131
  return false; // prevent parent from receiving msg (which may be grid as well)
2119
2132
  });
2120
2133
  return this;
@@ -2397,7 +2410,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
2397
2410
  GridStack.Utils = utils_1.Utils;
2398
2411
  /** scoping so users can call new GridStack.Engine(12) for example */
2399
2412
  GridStack.Engine = gridstack_engine_1.GridStackEngine;
2400
- GridStack.GDRev = '9.3.0';
2413
+ GridStack.GDRev = '9.5.0';
2401
2414
  return GridStack;
2402
2415
  }());
2403
2416
  //# sourceMappingURL=gridstack.js.map