gridstack 12.0.0 → 12.1.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/README.md +5 -3
  2. package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
  3. package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
  4. package/dist/angular/esm2020/lib/gridstack.component.mjs +18 -4
  5. package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
  6. package/dist/angular/esm2020/lib/types.mjs +2 -2
  7. package/dist/angular/fesm2015/gridstack-angular.mjs +22 -6
  8. package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
  9. package/dist/angular/fesm2020/gridstack-angular.mjs +21 -7
  10. package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
  11. package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
  12. package/dist/angular/lib/gridstack.component.d.ts +1 -1
  13. package/dist/angular/lib/types.d.ts +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 +15 -3
  17. package/dist/angular/src/gridstack.module.ts +1 -1
  18. package/dist/dd-base-impl.d.ts +1 -1
  19. package/dist/dd-base-impl.js +1 -1
  20. package/dist/dd-base-impl.js.map +1 -1
  21. package/dist/dd-draggable.d.ts +1 -1
  22. package/dist/dd-draggable.js +1 -1
  23. package/dist/dd-draggable.js.map +1 -1
  24. package/dist/dd-droppable.d.ts +1 -1
  25. package/dist/dd-droppable.js +1 -1
  26. package/dist/dd-droppable.js.map +1 -1
  27. package/dist/dd-element.d.ts +1 -1
  28. package/dist/dd-element.js +1 -1
  29. package/dist/dd-element.js.map +1 -1
  30. package/dist/dd-gridstack.d.ts +1 -1
  31. package/dist/dd-gridstack.js +1 -1
  32. package/dist/dd-gridstack.js.map +1 -1
  33. package/dist/dd-manager.d.ts +1 -1
  34. package/dist/dd-manager.js +1 -1
  35. package/dist/dd-manager.js.map +1 -1
  36. package/dist/dd-resizable-handle.d.ts +1 -1
  37. package/dist/dd-resizable-handle.js +1 -1
  38. package/dist/dd-resizable-handle.js.map +1 -1
  39. package/dist/dd-resizable.d.ts +1 -1
  40. package/dist/dd-resizable.js +1 -1
  41. package/dist/dd-resizable.js.map +1 -1
  42. package/dist/dd-touch.d.ts +1 -1
  43. package/dist/dd-touch.js +1 -1
  44. package/dist/dd-touch.js.map +1 -1
  45. package/dist/gridstack-all.js +1 -1
  46. package/dist/gridstack-all.js.LICENSE.txt +1 -1
  47. package/dist/gridstack-all.js.map +1 -1
  48. package/dist/gridstack-engine.d.ts +1 -1
  49. package/dist/gridstack-engine.js +1 -1
  50. package/dist/gridstack-engine.js.map +1 -1
  51. package/dist/gridstack.css +1 -1
  52. package/dist/gridstack.d.ts +3 -1
  53. package/dist/gridstack.js +58 -56
  54. package/dist/gridstack.js.map +1 -1
  55. package/dist/src/gridstack.scss +1 -1
  56. package/dist/types.d.ts +1 -1
  57. package/dist/types.js +1 -1
  58. package/dist/types.js.map +1 -1
  59. package/dist/utils.d.ts +1 -1
  60. package/dist/utils.js +1 -1
  61. package/dist/utils.js.map +1 -1
  62. package/doc/CHANGES.md +14 -0
  63. package/package.json +2 -4
  64. package/dist/es5/dd-base-impl.d.ts +0 -20
  65. package/dist/es5/dd-base-impl.js +0 -41
  66. package/dist/es5/dd-base-impl.js.map +0 -1
  67. package/dist/es5/dd-draggable.d.ts +0 -20
  68. package/dist/es5/dd-draggable.js +0 -408
  69. package/dist/es5/dd-draggable.js.map +0 -1
  70. package/dist/es5/dd-droppable.d.ts +0 -26
  71. package/dist/es5/dd-droppable.js +0 -185
  72. package/dist/es5/dd-droppable.js.map +0 -1
  73. package/dist/es5/dd-element.d.ts +0 -27
  74. package/dist/es5/dd-element.js +0 -96
  75. package/dist/es5/dd-element.js.map +0 -1
  76. package/dist/es5/dd-gridstack.d.ts +0 -34
  77. package/dist/es5/dd-gridstack.js +0 -154
  78. package/dist/es5/dd-gridstack.js.map +0 -1
  79. package/dist/es5/dd-manager.d.ts +0 -22
  80. package/dist/es5/dd-manager.js +0 -17
  81. package/dist/es5/dd-manager.js.map +0 -1
  82. package/dist/es5/dd-resizable-handle.d.ts +0 -18
  83. package/dist/es5/dd-resizable-handle.js +0 -117
  84. package/dist/es5/dd-resizable-handle.js.map +0 -1
  85. package/dist/es5/dd-resizable.d.ts +0 -30
  86. package/dist/es5/dd-resizable.js +0 -331
  87. package/dist/es5/dd-resizable.js.map +0 -1
  88. package/dist/es5/dd-touch.d.ts +0 -33
  89. package/dist/es5/dd-touch.js +0 -157
  90. package/dist/es5/dd-touch.js.map +0 -1
  91. package/dist/es5/gridstack-all.js +0 -3
  92. package/dist/es5/gridstack-all.js.LICENSE.txt +0 -7
  93. package/dist/es5/gridstack-all.js.map +0 -1
  94. package/dist/es5/gridstack-engine.d.ts +0 -107
  95. package/dist/es5/gridstack-engine.js +0 -1070
  96. package/dist/es5/gridstack-engine.js.map +0 -1
  97. package/dist/es5/gridstack-poly.js +0 -356
  98. package/dist/es5/gridstack.d.ts +0 -452
  99. package/dist/es5/gridstack.js +0 -2644
  100. package/dist/es5/gridstack.js.map +0 -1
  101. package/dist/es5/types.d.ts +0 -326
  102. package/dist/es5/types.js +0 -38
  103. package/dist/es5/types.js.map +0 -1
  104. package/dist/es5/utils.d.ts +0 -104
  105. package/dist/es5/utils.js +0 -633
  106. package/dist/es5/utils.js.map +0 -1
package/dist/gridstack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * GridStack 12.0.0
2
+ * GridStack 12.1.1
3
3
  * https://gridstackjs.com/
4
4
  *
5
5
  * Copyright (c) 2021-2024 Alain Dumesny
@@ -178,41 +178,19 @@ class GridStack {
178
178
  if (opts.alwaysShowResizeHandle !== undefined) {
179
179
  opts._alwaysShowResizeHandle = opts.alwaysShowResizeHandle;
180
180
  }
181
- let bk = opts.columnOpts?.breakpoints;
182
- // LEGACY: oneColumnMode stuff changed in v10.x - check if user explicitly set something to convert over
183
- const oldOpts = opts;
184
- if (oldOpts.oneColumnModeDomSort) {
185
- delete oldOpts.oneColumnModeDomSort;
186
- console.log('warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.');
187
- }
188
- if (oldOpts.oneColumnSize || oldOpts.disableOneColumnMode === false) {
189
- const oneSize = oldOpts.oneColumnSize || 768;
190
- delete oldOpts.oneColumnSize;
191
- delete oldOpts.disableOneColumnMode;
192
- opts.columnOpts = opts.columnOpts || {};
193
- bk = opts.columnOpts.breakpoints = opts.columnOpts.breakpoints || [];
194
- let oneColumn = bk.find(b => b.c === 1);
195
- if (!oneColumn) {
196
- oneColumn = { c: 1, w: oneSize };
197
- bk.push(oneColumn, { c: 12, w: oneSize + 1 });
198
- }
199
- else
200
- oneColumn.w = oneSize;
201
- }
202
- //...end LEGACY
203
181
  // cleanup responsive opts (must have columnWidth | breakpoints) then sort breakpoints by size (so we can match during resize)
204
182
  const resp = opts.columnOpts;
205
183
  if (resp) {
206
- if (!resp.columnWidth && !resp.breakpoints?.length) {
184
+ const bk = resp.breakpoints;
185
+ if (!resp.columnWidth && !bk?.length) {
207
186
  delete opts.columnOpts;
208
- bk = undefined;
209
187
  }
210
188
  else {
211
189
  resp.columnMax = resp.columnMax || 12;
190
+ if (bk?.length > 1)
191
+ bk.sort((a, b) => (b.w || 0) - (a.w || 0));
212
192
  }
213
193
  }
214
- if (bk?.length > 1)
215
- bk.sort((a, b) => (b.w || 0) - (a.w || 0));
216
194
  // elements DOM attributes override any passed options (like CSS style) - merge the two together
217
195
  const defaults = {
218
196
  ...Utils.cloneDeep(gridDefaults),
@@ -947,7 +925,7 @@ class GridStack {
947
925
  }
948
926
  /** returns the current number of rows, which will be at least `minRow` if set */
949
927
  getRow() {
950
- return Math.max(this.engine.getRow(), this.opts.minRow);
928
+ return Math.max(this.engine.getRow(), this.opts.minRow || 0);
951
929
  }
952
930
  /**
953
931
  * Checks if specified area is empty.
@@ -1127,6 +1105,7 @@ class GridStack {
1127
1105
  else {
1128
1106
  this.el.classList.remove('grid-stack-animate');
1129
1107
  }
1108
+ this.opts.animate = doAnimate;
1130
1109
  return this;
1131
1110
  }
1132
1111
  /** @internal */
@@ -1161,23 +1140,33 @@ class GridStack {
1161
1140
  */
1162
1141
  updateOptions(o) {
1163
1142
  const opts = this.opts;
1164
- if (o.acceptWidgets !== undefined)
1143
+ if (o === opts)
1144
+ return this; // nothing to do
1145
+ if (o.acceptWidgets !== undefined) {
1146
+ opts.acceptWidgets = o.acceptWidgets;
1165
1147
  this._setupAcceptWidget();
1148
+ }
1166
1149
  if (o.animate !== undefined)
1167
- this.setAnimation();
1168
- if (o.cellHeight) {
1150
+ this.setAnimation(o.animate);
1151
+ if (o.cellHeight)
1169
1152
  this.cellHeight(o.cellHeight);
1170
- delete o.cellHeight;
1171
- }
1172
- if (o.class && o.class !== opts.class) {
1153
+ if (o.class !== undefined && o.class !== opts.class) {
1173
1154
  if (opts.class)
1174
1155
  this.el.classList.remove(opts.class);
1175
- this.el.classList.add(o.class);
1156
+ if (o.class)
1157
+ this.el.classList.add(o.class);
1176
1158
  }
1177
- if (typeof (o.column) === 'number' && !o.columnOpts) {
1159
+ // responsive column take over actual count (keep what we have now)
1160
+ if (o.columnOpts) {
1161
+ this.opts.columnOpts = o.columnOpts;
1162
+ this.checkDynamicColumn();
1163
+ }
1164
+ else if (o.columnOpts === null && this.opts.columnOpts) {
1165
+ delete this.opts.columnOpts;
1166
+ this._updateResizeEvent();
1167
+ }
1168
+ else if (typeof (o.column) === 'number')
1178
1169
  this.column(o.column);
1179
- delete o.column;
1180
- } // responsive column take over actual count
1181
1170
  if (o.margin !== undefined)
1182
1171
  this.margin(o.margin);
1183
1172
  if (o.staticGrid !== undefined)
@@ -1189,16 +1178,18 @@ class GridStack {
1189
1178
  if (o.float !== undefined)
1190
1179
  this.float(o.float);
1191
1180
  if (o.row !== undefined) {
1192
- opts.minRow = opts.maxRow = o.row;
1181
+ opts.minRow = opts.maxRow = opts.row = o.row;
1193
1182
  }
1194
- if (o.children?.length) {
1195
- this.load(o.children);
1196
- delete o.children;
1183
+ else {
1184
+ if (o.minRow !== undefined)
1185
+ opts.minRow = o.minRow;
1186
+ if (o.maxRow !== undefined)
1187
+ opts.maxRow = o.maxRow;
1197
1188
  }
1189
+ if (o.children?.length)
1190
+ this.load(o.children);
1198
1191
  // TBD if we have a real need for these (more complex code)
1199
1192
  // alwaysShowResizeHandle, draggable, handle, handleClass, itemClass, layout, placeholderClass, placeholderText, resizable, removable, row,...
1200
- // rest are just copied over...
1201
- this.opts = { ...this.opts, ...o };
1202
1193
  return this;
1203
1194
  }
1204
1195
  /**
@@ -1322,7 +1313,7 @@ class GridStack {
1322
1313
  // sub-grid - use their actual row count * their cell height, BUT append any content outside of the grid (eg: above text)
1323
1314
  wantedH = n.subGrid.getRow() * n.subGrid.getCellHeight(true);
1324
1315
  const subRec = n.subGrid.el.getBoundingClientRect();
1325
- const parentRec = n.subGrid.el.parentElement.getBoundingClientRect();
1316
+ const parentRec = el.getBoundingClientRect();
1326
1317
  wantedH += subRec.top - parentRec.top;
1327
1318
  }
1328
1319
  else if (n.subGridOpts?.children?.length) {
@@ -1477,7 +1468,12 @@ class GridStack {
1477
1468
  /** @internal */
1478
1469
  _triggerEvent(type, data) {
1479
1470
  const event = data ? new CustomEvent(type, { bubbles: false, detail: data }) : new Event(type);
1480
- this.el.dispatchEvent(event);
1471
+ // check if we're nested, and if so call the outermost grid to trigger the event
1472
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
1473
+ let grid = this;
1474
+ while (grid.parentGridNode)
1475
+ grid = grid.parentGridNode.grid;
1476
+ grid.el.dispatchEvent(event);
1481
1477
  return this;
1482
1478
  }
1483
1479
  /** @internal */
@@ -1691,7 +1687,9 @@ class GridStack {
1691
1687
  if (Utils.shouldSizeToContent(n))
1692
1688
  this.resizeToContentCBCheck(n.el);
1693
1689
  });
1690
+ this._ignoreLayoutsNodeChange = true; // loop through each node will set/reset around each move, so set it here again
1694
1691
  this.batchUpdate(false);
1692
+ this._ignoreLayoutsNodeChange = false;
1695
1693
  }
1696
1694
  // call this regardless of shouldSizeToContent because widget might need to stretch to take available space after a resize
1697
1695
  if (this._gsEventHandler['resizecontent'])
@@ -2253,9 +2251,7 @@ class GridStack {
2253
2251
  /** called when item starts moving/resizing */
2254
2252
  const onStartMoving = (event, ui) => {
2255
2253
  // trigger any 'dragstart' / 'resizestart' manually
2256
- if (this._gsEventHandler[event.type]) {
2257
- this._gsEventHandler[event.type](event, event.target);
2258
- }
2254
+ this.triggerEvent(event, event.target);
2259
2255
  cellWidth = this.cellWidth();
2260
2256
  cellHeight = this.getCellHeight(true); // force pixels for calculations
2261
2257
  this._onStartMoving(el, event, ui, node, cellWidth, cellHeight);
@@ -2298,9 +2294,7 @@ class GridStack {
2298
2294
  // move to new placeholder location
2299
2295
  this._writePosAttr(target, node);
2300
2296
  }
2301
- if (this._gsEventHandler[event.type]) {
2302
- this._gsEventHandler[event.type](event, target);
2303
- }
2297
+ this.triggerEvent(event, target);
2304
2298
  }
2305
2299
  // @ts-ignore
2306
2300
  this._extraDragRow = 0; // @ts-ignore
@@ -2465,9 +2459,17 @@ class GridStack {
2465
2459
  if (!node._sidebarOrig) {
2466
2460
  this._writePosAttr(target, node);
2467
2461
  }
2468
- if (this._gsEventHandler[event.type]) {
2469
- this._gsEventHandler[event.type](event, target);
2470
- }
2462
+ this.triggerEvent(event, target);
2463
+ }
2464
+ }
2465
+ /** call given event callback on our main top-most grid (if we're nested) */
2466
+ triggerEvent(event, target) {
2467
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
2468
+ let grid = this;
2469
+ while (grid.parentGridNode)
2470
+ grid = grid.parentGridNode.grid;
2471
+ if (grid._gsEventHandler[event.type]) {
2472
+ grid._gsEventHandler[event.type](event, target);
2471
2473
  }
2472
2474
  }
2473
2475
  /** @internal called when item leaving our area by either cursor dropout event
@@ -2523,6 +2525,6 @@ GridStack.resizeToContentParent = '.grid-stack-item-content';
2523
2525
  GridStack.Utils = Utils;
2524
2526
  /** scoping so users can call new GridStack.Engine(12) for example */
2525
2527
  GridStack.Engine = GridStackEngine;
2526
- GridStack.GDRev = '12.0.0';
2528
+ GridStack.GDRev = '12.1.1';
2527
2529
  export { GridStack };
2528
2530
  //# sourceMappingURL=gridstack.js.map