gridstack 9.5.0 → 10.0.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 (114) hide show
  1. package/README.md +11 -1
  2. package/angular/package.json +1 -1
  3. package/angular/projects/demo/src/app/app.component.ts +0 -2
  4. package/angular/projects/lib/package.json +1 -1
  5. package/angular/projects/lib/src/lib/base-widget.ts +1 -1
  6. package/angular/projects/lib/src/lib/gridstack-item.component.ts +1 -1
  7. package/angular/projects/lib/src/lib/gridstack.component.ts +1 -1
  8. package/angular/projects/lib/src/lib/gridstack.module.ts +1 -1
  9. package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
  10. package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
  11. package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
  12. package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
  13. package/dist/angular/fesm2015/gridstack-angular.mjs +4 -4
  14. package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
  15. package/dist/angular/fesm2020/gridstack-angular.mjs +4 -4
  16. package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
  17. package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
  18. package/dist/angular/lib/gridstack.component.d.ts +1 -1
  19. package/dist/angular/package.json +1 -1
  20. package/dist/angular/src/base-widget.ts +1 -1
  21. package/dist/angular/src/gridstack-item.component.ts +1 -1
  22. package/dist/angular/src/gridstack.component.ts +1 -1
  23. package/dist/angular/src/gridstack.module.ts +1 -1
  24. package/dist/dd-base-impl.d.ts +1 -1
  25. package/dist/dd-base-impl.js +1 -1
  26. package/dist/dd-base-impl.js.map +1 -1
  27. package/dist/dd-draggable.d.ts +1 -1
  28. package/dist/dd-draggable.js +2 -2
  29. package/dist/dd-draggable.js.map +1 -1
  30. package/dist/dd-droppable.d.ts +1 -1
  31. package/dist/dd-droppable.js +1 -1
  32. package/dist/dd-droppable.js.map +1 -1
  33. package/dist/dd-element.d.ts +1 -1
  34. package/dist/dd-element.js +1 -1
  35. package/dist/dd-element.js.map +1 -1
  36. package/dist/dd-gridstack.d.ts +1 -1
  37. package/dist/dd-gridstack.js +1 -1
  38. package/dist/dd-gridstack.js.map +1 -1
  39. package/dist/dd-manager.d.ts +1 -1
  40. package/dist/dd-manager.js +1 -1
  41. package/dist/dd-manager.js.map +1 -1
  42. package/dist/dd-resizable-handle.d.ts +1 -1
  43. package/dist/dd-resizable-handle.js +1 -1
  44. package/dist/dd-resizable-handle.js.map +1 -1
  45. package/dist/dd-resizable.d.ts +1 -1
  46. package/dist/dd-resizable.js +1 -1
  47. package/dist/dd-resizable.js.map +1 -1
  48. package/dist/dd-touch.d.ts +1 -1
  49. package/dist/dd-touch.js +1 -1
  50. package/dist/dd-touch.js.map +1 -1
  51. package/dist/es5/dd-base-impl.d.ts +1 -1
  52. package/dist/es5/dd-base-impl.js +1 -1
  53. package/dist/es5/dd-base-impl.js.map +1 -1
  54. package/dist/es5/dd-draggable.d.ts +1 -1
  55. package/dist/es5/dd-draggable.js +2 -2
  56. package/dist/es5/dd-draggable.js.map +1 -1
  57. package/dist/es5/dd-droppable.d.ts +1 -1
  58. package/dist/es5/dd-droppable.js +1 -1
  59. package/dist/es5/dd-droppable.js.map +1 -1
  60. package/dist/es5/dd-element.d.ts +1 -1
  61. package/dist/es5/dd-element.js +1 -1
  62. package/dist/es5/dd-element.js.map +1 -1
  63. package/dist/es5/dd-gridstack.d.ts +1 -1
  64. package/dist/es5/dd-gridstack.js +1 -1
  65. package/dist/es5/dd-gridstack.js.map +1 -1
  66. package/dist/es5/dd-manager.d.ts +1 -1
  67. package/dist/es5/dd-manager.js +1 -1
  68. package/dist/es5/dd-manager.js.map +1 -1
  69. package/dist/es5/dd-resizable-handle.d.ts +1 -1
  70. package/dist/es5/dd-resizable-handle.js +1 -1
  71. package/dist/es5/dd-resizable-handle.js.map +1 -1
  72. package/dist/es5/dd-resizable.d.ts +1 -1
  73. package/dist/es5/dd-resizable.js +1 -1
  74. package/dist/es5/dd-resizable.js.map +1 -1
  75. package/dist/es5/dd-touch.d.ts +1 -1
  76. package/dist/es5/dd-touch.js +1 -1
  77. package/dist/es5/dd-touch.js.map +1 -1
  78. package/dist/es5/gridstack-all.js +1 -1
  79. package/dist/es5/gridstack-all.js.LICENSE.txt +1 -1
  80. package/dist/es5/gridstack-all.js.map +1 -1
  81. package/dist/es5/gridstack-engine.d.ts +6 -6
  82. package/dist/es5/gridstack-engine.js +12 -7
  83. package/dist/es5/gridstack-engine.js.map +1 -1
  84. package/dist/es5/gridstack-poly.js +1 -1
  85. package/dist/es5/gridstack.d.ts +5 -3
  86. package/dist/es5/gridstack.js +104 -65
  87. package/dist/es5/gridstack.js.map +1 -1
  88. package/dist/es5/types.d.ts +25 -11
  89. package/dist/es5/types.js +1 -4
  90. package/dist/es5/types.js.map +1 -1
  91. package/dist/es5/utils.d.ts +1 -1
  92. package/dist/es5/utils.js +1 -1
  93. package/dist/es5/utils.js.map +1 -1
  94. package/dist/gridstack-all.js +1 -1
  95. package/dist/gridstack-all.js.LICENSE.txt +1 -1
  96. package/dist/gridstack-all.js.map +1 -1
  97. package/dist/gridstack-engine.d.ts +6 -6
  98. package/dist/gridstack-engine.js +11 -7
  99. package/dist/gridstack-engine.js.map +1 -1
  100. package/dist/gridstack.css +9 -3
  101. package/dist/gridstack.d.ts +5 -3
  102. package/dist/gridstack.js +98 -62
  103. package/dist/gridstack.js.map +1 -1
  104. package/dist/gridstack.min.css +1 -1
  105. package/dist/src/gridstack.scss +9 -3
  106. package/dist/types.d.ts +25 -11
  107. package/dist/types.js +1 -4
  108. package/dist/types.js.map +1 -1
  109. package/dist/utils.d.ts +1 -1
  110. package/dist/utils.js +1 -1
  111. package/dist/utils.js.map +1 -1
  112. package/doc/CHANGES.md +12 -0
  113. package/doc/README.md +17 -4
  114. 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.5.0
39
+ * GridStack 10.0.0
40
40
  * https://gridstackjs.com/
41
41
  *
42
42
  * Copyright (c) 2021-2022 Alain Dumesny
@@ -54,7 +54,6 @@ var types_1 = require("./types");
54
54
  var dd_gridstack_1 = require("./dd-gridstack");
55
55
  var dd_touch_1 = require("./dd-touch");
56
56
  var dd_manager_1 = require("./dd-manager");
57
- /** global instance */
58
57
  var dd = new dd_gridstack_1.DDGridStack;
59
58
  // export all dependent file as well to make it easier for users to just import the main file
60
59
  __exportStar(require("./types"), exports);
@@ -80,7 +79,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
80
79
  function GridStack(el, opts) {
81
80
  if (opts === void 0) { opts = {}; }
82
81
  var _this = this;
83
- var _a, _b;
82
+ var _a, _b, _c, _d;
84
83
  /** @internal */
85
84
  this._gsEventHandler = {};
86
85
  /** @internal extra row added when dragging at the bottom of the grid */
@@ -104,6 +103,41 @@ var GridStack = exports.GridStack = /** @class */ (function () {
104
103
  if (opts.alwaysShowResizeHandle !== undefined) {
105
104
  opts._alwaysShowResizeHandle = opts.alwaysShowResizeHandle;
106
105
  }
106
+ var bk = (_a = opts.columnOpts) === null || _a === void 0 ? void 0 : _a.breakpoints;
107
+ // LEGACY: oneColumnMode stuff changed in v10.x - check if user explicitly set something to convert over
108
+ var oldOpts = opts;
109
+ if (oldOpts.oneColumnModeDomSort) {
110
+ delete oldOpts.oneColumnModeDomSort;
111
+ console.log('Error: Gridstack oneColumnModeDomSort no longer supported. Check GridStackOptions.columnOpts instead.');
112
+ }
113
+ if (oldOpts.oneColumnSize || oldOpts.disableOneColumnMode === false) {
114
+ var oneSize = oldOpts.oneColumnSize || 768;
115
+ delete oldOpts.oneColumnSize;
116
+ delete oldOpts.disableOneColumnMode;
117
+ opts.columnOpts = opts.columnOpts || {};
118
+ bk = opts.columnOpts.breakpoints = opts.columnOpts.breakpoints || [];
119
+ var oneColumn = bk.find(function (b) { return b.c === 1; });
120
+ if (!oneColumn) {
121
+ oneColumn = { c: 1, w: oneSize };
122
+ bk.push(oneColumn, { c: 12, w: oneSize + 1 });
123
+ }
124
+ else
125
+ oneColumn.w = oneSize;
126
+ }
127
+ //...end LEGACY
128
+ // cleanup responsive opts (must have columnWidth | breakpoints) then sort breakpoints by size (so we can match during resize)
129
+ var resp = opts.columnOpts;
130
+ if (resp) {
131
+ if (!resp.columnWidth && !((_b = resp.breakpoints) === null || _b === void 0 ? void 0 : _b.length)) {
132
+ delete opts.columnOpts;
133
+ bk = undefined;
134
+ }
135
+ else {
136
+ resp.columnMax = resp.columnMax || 12;
137
+ }
138
+ }
139
+ if ((bk === null || bk === void 0 ? void 0 : bk.length) > 1)
140
+ bk.sort(function (a, b) { return (b.w || 0) - (a.w || 0); });
107
141
  // elements DOM attributes override any passed options (like CSS style) - merge the two together
108
142
  var defaults = __assign(__assign({}, utils_1.Utils.cloneDeep(types_1.gridDefaults)), { column: utils_1.Utils.toNumber(el.getAttribute('gs-column')) || types_1.gridDefaults.column, minRow: rowAttr ? rowAttr : utils_1.Utils.toNumber(el.getAttribute('gs-min-row')) || types_1.gridDefaults.minRow, maxRow: rowAttr ? rowAttr : utils_1.Utils.toNumber(el.getAttribute('gs-max-row')) || types_1.gridDefaults.maxRow, staticGrid: utils_1.Utils.toBool(el.getAttribute('gs-static')) || types_1.gridDefaults.staticGrid, draggable: {
109
143
  handle: (opts.handleClass ? '.' + opts.handleClass : (opts.handle ? opts.handle : '')) || types_1.gridDefaults.draggable.handle,
@@ -118,10 +152,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
118
152
  opts = null; // make sure we use this.opts instead
119
153
  this._initMargin(); // part of settings defaults...
120
154
  // Now check if we're loading into 1 column mode FIRST so we don't do un-necessary work (like cellHeight = width / 12 then go 1 column)
121
- if (this.opts.column !== 1 && !this.opts.disableOneColumnMode && this._widthOrContainer() <= this.opts.oneColumnSize) {
122
- this._prevColumn = this.getColumn();
123
- this.opts.column = 1;
124
- }
155
+ this.checkDynamicColumn();
125
156
  if (this.opts.rtl === 'auto') {
126
157
  this.opts.rtl = (el.style.direction === 'rtl');
127
158
  }
@@ -129,7 +160,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
129
160
  this.el.classList.add('grid-stack-rtl');
130
161
  }
131
162
  // check if we're been nested, and if so update our style and keep pointer around (used during save)
132
- var grandParent = (_a = this.el.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
163
+ var grandParent = (_c = this.el.parentElement) === null || _c === void 0 ? void 0 : _c.parentElement;
133
164
  var parentGridItem = (grandParent === null || grandParent === void 0 ? void 0 : grandParent.classList.contains(types_1.gridDefaults.itemClass)) ? grandParent.gridstackNode : undefined;
134
165
  if (parentGridItem) {
135
166
  parentGridItem.subGrid = this;
@@ -199,7 +230,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
199
230
  // dynamic grids require pausing during drag to detect over to nest vs push
200
231
  if (this.opts.subGridDynamic && !dd_manager_1.DDManager.pauseDrag)
201
232
  dd_manager_1.DDManager.pauseDrag = true;
202
- if (((_b = this.opts.draggable) === null || _b === void 0 ? void 0 : _b.pause) !== undefined)
233
+ if (((_d = this.opts.draggable) === null || _d === void 0 ? void 0 : _d.pause) !== undefined)
203
234
  dd_manager_1.DDManager.pauseDrag = this.opts.draggable.pause;
204
235
  this._setupRemoveDrop();
205
236
  this._setupAcceptWidget();
@@ -424,7 +455,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
424
455
  if (ops.column === 'auto') {
425
456
  autoColumn = true;
426
457
  ops.column = Math.max(node.w || 1, (nodeToAdd === null || nodeToAdd === void 0 ? void 0 : nodeToAdd.w) || 1);
427
- ops.disableOneColumnMode = true; // driven by parent
458
+ delete ops.columnOpts; // driven by parent
428
459
  }
429
460
  // if we're converting an existing full item, move over the content to be the first sub item in the new grid
430
461
  var content = node.el.querySelector('.grid-stack-item-content');
@@ -566,7 +597,6 @@ var GridStack = exports.GridStack = /** @class */ (function () {
566
597
  }
567
598
  if (this._autoColumn) {
568
599
  o.column = 'auto';
569
- delete o.disableOneColumnMode;
570
600
  }
571
601
  var origShow = o._alwaysShowResizeHandle;
572
602
  delete o._alwaysShowResizeHandle;
@@ -596,16 +626,17 @@ var GridStack = exports.GridStack = /** @class */ (function () {
596
626
  var _this = this;
597
627
  if (addRemove === void 0) { addRemove = GridStack.addRemoveCB || true; }
598
628
  items = utils_1.Utils.cloneDeep(items); // so we can mod
599
- // if passed list has coordinates, use them (insert from end to beginning for conflict resolution) else force widget same order
629
+ var column = this.getColumn();
630
+ // if passed list has coordinates, use them (insert from end to beginning for conflict resolution) else keep widget order
600
631
  var haveCoord = items.some(function (w) { return w.x !== undefined || w.y !== undefined; });
601
632
  if (haveCoord)
602
- items = utils_1.Utils.sort(items, -1, this._prevColumn || this.getColumn());
633
+ items = utils_1.Utils.sort(items, -1, column);
603
634
  this._insertNotAppend = haveCoord; // if we create in reverse order...
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
635
+ // if we're loading a layout into for example 1 column and items don't fit, make sure to save
605
636
  // the original wanted layout so we can scale back up correctly #1471
606
- if (this._prevColumn && this._prevColumn !== this.opts.column && items.some(function (n) { return ((n.x || 0) + n.w) > _this.opts.column; })) {
637
+ if (items.some(function (n) { return ((n.x || 0) + (n.w || 1)) > column; })) {
607
638
  this._ignoreLayoutsNodeChange = true; // skip layout update
608
- this.engine.cacheLayout(items, this._prevColumn, true);
639
+ this.engine.cacheLayout(items, 12, true); // TODO: 12 is arbitrary. use max value in layout ?
609
640
  }
610
641
  // if given a different callback, temporally set it as global option so creating will use it
611
642
  var prevCB = GridStack.addRemoveCB;
@@ -647,6 +678,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
647
678
  if (utils_1.Utils.shouldSizeToContent(item))
648
679
  w.h = item.h;
649
680
  // check if missing coord, in which case find next empty slot with new (or old if missing) sizes
681
+ _this.engine.nodeBoundFix(w); // before widthChanged is checked below...
650
682
  if (w.autoPosition || w.x === undefined || w.y === undefined) {
651
683
  w.w = w.w || item.w;
652
684
  w.h = w.h || item.h;
@@ -657,7 +689,6 @@ var GridStack = exports.GridStack = /** @class */ (function () {
657
689
  _this.engine.nodes.push(item);
658
690
  if (utils_1.Utils.samePos(item, w)) {
659
691
  _this.moveNode(item, __assign(__assign({}, w), { forceCollide: true }));
660
- utils_1.Utils.copyPos(w, item, true);
661
692
  }
662
693
  _this.update(item.el, w);
663
694
  if ((_a = w.subGridOpts) === null || _a === void 0 ? void 0 : _a.children) { // update any sub grid as well
@@ -763,11 +794,40 @@ var GridStack = exports.GridStack = /** @class */ (function () {
763
794
  GridStack.prototype.cellWidth = function () {
764
795
  return this._widthOrContainer() / this.getColumn();
765
796
  };
766
- /** return our expected width (or parent) for 1 column check */
767
- GridStack.prototype._widthOrContainer = function () {
797
+ /** return our expected width (or parent) , and optionally of window for dynamic column check */
798
+ GridStack.prototype._widthOrContainer = function (forBreakpoint) {
799
+ var _a;
800
+ if (forBreakpoint === void 0) { forBreakpoint = false; }
768
801
  // use `offsetWidth` or `clientWidth` (no scrollbar) ?
769
802
  // https://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively
770
- return (this.el.clientWidth || this.el.parentElement.clientWidth || window.innerWidth);
803
+ return forBreakpoint && ((_a = this.opts.columnOpts) === null || _a === void 0 ? void 0 : _a.breakpointForWindow) ? window.innerWidth : (this.el.clientWidth || this.el.parentElement.clientWidth || window.innerWidth);
804
+ };
805
+ /** checks for dynamic column count for our current size, returning true if changed */
806
+ GridStack.prototype.checkDynamicColumn = function () {
807
+ var _a, _b;
808
+ var resp = this.opts.columnOpts;
809
+ if (!resp || (!resp.columnWidth && !((_a = resp.breakpoints) === null || _a === void 0 ? void 0 : _a.length)))
810
+ return false;
811
+ var column = this.getColumn();
812
+ var newColumn = column;
813
+ var w = this._widthOrContainer(true);
814
+ if (resp.columnWidth) {
815
+ newColumn = Math.min(Math.round(w / resp.columnWidth) || 1, resp.columnMax);
816
+ }
817
+ else {
818
+ // find the closest breakpoint (already sorted big to small) that matches
819
+ newColumn = resp.columnMax;
820
+ var i = 0;
821
+ while (i < resp.breakpoints.length && w <= resp.breakpoints[i].w) {
822
+ newColumn = resp.breakpoints[i++].c || column;
823
+ }
824
+ }
825
+ if (newColumn !== column) {
826
+ var bk = (_b = resp.breakpoints) === null || _b === void 0 ? void 0 : _b.find(function (b) { return b.c === newColumn; });
827
+ this.column(newColumn, (bk === null || bk === void 0 ? void 0 : bk.layout) || resp.layout);
828
+ return true;
829
+ }
830
+ return false;
771
831
  };
772
832
  /**
773
833
  * re-layout grid items to reclaim any empty space. Options are:
@@ -797,31 +857,16 @@ var GridStack = exports.GridStack = /** @class */ (function () {
797
857
  if (!column || column < 1 || this.opts.column === column)
798
858
  return this;
799
859
  var oldColumn = this.getColumn();
800
- // if we go into 1 column mode due to size change (disableOneColumnMode is off and we hit min width)
801
- // then remember the original columns so we can restore.
802
- if (column === 1 && !this.opts.disableOneColumnMode) {
803
- this._prevColumn = oldColumn;
804
- }
805
- else {
806
- delete this._prevColumn;
807
- }
860
+ this.opts.column = column;
861
+ if (!this.engine)
862
+ return this; // called in constructor, noting else to do
863
+ this.engine.column = column;
808
864
  this.el.classList.remove('gs-' + oldColumn);
809
865
  this.el.classList.add('gs-' + column);
810
- this.opts.column = this.engine.column = column;
811
- // update the items now - see if the dom order nodes should be passed instead (else default to current list)
812
- var domNodes;
813
- if (column === 1 && this.opts.oneColumnModeDomSort) {
814
- domNodes = [];
815
- this.getGridItems().forEach(function (el) {
816
- if (el.gridstackNode) {
817
- domNodes.push(el.gridstackNode);
818
- }
819
- });
820
- if (!domNodes.length) {
821
- domNodes = undefined;
822
- }
823
- }
824
- this.engine.columnChanged(oldColumn, column, domNodes, layout);
866
+ // update the items now, checking if we have a custom children layout
867
+ /*const newChildren = this.opts.columnOpts?.breakpoints?.find(r => r.c === column)?.children;
868
+ if (newChildren) this.load(newChildren);
869
+ else*/ this.engine.columnChanged(oldColumn, column, undefined, layout);
825
870
  if (this._isAutoCellHeight)
826
871
  this.cellHeight();
827
872
  this.doContentResize();
@@ -834,9 +879,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
834
879
  /**
835
880
  * get the number of columns in the grid (default 12)
836
881
  */
837
- GridStack.prototype.getColumn = function () {
838
- return this.opts.column;
839
- };
882
+ GridStack.prototype.getColumn = function () { return this.opts.column; };
840
883
  /** returns an array of grid HTML elements (no placeholder) - used to iterate through our children in DOM order */
841
884
  GridStack.prototype.getGridItems = function () {
842
885
  var _this = this;
@@ -956,9 +999,9 @@ var GridStack = exports.GridStack = /** @class */ (function () {
956
999
  if (node.subGridOpts) {
957
1000
  this.makeSubGrid(el, node.subGridOpts, undefined, false); // node.subGrid will be used as option in method, no need to pass
958
1001
  }
959
- // if we're adding an item into 1 column (_prevColumn is set only when going to 1) make sure
1002
+ // if we're adding an item into 1 column make sure
960
1003
  // we don't override the larger 12 column layout that was already saved. #1985
961
- if (this._prevColumn && this.opts.column === 1) {
1004
+ if (this.opts.column === 1) {
962
1005
  this._ignoreLayoutsNodeChange = true;
963
1006
  }
964
1007
  this._triggerAddEvent();
@@ -990,8 +1033,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
990
1033
  names.forEach(function (name) { return _this.on(name, callback); });
991
1034
  return this;
992
1035
  }
1036
+ // native CustomEvent handlers - cash the generic handlers so we can easily remove
993
1037
  if (name === 'change' || name === 'added' || name === 'removed' || name === 'enable' || name === 'disable') {
994
- // native CustomEvent handlers - cash the generic handlers so we can easily remove
995
1038
  var noData = (name === 'enable' || name === 'disable');
996
1039
  if (noData) {
997
1040
  this._gsEventHandler[name] = function (event) { return callback(event); };
@@ -1008,7 +1051,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1008
1051
  this._gsEventHandler[name] = callback;
1009
1052
  }
1010
1053
  else {
1011
- console.log('GridStack.on(' + name + ') event not supported, but you can still use $(".grid-stack").on(...) while jquery-ui is still used internally.');
1054
+ console.log('GridStack.on(' + name + ') event not supported');
1012
1055
  }
1013
1056
  return this;
1014
1057
  };
@@ -1152,6 +1195,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1152
1195
  if (!n)
1153
1196
  return;
1154
1197
  var w = utils_1.Utils.cloneDeep(opt); // make a copy we can modify in case they re-use it or multiple items
1198
+ _this.engine.nodeBoundFix(w);
1155
1199
  delete w.autoPosition;
1156
1200
  delete w.id;
1157
1201
  // move/resize widget if anything changed
@@ -1193,10 +1237,10 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1193
1237
  }
1194
1238
  }
1195
1239
  utils_1.Utils.sanitizeMinMax(n);
1196
- // finally move the widget
1197
- if (m !== undefined)
1240
+ // finally move the widget and update attr
1241
+ if (m)
1198
1242
  _this.moveNode(n, m);
1199
- if (changed) { // move will only update x,y,w,h so update the rest too
1243
+ if (m || changed) {
1200
1244
  _this._writeAttr(el, n);
1201
1245
  }
1202
1246
  if (ddChanged) {
@@ -1610,15 +1654,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1610
1654
  }
1611
1655
  }
1612
1656
  else {
1613
- // else check for 1 column in/out behavior
1614
- var oneColumn = !this.opts.disableOneColumnMode && this.el.clientWidth <= this.opts.oneColumnSize ||
1615
- (this.opts.column === 1 && !this._prevColumn);
1616
- if ((this.opts.column === 1) !== oneColumn) {
1617
- // if (this.opts.animate) this.setAnimation(false); // 1 <-> 12 is too radical, turn off animation and we need it for sizeToContent
1618
- this.column(oneColumn ? 1 : this._prevColumn);
1619
- // if (this.opts.animate) setTimeout(() => this.setAnimation(true));
1620
- columnChanged = true;
1621
- }
1657
+ // else check for dynamic column
1658
+ columnChanged = this.checkDynamicColumn();
1622
1659
  }
1623
1660
  // make the cells content square again
1624
1661
  if (this._isAutoCellHeight)
@@ -1642,6 +1679,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1642
1679
  // update any gridItem height with sizeToContent, but wait for DOM $animation_speed to settle if we changed column count
1643
1680
  // TODO: is there a way to know what the final (post animation) size of the content will be so we can animate the column width and height together rather than sequentially ?
1644
1681
  setTimeout(function () {
1682
+ if (!_this.engine)
1683
+ return; // we've been deleted in between!
1645
1684
  if (n) {
1646
1685
  if (utils_1.Utils.shouldSizeToContent(n))
1647
1686
  _this.resizeToContentCheck(n.el, useAttr);
@@ -1664,9 +1703,9 @@ var GridStack = exports.GridStack = /** @class */ (function () {
1664
1703
  GridStack.prototype._updateResizeEvent = function (forceRemove) {
1665
1704
  var _this = this;
1666
1705
  if (forceRemove === void 0) { forceRemove = false; }
1667
- // only add event if we're not nested (parent will call us) and we're auto sizing cells or supporting oneColumn (i.e. doing work)
1706
+ // only add event if we're not nested (parent will call us) and we're auto sizing cells or supporting dynamic column (i.e. doing work)
1668
1707
  // or supporting new sizeToContent option.
1669
- var trackSize = !this.parentGridItem && (this._isAutoCellHeight || this.opts.sizeToContent || !this.opts.disableOneColumnMode
1708
+ var trackSize = !this.parentGridItem && (this._isAutoCellHeight || this.opts.sizeToContent || this.opts.columnOpts
1670
1709
  || this.engine.nodes.find(function (n) { return n.sizeToContent; }));
1671
1710
  if (!forceRemove && trackSize && !this.resizeObserver) {
1672
1711
  this._sizeThrottle = utils_1.Utils.throttle(function () { return _this.onResize(); }, this.opts.cellHeightThrottle);
@@ -2410,7 +2449,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
2410
2449
  GridStack.Utils = utils_1.Utils;
2411
2450
  /** scoping so users can call new GridStack.Engine(12) for example */
2412
2451
  GridStack.Engine = gridstack_engine_1.GridStackEngine;
2413
- GridStack.GDRev = '9.5.0';
2452
+ GridStack.GDRev = '10.0.0';
2414
2453
  return GridStack;
2415
2454
  }());
2416
2455
  //# sourceMappingURL=gridstack.js.map