gridstack 11.4.0 → 11.5.1

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 (106) hide show
  1. package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
  2. package/dist/angular/esm2020/lib/gridstack-item.component.mjs +8 -8
  3. package/dist/angular/esm2020/lib/gridstack.component.mjs +13 -13
  4. package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
  5. package/dist/angular/esm2020/lib/types.mjs +2 -2
  6. package/dist/angular/fesm2015/gridstack-angular.mjs +21 -21
  7. package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
  8. package/dist/angular/fesm2020/gridstack-angular.mjs +22 -22
  9. package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
  10. package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
  11. package/dist/angular/lib/gridstack.component.d.ts +5 -5
  12. package/dist/angular/lib/types.d.ts +1 -1
  13. package/dist/angular/src/base-widget.ts +1 -1
  14. package/dist/angular/src/gridstack-item.component.ts +4 -4
  15. package/dist/angular/src/gridstack.component.ts +13 -14
  16. package/dist/angular/src/gridstack.module.ts +1 -1
  17. package/dist/dd-base-impl.d.ts +1 -1
  18. package/dist/dd-base-impl.js +1 -1
  19. package/dist/dd-base-impl.js.map +1 -1
  20. package/dist/dd-draggable.d.ts +1 -1
  21. package/dist/dd-draggable.js +1 -1
  22. package/dist/dd-draggable.js.map +1 -1
  23. package/dist/dd-droppable.d.ts +1 -1
  24. package/dist/dd-droppable.js +1 -1
  25. package/dist/dd-droppable.js.map +1 -1
  26. package/dist/dd-element.d.ts +1 -1
  27. package/dist/dd-element.js +1 -1
  28. package/dist/dd-element.js.map +1 -1
  29. package/dist/dd-gridstack.d.ts +1 -1
  30. package/dist/dd-gridstack.js +1 -1
  31. package/dist/dd-gridstack.js.map +1 -1
  32. package/dist/dd-manager.d.ts +1 -1
  33. package/dist/dd-manager.js +1 -1
  34. package/dist/dd-manager.js.map +1 -1
  35. package/dist/dd-resizable-handle.d.ts +1 -1
  36. package/dist/dd-resizable-handle.js +1 -1
  37. package/dist/dd-resizable-handle.js.map +1 -1
  38. package/dist/dd-resizable.d.ts +1 -1
  39. package/dist/dd-resizable.js +1 -1
  40. package/dist/dd-resizable.js.map +1 -1
  41. package/dist/dd-touch.d.ts +1 -1
  42. package/dist/dd-touch.js +2 -2
  43. package/dist/dd-touch.js.map +1 -1
  44. package/dist/es5/dd-base-impl.d.ts +1 -1
  45. package/dist/es5/dd-base-impl.js +1 -1
  46. package/dist/es5/dd-base-impl.js.map +1 -1
  47. package/dist/es5/dd-draggable.d.ts +1 -1
  48. package/dist/es5/dd-draggable.js +1 -1
  49. package/dist/es5/dd-draggable.js.map +1 -1
  50. package/dist/es5/dd-droppable.d.ts +1 -1
  51. package/dist/es5/dd-droppable.js +1 -1
  52. package/dist/es5/dd-droppable.js.map +1 -1
  53. package/dist/es5/dd-element.d.ts +1 -1
  54. package/dist/es5/dd-element.js +1 -1
  55. package/dist/es5/dd-element.js.map +1 -1
  56. package/dist/es5/dd-gridstack.d.ts +1 -1
  57. package/dist/es5/dd-gridstack.js +1 -1
  58. package/dist/es5/dd-gridstack.js.map +1 -1
  59. package/dist/es5/dd-manager.d.ts +1 -1
  60. package/dist/es5/dd-manager.js +1 -1
  61. package/dist/es5/dd-manager.js.map +1 -1
  62. package/dist/es5/dd-resizable-handle.d.ts +1 -1
  63. package/dist/es5/dd-resizable-handle.js +1 -1
  64. package/dist/es5/dd-resizable-handle.js.map +1 -1
  65. package/dist/es5/dd-resizable.d.ts +1 -1
  66. package/dist/es5/dd-resizable.js +1 -1
  67. package/dist/es5/dd-resizable.js.map +1 -1
  68. package/dist/es5/dd-touch.d.ts +1 -1
  69. package/dist/es5/dd-touch.js +4 -4
  70. package/dist/es5/dd-touch.js.map +1 -1
  71. package/dist/es5/gridstack-all.js +1 -1
  72. package/dist/es5/gridstack-all.js.LICENSE.txt +1 -1
  73. package/dist/es5/gridstack-all.js.map +1 -1
  74. package/dist/es5/gridstack-engine.d.ts +1 -1
  75. package/dist/es5/gridstack-engine.js +1 -1
  76. package/dist/es5/gridstack-engine.js.map +1 -1
  77. package/dist/es5/gridstack-poly.js +1 -1
  78. package/dist/es5/gridstack.d.ts +13 -3
  79. package/dist/es5/gridstack.js +90 -13
  80. package/dist/es5/gridstack.js.map +1 -1
  81. package/dist/es5/types.d.ts +2 -2
  82. package/dist/es5/types.js +1 -1
  83. package/dist/es5/types.js.map +1 -1
  84. package/dist/es5/utils.d.ts +1 -1
  85. package/dist/es5/utils.js +1 -1
  86. package/dist/es5/utils.js.map +1 -1
  87. package/dist/gridstack-all.js +1 -1
  88. package/dist/gridstack-all.js.LICENSE.txt +1 -1
  89. package/dist/gridstack-all.js.map +1 -1
  90. package/dist/gridstack-engine.d.ts +1 -1
  91. package/dist/gridstack-engine.js +1 -1
  92. package/dist/gridstack-engine.js.map +1 -1
  93. package/dist/gridstack.css +1 -1
  94. package/dist/gridstack.d.ts +13 -3
  95. package/dist/gridstack.js +88 -13
  96. package/dist/gridstack.js.map +1 -1
  97. package/dist/src/gridstack.scss +1 -1
  98. package/dist/types.d.ts +2 -2
  99. package/dist/types.js +1 -1
  100. package/dist/types.js.map +1 -1
  101. package/dist/utils.d.ts +1 -1
  102. package/dist/utils.js +1 -1
  103. package/dist/utils.js.map +1 -1
  104. package/doc/CHANGES.md +12 -0
  105. package/doc/README.md +6 -0
  106. package/package.json +1 -1
package/dist/gridstack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * GridStack 11.4.0
2
+ * GridStack 11.5.1
3
3
  * https://gridstackjs.com/
4
4
  *
5
5
  * Copyright (c) 2021-2024 Alain Dumesny
@@ -1147,6 +1147,53 @@ class GridStack {
1147
1147
  }
1148
1148
  return this;
1149
1149
  }
1150
+ /**
1151
+ * Updates the passed in options on the grid (similar to update(widget) for for the grid options).
1152
+ * @param options PARTIAL grid options to update - only items specified will be updated.
1153
+ * NOTE: not all options updating are currently supported (lot of code, unlikely to change)
1154
+ */
1155
+ updateOptions(o) {
1156
+ const opts = this.opts;
1157
+ if (o.acceptWidgets !== undefined)
1158
+ this._setupAcceptWidget();
1159
+ if (o.animate !== undefined)
1160
+ this.setAnimation();
1161
+ if (o.cellHeight) {
1162
+ this.cellHeight(o.cellHeight, true);
1163
+ delete o.cellHeight;
1164
+ }
1165
+ if (o.class && o.class !== opts.class) {
1166
+ if (opts.class)
1167
+ this.el.classList.remove(opts.class);
1168
+ this.el.classList.add(o.class);
1169
+ }
1170
+ if (typeof (o.column) === 'number' && !o.columnOpts) {
1171
+ this.column(o.column);
1172
+ delete o.column;
1173
+ } // responsive column take over actual count
1174
+ if (o.margin !== undefined)
1175
+ this.margin(o.margin);
1176
+ if (o.staticGrid !== undefined)
1177
+ this.setStatic(o.staticGrid);
1178
+ if (o.disableDrag !== undefined && !o.staticGrid)
1179
+ this.enableMove(!o.disableDrag);
1180
+ if (o.disableResize !== undefined && !o.staticGrid)
1181
+ this.enableResize(!o.disableResize);
1182
+ if (o.float !== undefined)
1183
+ this.float(o.float);
1184
+ if (o.row !== undefined) {
1185
+ opts.minRow = opts.maxRow = o.row;
1186
+ }
1187
+ if (o.children?.length) {
1188
+ this.load(o.children);
1189
+ delete o.children;
1190
+ }
1191
+ // TBD if we have a real need for these (more complex code)
1192
+ // alwaysShowResizeHandle, draggable, handle, handleClass, itemClass, layout, placeholderClass, placeholderText, resizable, removable, row,...
1193
+ // rest are just copied over...
1194
+ this.opts = { ...this.opts, ...o };
1195
+ return this;
1196
+ }
1150
1197
  /**
1151
1198
  * Updates widget position/size and other info. Note: if you need to call this on all nodes, use load() instead which will update what changed.
1152
1199
  * @param els widget or selector of objects to modify (note: setting the same x,y for multiple items will be indeterministic and likely unwanted)
@@ -1593,7 +1640,13 @@ class GridStack {
1593
1640
  n.noResize = Utils.toBool(el.getAttribute('gs-no-resize'));
1594
1641
  n.noMove = Utils.toBool(el.getAttribute('gs-no-move'));
1595
1642
  n.locked = Utils.toBool(el.getAttribute('gs-locked'));
1596
- n.sizeToContent = Utils.toBool(el.getAttribute('gs-size-to-content'));
1643
+ const attr = el.getAttribute('gs-size-to-content');
1644
+ if (attr) {
1645
+ if (attr === 'true' || attr === 'false')
1646
+ n.sizeToContent = Utils.toBool(attr);
1647
+ else
1648
+ n.sizeToContent = parseInt(attr, 10);
1649
+ }
1597
1650
  n.id = el.getAttribute('gs-id');
1598
1651
  // read but never written out
1599
1652
  n.maxW = Utils.toNumber(el.getAttribute('gs-max-w'));
@@ -1615,11 +1668,11 @@ class GridStack {
1615
1668
  if (n.minH)
1616
1669
  el.removeAttribute('gs-min-h');
1617
1670
  }
1618
- // remove any key not found (null or false which is default)
1671
+ // remove any key not found (null or false which is default, unless sizeToContent=false override)
1619
1672
  for (const key in n) {
1620
1673
  if (!n.hasOwnProperty(key))
1621
1674
  return;
1622
- if (!n[key] && n[key] !== 0) { // 0 can be valid value (x,y only really)
1675
+ if (!n[key] && n[key] !== 0 && key !== 'gs-size-to-content') { // 0 can be valid value (x,y only really)
1623
1676
  delete n[key];
1624
1677
  }
1625
1678
  }
@@ -2045,6 +2098,11 @@ class GridStack {
2045
2098
  // delete node._added; // reset this to track placeholder again in case we were over other grid #1484 (dropout doesn't always clear)
2046
2099
  return false; // prevent parent from receiving msg (which may be a grid as well)
2047
2100
  }
2101
+ // If sidebar item, restore the sidebar node size to ensure consistent behavior when dragging between grids
2102
+ if (node?._sidebarOrig) {
2103
+ node.w = node._sidebarOrig.w;
2104
+ node.h = node._sidebarOrig.h;
2105
+ }
2048
2106
  // fix #1578 when dragging fast, we may not get a leave on the previous grid so force one now
2049
2107
  if (node?.grid && node.grid !== this && !node._temporaryRemoved) {
2050
2108
  // console.log('dropover without leave'); // TEST
@@ -2055,7 +2113,7 @@ class GridStack {
2055
2113
  // cache cell dimensions (which don't change), position can animate if we removed an item in otherGrid that affects us...
2056
2114
  cellWidth = this.cellWidth();
2057
2115
  cellHeight = this.getCellHeight(true);
2058
- // sidebar items: load any element attributes if we don't have a node
2116
+ // sidebar items: load any element attributes if we don't have a node on first enter from the sidebar
2059
2117
  if (!node) {
2060
2118
  const attr = helper.getAttribute('data-gs-widget') || helper.getAttribute('gridstacknode'); // TBD: temp support for old V11.0.0 attribute
2061
2119
  if (attr) {
@@ -2070,6 +2128,8 @@ class GridStack {
2070
2128
  }
2071
2129
  if (!node)
2072
2130
  node = this._readAttr(helper); // used to pass false for #2354, but now we clone top level node
2131
+ // On first grid enter from sidebar, set the initial sidebar item size properties for the node
2132
+ node._sidebarOrig = { w: node.w, h: node.h };
2073
2133
  }
2074
2134
  if (!node.grid) { // sidebar item
2075
2135
  if (!node.el)
@@ -2238,19 +2298,28 @@ class GridStack {
2238
2298
  }
2239
2299
  return this;
2240
2300
  }
2241
- /** prepares the element for drag&drop - this is normally called by makeWiget() unless are are delay loading */
2242
- prepareDragDrop(el) {
2243
- const node = el.gridstackNode;
2301
+ /**
2302
+ * prepares the element for drag&drop - this is normally called by makeWidget() unless are are delay loading
2303
+ * @param el GridItemHTMLElement of the widget
2304
+ * @param [force=false]
2305
+ * */
2306
+ prepareDragDrop(el, force = false) {
2307
+ const node = el?.gridstackNode;
2308
+ if (!node)
2309
+ return;
2244
2310
  const noMove = node.noMove || this.opts.disableDrag;
2245
2311
  const noResize = node.noResize || this.opts.disableResize;
2246
2312
  // check for disabled grid first
2247
- if (this.opts.staticGrid || (noMove && noResize)) {
2313
+ const disable = this.opts.staticGrid || (noMove && noResize);
2314
+ if (force || disable) {
2248
2315
  if (node._initDD) {
2249
2316
  this._removeDD(el); // nukes everything instead of just disable, will add some styles back next
2250
2317
  delete node._initDD;
2251
2318
  }
2252
- el.classList.add('ui-draggable-disabled', 'ui-resizable-disabled'); // add styles one might depend on #1435
2253
- return this;
2319
+ if (disable)
2320
+ el.classList.add('ui-draggable-disabled', 'ui-resizable-disabled'); // add styles one might depend on #1435
2321
+ if (!force)
2322
+ return this;
2254
2323
  }
2255
2324
  if (!node._initDD) {
2256
2325
  // variables used/cashed between the 3 start/move/end methods, in addition to node passed above
@@ -2465,7 +2534,10 @@ class GridStack {
2465
2534
  this._extraDragRow = 0; // @ts-ignore
2466
2535
  this._updateContainerHeight();
2467
2536
  const target = event.target; // @ts-ignore
2468
- this._writePosAttr(target, node);
2537
+ // Do not write sidebar item attributes back to the original sidebar el
2538
+ if (!node._sidebarOrig) {
2539
+ this._writePosAttr(target, node);
2540
+ }
2469
2541
  if (this._gsEventHandler[event.type]) {
2470
2542
  this._gsEventHandler[event.type](event, target);
2471
2543
  }
@@ -2489,8 +2561,11 @@ class GridStack {
2489
2561
  node._temporaryRemoved = true;
2490
2562
  this.engine.removeNode(node); // remove placeholder as well, otherwise it's a sign node is not in our list, which is a bigger issue
2491
2563
  node.el = node._isExternal && helper ? helper : el; // point back to real item being dragged
2564
+ const sidebarOrig = node._sidebarOrig;
2492
2565
  if (node._isExternal)
2493
2566
  this.engine.cleanupNode(node);
2567
+ // Restore sidebar item initial size info to stay consistent when dragging between multiple grids
2568
+ node._sidebarOrig = sidebarOrig;
2494
2569
  if (this.opts.removable === true) { // boolean vs a class string
2495
2570
  // item leaving us and we are supposed to remove on leave (no need to drag onto trash) mark it so
2496
2571
  GridStack._itemRemoving(el, true);
@@ -2521,6 +2596,6 @@ GridStack.resizeToContentParent = '.grid-stack-item-content';
2521
2596
  GridStack.Utils = Utils;
2522
2597
  /** scoping so users can call new GridStack.Engine(12) for example */
2523
2598
  GridStack.Engine = GridStackEngine;
2524
- GridStack.GDRev = '11.4.0';
2599
+ GridStack.GDRev = '11.5.1';
2525
2600
  export { GridStack };
2526
2601
  //# sourceMappingURL=gridstack.js.map