gridstack 12.4.2 → 12.6.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 (64) hide show
  1. package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
  2. package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
  3. package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
  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 +4 -4
  7. package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
  8. package/dist/angular/fesm2020/gridstack-angular.mjs +5 -5
  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 +1 -1
  12. package/dist/angular/lib/types.d.ts +1 -1
  13. package/dist/angular/package.json +1 -1
  14. package/dist/angular/src/base-widget.ts +1 -1
  15. package/dist/angular/src/gridstack-item.component.ts +1 -1
  16. package/dist/angular/src/gridstack.component.ts +1 -1
  17. package/dist/angular/src/gridstack.module.ts +1 -1
  18. package/dist/angular/src/types.ts +1 -1
  19. package/dist/dd-base-impl.d.ts +1 -1
  20. package/dist/dd-base-impl.js +1 -1
  21. package/dist/dd-base-impl.js.map +1 -1
  22. package/dist/dd-draggable.d.ts +5 -1
  23. package/dist/dd-draggable.js +110 -15
  24. package/dist/dd-draggable.js.map +1 -1
  25. package/dist/dd-droppable.d.ts +1 -1
  26. package/dist/dd-droppable.js +7 -3
  27. package/dist/dd-droppable.js.map +1 -1
  28. package/dist/dd-element.d.ts +1 -1
  29. package/dist/dd-element.js +1 -1
  30. package/dist/dd-element.js.map +1 -1
  31. package/dist/dd-gridstack.d.ts +2 -1
  32. package/dist/dd-gridstack.js +6 -3
  33. package/dist/dd-gridstack.js.map +1 -1
  34. package/dist/dd-manager.d.ts +1 -1
  35. package/dist/dd-manager.js +1 -1
  36. package/dist/dd-manager.js.map +1 -1
  37. package/dist/dd-resizable-handle.d.ts +1 -1
  38. package/dist/dd-resizable-handle.js +1 -1
  39. package/dist/dd-resizable-handle.js.map +1 -1
  40. package/dist/dd-resizable.d.ts +2 -1
  41. package/dist/dd-resizable.js +46 -14
  42. package/dist/dd-resizable.js.map +1 -1
  43. package/dist/dd-touch.d.ts +1 -1
  44. package/dist/dd-touch.js +1 -1
  45. package/dist/dd-touch.js.map +1 -1
  46. package/dist/gridstack-all.js +1 -1
  47. package/dist/gridstack-all.js.LICENSE.txt +1 -1
  48. package/dist/gridstack-all.js.map +1 -1
  49. package/dist/gridstack-engine.d.ts +1 -1
  50. package/dist/gridstack-engine.js +1 -1
  51. package/dist/gridstack-engine.js.map +1 -1
  52. package/dist/gridstack.css +17 -6
  53. package/dist/gridstack.d.ts +1 -1
  54. package/dist/gridstack.js +29 -18
  55. package/dist/gridstack.js.map +1 -1
  56. package/dist/gridstack.min.css +1 -1
  57. package/dist/types.d.ts +12 -1
  58. package/dist/types.js +1 -1
  59. package/dist/types.js.map +1 -1
  60. package/dist/utils.d.ts +1 -1
  61. package/dist/utils.js +4 -36
  62. package/dist/utils.js.map +1 -1
  63. package/doc/API.md +428 -390
  64. package/package.json +1 -1
package/dist/gridstack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * GridStack 12.4.2
2
+ * GridStack 12.6.0
3
3
  * https://gridstackjs.com/
4
4
  *
5
5
  * Copyright (c) 2021-2025 Alain Dumesny
@@ -619,8 +619,7 @@ class GridStack {
619
619
  * @see {@link http://gridstackjs.com/demo/serialization.html} for complete example
620
620
  */
621
621
  load(items, addRemove = GridStack.addRemoveCB || true) {
622
- items = Utils.cloneDeep(items); // so we can mod
623
- const column = this.getColumn();
622
+ // items = Utils.cloneDeep(items); // TODO: let callee decide by using directly instead of copy we can modify ?
624
623
  // make sure size 1x1 (default) is present as it may need to override current sizes
625
624
  items.forEach(n => { n.w = n.w || n.minW || 1; n.h = n.h || n.minH || 1; });
626
625
  // sort items. those without coord will be appended last
@@ -632,6 +631,7 @@ class GridStack {
632
631
  items.forEach(n => { maxColumn = Math.max(maxColumn, (n.x || 0) + n.w); });
633
632
  if (maxColumn > this.engine.defaultColumn)
634
633
  this.engine.defaultColumn = maxColumn;
634
+ const column = this.getColumn();
635
635
  if (maxColumn > column) {
636
636
  // if we're loading (from empty) into a smaller column, check for special responsive layout
637
637
  if (this.engine.nodes.length === 0 && this.responseLayout) {
@@ -1345,10 +1345,13 @@ class GridStack {
1345
1345
  }
1346
1346
  // responsive column take over actual count (keep what we have now)
1347
1347
  if (o.columnOpts) {
1348
+ const hadColumnOpts = !!this.opts.columnOpts;
1348
1349
  this.opts.columnOpts = o.columnOpts;
1350
+ if (hadColumnOpts !== !!this.opts.columnOpts)
1351
+ this._updateResizeEvent();
1349
1352
  this.checkDynamicColumn();
1350
1353
  }
1351
- else if (o.columnOpts === null && this.opts.columnOpts) {
1354
+ else if (o.columnOpts === null && this.opts.columnOpts) { // delete update cmd
1352
1355
  delete this.opts.columnOpts;
1353
1356
  this._updateResizeEvent();
1354
1357
  }
@@ -1374,7 +1377,7 @@ class GridStack {
1374
1377
  this._updateContainerHeight();
1375
1378
  }
1376
1379
  if (o.maxRow !== undefined)
1377
- opts.maxRow = o.maxRow;
1380
+ opts.maxRow = this.engine.maxRow = o.maxRow;
1378
1381
  }
1379
1382
  if (o.lazyLoad !== undefined)
1380
1383
  opts.lazyLoad = o.lazyLoad;
@@ -1785,9 +1788,10 @@ class GridStack {
1785
1788
  _writePosAttr(el, n) {
1786
1789
  // Avoid overwriting the inline style of the element during drag/resize, but always update the placeholder
1787
1790
  if ((!n._moving && !n._resizing) || this._placeholder === el) {
1791
+ const xProp = this.opts.rtl ? 'right' : 'left';
1788
1792
  // width/height:1 x/y:0 is set by default in the main CSS, so no need to set inlined vars
1789
1793
  el.style.top = n.y ? (n.y === 1 ? `var(--gs-cell-height)` : `calc(${n.y} * var(--gs-cell-height))`) : null;
1790
- el.style.left = n.x ? (n.x === 1 ? `var(--gs-column-width)` : `calc(${n.x} * var(--gs-column-width))`) : null;
1794
+ el.style[xProp] = n.x ? (n.x === 1 ? `var(--gs-column-width)` : `calc(${n.x} * var(--gs-column-width))`) : null;
1791
1795
  el.style.width = n.w > 1 ? `calc(${n.w} * var(--gs-column-width))` : null;
1792
1796
  el.style.height = n.h > 1 ? `calc(${n.h} * var(--gs-cell-height))` : null;
1793
1797
  }
@@ -2574,10 +2578,10 @@ class GridStack {
2574
2578
  this._removeDD(el); // nukes everything instead of just disable, will add some styles back next
2575
2579
  delete node._initDD;
2576
2580
  }
2577
- if (disable)
2581
+ if (disable) {
2578
2582
  el.classList.add('ui-draggable-disabled', 'ui-resizable-disabled'); // add styles one might depend on #1435
2579
- if (!force)
2580
2583
  return this;
2584
+ }
2581
2585
  }
2582
2586
  if (!node._initDD) {
2583
2587
  // variables used/cashed between the 3 start/move/end methods, in addition to node passed above
@@ -2644,11 +2648,13 @@ class GridStack {
2644
2648
  dd.draggable(el, {
2645
2649
  start: onStartMoving,
2646
2650
  stop: onEndMoving,
2647
- drag: dragOrResize
2651
+ drag: dragOrResize,
2652
+ rtl: this.opts.rtl,
2648
2653
  }).resizable(el, {
2649
2654
  start: onStartMoving,
2650
2655
  stop: onEndMoving,
2651
- resize: dragOrResize
2656
+ resize: dragOrResize,
2657
+ rtl: this.opts.rtl,
2652
2658
  });
2653
2659
  node._initDD = true; // we've set DD support now
2654
2660
  }
@@ -2724,10 +2730,9 @@ class GridStack {
2724
2730
  if (event.type === 'drag') {
2725
2731
  if (node._temporaryRemoved)
2726
2732
  return; // handled by dropover
2727
- const distance = ui.position.top - node._prevYPix;
2728
2733
  node._prevYPix = ui.position.top;
2729
2734
  if (this.opts.draggable.scroll !== false) {
2730
- Utils.updateScrollPosition(el, ui.position, distance);
2735
+ DDManager.dragElement?.updateScrollPosition(this.el);
2731
2736
  }
2732
2737
  // get new position taking into account the margin in the direction we are moving! (need to pass mid point by margin)
2733
2738
  const left = ui.position.left + (ui.position.left > node._lastUiPosition.left ? -mRight : mLeft);
@@ -2765,11 +2770,17 @@ class GridStack {
2765
2770
  return;
2766
2771
  if (node._lastTried && node._lastTried.w === p.w && node._lastTried.h === p.h)
2767
2772
  return; // skip one we tried (but failed)
2768
- // if we size on left/top side this might move us, so get possible new position as well
2769
- const left = ui.position.left + mLeft;
2770
- const top = ui.position.top + mTop;
2771
- p.x = Math.round(left / cellWidth);
2772
- p.y = Math.round(top / cellHeight);
2773
+ // only recalculate position for handles that move the top-left corner (N/W).
2774
+ // for SE/S/E handles the top-left is anchored — recalculating from pixels causes
2775
+ // rounding drift on fine grids where cellWidth/cellHeight are only a few pixels. #385 #1356
2776
+ if (event.hasMovedX) {
2777
+ const left = ui.position.left + mLeft;
2778
+ p.x = Math.round(left / cellWidth);
2779
+ }
2780
+ if (event.hasMovedY) {
2781
+ const top = ui.position.top + mTop;
2782
+ p.y = Math.round(top / cellHeight);
2783
+ }
2773
2784
  resizing = true;
2774
2785
  }
2775
2786
  node._event = event;
@@ -2858,6 +2869,6 @@ GridStack.Utils = Utils;
2858
2869
  /** scoping so users can call new GridStack.Engine(12) for example */
2859
2870
  GridStack.Engine = GridStackEngine;
2860
2871
  /** @internal current version compiled in code */
2861
- GridStack.GDRev = '12.4.2';
2872
+ GridStack.GDRev = '12.6.0';
2862
2873
  export { GridStack };
2863
2874
  //# sourceMappingURL=gridstack.js.map