gridstack 8.3.0 → 9.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.
- package/README.md +9 -2
- package/angular/projects/demo/src/app/app.component.html +32 -0
- package/angular/projects/demo/src/app/app.component.ts +20 -5
- package/angular/projects/demo/src/styles.css +37 -0
- package/angular/projects/lib/package.json +1 -1
- package/angular/projects/lib/src/lib/base-widget.ts +1 -1
- package/angular/projects/lib/src/lib/gridstack-item.component.ts +1 -1
- package/angular/projects/lib/src/lib/gridstack.component.ts +1 -1
- package/angular/projects/lib/src/lib/gridstack.module.ts +1 -1
- package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
- package/dist/angular/fesm2015/gridstack-angular.mjs +4 -4
- package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
- package/dist/angular/fesm2020/gridstack-angular.mjs +4 -4
- package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
- package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
- package/dist/angular/lib/gridstack.component.d.ts +1 -1
- package/dist/angular/package.json +1 -1
- package/dist/angular/src/base-widget.ts +1 -1
- package/dist/angular/src/gridstack-item.component.ts +1 -1
- package/dist/angular/src/gridstack.component.ts +1 -1
- package/dist/angular/src/gridstack.module.ts +1 -1
- package/dist/dd-base-impl.d.ts +1 -1
- package/dist/dd-base-impl.js +1 -1
- package/dist/dd-base-impl.js.map +1 -1
- package/dist/dd-draggable.d.ts +1 -1
- package/dist/dd-draggable.js +1 -1
- package/dist/dd-draggable.js.map +1 -1
- package/dist/dd-droppable.d.ts +1 -1
- package/dist/dd-droppable.js +2 -2
- package/dist/dd-droppable.js.map +1 -1
- package/dist/dd-element.d.ts +1 -1
- package/dist/dd-element.js +1 -1
- package/dist/dd-element.js.map +1 -1
- package/dist/dd-gridstack.d.ts +1 -1
- package/dist/dd-gridstack.js +1 -1
- package/dist/dd-gridstack.js.map +1 -1
- package/dist/dd-manager.d.ts +1 -1
- package/dist/dd-manager.js +1 -1
- package/dist/dd-manager.js.map +1 -1
- package/dist/dd-resizable-handle.d.ts +1 -1
- package/dist/dd-resizable-handle.js +1 -1
- package/dist/dd-resizable-handle.js.map +1 -1
- package/dist/dd-resizable.d.ts +1 -1
- package/dist/dd-resizable.js +1 -1
- package/dist/dd-resizable.js.map +1 -1
- package/dist/dd-touch.d.ts +1 -1
- package/dist/dd-touch.js +1 -1
- package/dist/dd-touch.js.map +1 -1
- package/dist/es5/dd-base-impl.d.ts +1 -1
- package/dist/es5/dd-base-impl.js +1 -1
- package/dist/es5/dd-base-impl.js.map +1 -1
- package/dist/es5/dd-draggable.d.ts +1 -1
- package/dist/es5/dd-draggable.js +1 -1
- package/dist/es5/dd-draggable.js.map +1 -1
- package/dist/es5/dd-droppable.d.ts +1 -1
- package/dist/es5/dd-droppable.js +2 -2
- package/dist/es5/dd-droppable.js.map +1 -1
- package/dist/es5/dd-element.d.ts +1 -1
- package/dist/es5/dd-element.js +1 -1
- package/dist/es5/dd-element.js.map +1 -1
- package/dist/es5/dd-gridstack.d.ts +1 -1
- package/dist/es5/dd-gridstack.js +1 -1
- package/dist/es5/dd-gridstack.js.map +1 -1
- package/dist/es5/dd-manager.d.ts +1 -1
- package/dist/es5/dd-manager.js +1 -1
- package/dist/es5/dd-manager.js.map +1 -1
- package/dist/es5/dd-resizable-handle.d.ts +1 -1
- package/dist/es5/dd-resizable-handle.js +1 -1
- package/dist/es5/dd-resizable-handle.js.map +1 -1
- package/dist/es5/dd-resizable.d.ts +1 -1
- package/dist/es5/dd-resizable.js +1 -1
- package/dist/es5/dd-resizable.js.map +1 -1
- package/dist/es5/dd-touch.d.ts +1 -1
- package/dist/es5/dd-touch.js +1 -1
- package/dist/es5/dd-touch.js.map +1 -1
- package/dist/es5/gridstack-all.js +1 -1
- package/dist/es5/gridstack-all.js.LICENSE.txt +1 -1
- package/dist/es5/gridstack-all.js.map +1 -1
- package/dist/es5/gridstack-engine.d.ts +1 -1
- package/dist/es5/gridstack-engine.js +23 -15
- package/dist/es5/gridstack-engine.js.map +1 -1
- package/dist/es5/gridstack-poly.js +1 -1
- package/dist/es5/gridstack.d.ts +21 -8
- package/dist/es5/gridstack.js +167 -80
- package/dist/es5/gridstack.js.map +1 -1
- package/dist/es5/types.d.ts +10 -2
- package/dist/es5/types.js +3 -2
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/utils.d.ts +3 -1
- package/dist/es5/utils.js +7 -3
- package/dist/es5/utils.js.map +1 -1
- package/dist/gridstack-all.js +1 -1
- package/dist/gridstack-all.js.LICENSE.txt +1 -1
- package/dist/gridstack-all.js.map +1 -1
- package/dist/gridstack-engine.d.ts +1 -1
- package/dist/gridstack-engine.js +21 -15
- package/dist/gridstack-engine.js.map +1 -1
- package/dist/gridstack.css +4 -1
- package/dist/gridstack.d.ts +21 -8
- package/dist/gridstack.js +157 -77
- package/dist/gridstack.js.map +1 -1
- package/dist/gridstack.min.css +1 -1
- package/dist/src/gridstack.scss +4 -1
- package/dist/types.d.ts +10 -2
- package/dist/types.js +3 -2
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.js +7 -3
- package/dist/utils.js.map +1 -1
- package/doc/CHANGES.md +12 -0
- package/doc/README.md +3 -1
- package/package.json +1 -1
- package/angular/projects/demo/src/environments/environment.prod.ts +0 -3
package/dist/es5/gridstack.js
CHANGED
|
@@ -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
|
|
39
|
+
* GridStack 9.0.0
|
|
40
40
|
* https://gridstackjs.com/
|
|
41
41
|
*
|
|
42
42
|
* Copyright (c) 2021-2022 Alain Dumesny
|
|
@@ -108,7 +108,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
108
108
|
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
109
|
handle: (opts.handleClass ? '.' + opts.handleClass : (opts.handle ? opts.handle : '')) || types_1.gridDefaults.draggable.handle,
|
|
110
110
|
}, removableOptions: {
|
|
111
|
-
accept: opts.itemClass
|
|
111
|
+
accept: opts.itemClass || types_1.gridDefaults.removableOptions.accept,
|
|
112
|
+
decline: types_1.gridDefaults.removableOptions.decline
|
|
112
113
|
} });
|
|
113
114
|
if (el.getAttribute('gs-animate')) { // default to true, but if set to false use that instead
|
|
114
115
|
defaults.animate = utils_1.Utils.toBool(el.getAttribute('gs-animate'));
|
|
@@ -201,7 +202,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
201
202
|
dd_manager_1.DDManager.pauseDrag = this.opts.draggable.pause;
|
|
202
203
|
this._setupRemoveDrop();
|
|
203
204
|
this._setupAcceptWidget();
|
|
204
|
-
this.
|
|
205
|
+
this._updateResizeEvent();
|
|
205
206
|
}
|
|
206
207
|
/**
|
|
207
208
|
* initializing the HTML element, or selector string, into a grid will return the grid. Calling it again will
|
|
@@ -593,11 +594,13 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
593
594
|
GridStack.prototype.load = function (layout, addRemove) {
|
|
594
595
|
var _this = this;
|
|
595
596
|
if (addRemove === void 0) { addRemove = GridStack.addRemoveCB || true; }
|
|
596
|
-
|
|
597
|
-
|
|
597
|
+
// if passed list has coordinates, use them (insert from end to beginning for conflict resolution) else force widget same order
|
|
598
|
+
var haveCoord = layout.some(function (w) { return w.x !== undefined || w.y !== undefined; });
|
|
599
|
+
var items = haveCoord ? utils_1.Utils.sort(layout, -1, this._prevColumn || this.getColumn()) : layout;
|
|
600
|
+
this._insertNotAppend = haveCoord; // if we create in reverse order...
|
|
598
601
|
// 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
|
|
599
602
|
// the original wanted layout so we can scale back up correctly #1471
|
|
600
|
-
if (this._prevColumn && this._prevColumn !== this.opts.column && items.some(function (n) { return (n.x + n.w) > _this.opts.column; })) {
|
|
603
|
+
if (this._prevColumn && this._prevColumn !== this.opts.column && items.some(function (n) { return ((n.x || 0) + n.w) > _this.opts.column; })) {
|
|
601
604
|
this._ignoreLayoutsNodeChange = true; // skip layout update
|
|
602
605
|
this.engine.cacheLayout(items, this._prevColumn, true);
|
|
603
606
|
}
|
|
@@ -609,8 +612,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
609
612
|
this.batchUpdate();
|
|
610
613
|
// see if any items are missing from new layout and need to be removed first
|
|
611
614
|
if (addRemove) {
|
|
612
|
-
var
|
|
613
|
-
|
|
615
|
+
var copyNodes_1 = __spreadArray([], this.engine.nodes, true); // don't loop through array you modify
|
|
616
|
+
copyNodes_1.forEach(function (n) {
|
|
614
617
|
var item = items.find(function (w) { return n.id === w.id; });
|
|
615
618
|
if (!item) {
|
|
616
619
|
if (GridStack.addRemoveCB)
|
|
@@ -620,11 +623,20 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
620
623
|
}
|
|
621
624
|
});
|
|
622
625
|
}
|
|
623
|
-
// now add/update the widgets
|
|
626
|
+
// now add/update the widgets - starting with an empty list to reduce collision and add no-coord ones at next available spot
|
|
627
|
+
var copyNodes = this.engine.nodes;
|
|
628
|
+
this.engine.nodes = [];
|
|
624
629
|
items.forEach(function (w) {
|
|
625
630
|
var _a;
|
|
626
|
-
var item = (w.id !== undefined) ?
|
|
631
|
+
var item = (w.id !== undefined) ? copyNodes.find(function (n) { return n.id === w.id; }) : undefined;
|
|
627
632
|
if (item) {
|
|
633
|
+
// check if missing coord, in which case find next empty slot with new (or old if missing) sizes
|
|
634
|
+
if (w.autoPosition || w.x === undefined || w.y === undefined) {
|
|
635
|
+
w.w = w.w || item.w;
|
|
636
|
+
w.h = w.h || item.h;
|
|
637
|
+
_this.engine.findEmptyPosition(w);
|
|
638
|
+
}
|
|
639
|
+
_this.engine.nodes.push(item); // now back to current list...
|
|
628
640
|
_this.update(item.el, w);
|
|
629
641
|
if ((_a = w.subGridOpts) === null || _a === void 0 ? void 0 : _a.children) { // update any sub grid as well
|
|
630
642
|
var sub = item.el.querySelector('.grid-stack');
|
|
@@ -654,6 +666,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
654
666
|
if (flag === void 0) { flag = true; }
|
|
655
667
|
this.engine.batchUpdate(flag);
|
|
656
668
|
if (!flag) {
|
|
669
|
+
this._updateContainerHeight();
|
|
657
670
|
this._triggerRemoveEvent();
|
|
658
671
|
this._triggerAddEvent();
|
|
659
672
|
this._triggerChangeEvent();
|
|
@@ -699,7 +712,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
699
712
|
if (update && val !== undefined) {
|
|
700
713
|
if (this._isAutoCellHeight !== (val === 'auto')) {
|
|
701
714
|
this._isAutoCellHeight = (val === 'auto');
|
|
702
|
-
this.
|
|
715
|
+
this._updateResizeEvent();
|
|
703
716
|
}
|
|
704
717
|
}
|
|
705
718
|
if (val === 'initial' || val === 'auto') {
|
|
@@ -757,7 +770,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
757
770
|
*/
|
|
758
771
|
GridStack.prototype.column = function (column, layout) {
|
|
759
772
|
if (layout === void 0) { layout = 'moveScale'; }
|
|
760
|
-
if (column < 1 || this.opts.column === column)
|
|
773
|
+
if (!column || column < 1 || this.opts.column === column)
|
|
761
774
|
return this;
|
|
762
775
|
var oldColumn = this.getColumn();
|
|
763
776
|
// if we go into 1 column mode (which happens if we're sized less than minW unless disableOneColumnMode is on)
|
|
@@ -787,6 +800,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
787
800
|
this.engine.columnChanged(oldColumn, column, domNodes, layout);
|
|
788
801
|
if (this._isAutoCellHeight)
|
|
789
802
|
this.cellHeight();
|
|
803
|
+
this.doContentResize();
|
|
790
804
|
// and trigger our event last...
|
|
791
805
|
this._ignoreLayoutsNodeChange = true; // skip layout update
|
|
792
806
|
this._triggerChangeEvent();
|
|
@@ -814,7 +828,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
814
828
|
if (!this.el)
|
|
815
829
|
return; // prevent multiple calls
|
|
816
830
|
this.offAll();
|
|
817
|
-
this.
|
|
831
|
+
this._updateResizeEvent(true);
|
|
818
832
|
this.setStatic(true, false); // permanently removes DD but don't set CSS class (we're going away)
|
|
819
833
|
this.setAnimation(false);
|
|
820
834
|
if (!removeDOM) {
|
|
@@ -962,7 +976,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
962
976
|
}
|
|
963
977
|
this.el.addEventListener(name, this._gsEventHandler[name]);
|
|
964
978
|
}
|
|
965
|
-
else if (name === 'drag' || name === 'dragstart' || name === 'dragstop' || name === 'resizestart' || name === 'resize'
|
|
979
|
+
else if (name === 'drag' || name === 'dragstart' || name === 'dragstop' || name === 'resizestart' || name === 'resize'
|
|
980
|
+
|| name === 'resizestop' || name === 'dropped' || name === 'resizecontent') {
|
|
966
981
|
// drag&drop stop events NEED to be call them AFTER we update node attributes so handle them ourself.
|
|
967
982
|
// do same for start event to make it easier...
|
|
968
983
|
this._gsEventHandler[name] = callback;
|
|
@@ -1107,9 +1122,10 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1107
1122
|
return this.update(els, opt);
|
|
1108
1123
|
}
|
|
1109
1124
|
GridStack.getElements(els).forEach(function (el) {
|
|
1110
|
-
|
|
1125
|
+
var _a;
|
|
1126
|
+
var n = el === null || el === void 0 ? void 0 : el.gridstackNode;
|
|
1127
|
+
if (!n)
|
|
1111
1128
|
return;
|
|
1112
|
-
var n = el.gridstackNode;
|
|
1113
1129
|
var w = utils_1.Utils.cloneDeep(opt); // make a copy we can modify in case they re-use it or multiple items
|
|
1114
1130
|
delete w.autoPosition;
|
|
1115
1131
|
// move/resize widget if anything changed
|
|
@@ -1127,10 +1143,16 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1127
1143
|
m = {}; // will use node position but validate values
|
|
1128
1144
|
}
|
|
1129
1145
|
// check for content changing
|
|
1130
|
-
if (w.content) {
|
|
1131
|
-
var
|
|
1132
|
-
if (
|
|
1133
|
-
|
|
1146
|
+
if (w.content !== undefined) {
|
|
1147
|
+
var itemContent = el.querySelector('.grid-stack-item-content');
|
|
1148
|
+
if (!itemContent || itemContent.innerHTML === w.content)
|
|
1149
|
+
return;
|
|
1150
|
+
itemContent.innerHTML = w.content;
|
|
1151
|
+
// restore any sub-grid back
|
|
1152
|
+
if ((_a = n.subGrid) === null || _a === void 0 ? void 0 : _a.el) {
|
|
1153
|
+
itemContent.appendChild(n.subGrid.el);
|
|
1154
|
+
if (!n.subGrid.opts.styleInHead)
|
|
1155
|
+
n.subGrid._updateStyles(true); // force create
|
|
1134
1156
|
}
|
|
1135
1157
|
delete w.content;
|
|
1136
1158
|
}
|
|
@@ -1146,14 +1168,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1146
1168
|
}
|
|
1147
1169
|
utils_1.Utils.sanitizeMinMax(n);
|
|
1148
1170
|
// finally move the widget
|
|
1149
|
-
if (m)
|
|
1150
|
-
_this.
|
|
1151
|
-
.beginUpdate(n)
|
|
1152
|
-
.moveNode(n, m);
|
|
1153
|
-
_this._updateContainerHeight();
|
|
1154
|
-
_this._triggerChangeEvent();
|
|
1155
|
-
_this.engine.endUpdate();
|
|
1156
|
-
}
|
|
1171
|
+
if (m)
|
|
1172
|
+
_this.moveNode(n, m);
|
|
1157
1173
|
if (changed) { // move will only update x,y,w,h so update the rest too
|
|
1158
1174
|
_this._writeAttr(el, n);
|
|
1159
1175
|
}
|
|
@@ -1163,6 +1179,56 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1163
1179
|
});
|
|
1164
1180
|
return this;
|
|
1165
1181
|
};
|
|
1182
|
+
GridStack.prototype.moveNode = function (n, m) {
|
|
1183
|
+
this.engine.cleanNodes()
|
|
1184
|
+
.beginUpdate(n)
|
|
1185
|
+
.moveNode(n, m);
|
|
1186
|
+
this._updateContainerHeight();
|
|
1187
|
+
this._triggerChangeEvent();
|
|
1188
|
+
this.engine.endUpdate();
|
|
1189
|
+
};
|
|
1190
|
+
/** Updates widget height to match the content height to avoid v-scrollbar or dead space.
|
|
1191
|
+
Note: this assumes only 1 child under '.grid-stack-item-content' (sized to gridItem minus padding) that is at the entire content size wanted */
|
|
1192
|
+
GridStack.prototype.resizeToContent = function (els) {
|
|
1193
|
+
var _this = this;
|
|
1194
|
+
GridStack.getElements(els).forEach(function (el) {
|
|
1195
|
+
var _a;
|
|
1196
|
+
var n = el === null || el === void 0 ? void 0 : el.gridstackNode;
|
|
1197
|
+
if (!n)
|
|
1198
|
+
return;
|
|
1199
|
+
if (el.parentElement !== n.grid.el)
|
|
1200
|
+
return; // skip if we are not inside a grid
|
|
1201
|
+
var height = el.clientHeight; // getBoundingClientRect().height seem to flicker back and forth
|
|
1202
|
+
if (!height)
|
|
1203
|
+
return; // 0 when hidden, skip
|
|
1204
|
+
var item = el.querySelector(GridStack.resizeToContentParent);
|
|
1205
|
+
if (!item)
|
|
1206
|
+
return;
|
|
1207
|
+
var itemH = item.clientHeight; // available height to our child (minus border, padding...)
|
|
1208
|
+
var wantedH = ((_a = item.firstChild) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height) || itemH; // NOTE: clientHeight & getBoundingClientRect() is undefined for text and other leaf nodes. use <div> container!
|
|
1209
|
+
if (itemH === wantedH)
|
|
1210
|
+
return;
|
|
1211
|
+
height += wantedH - itemH;
|
|
1212
|
+
var cell = _this.getCellHeight();
|
|
1213
|
+
if (!cell)
|
|
1214
|
+
return;
|
|
1215
|
+
var h = Math.ceil(height / cell);
|
|
1216
|
+
if (n.maxH && h > n.maxH)
|
|
1217
|
+
h = n.maxH;
|
|
1218
|
+
if (h !== n.h) {
|
|
1219
|
+
_this._ignoreLayoutsNodeChange = true;
|
|
1220
|
+
_this.moveNode(n, { h: h });
|
|
1221
|
+
delete _this._ignoreLayoutsNodeChange;
|
|
1222
|
+
}
|
|
1223
|
+
});
|
|
1224
|
+
};
|
|
1225
|
+
/** call the user resize (so we can do extra work) else our build in version */
|
|
1226
|
+
GridStack.prototype.resizeToContentCheck = function (el) {
|
|
1227
|
+
if (GridStack.resizeToContentCB)
|
|
1228
|
+
GridStack.resizeToContentCB(el);
|
|
1229
|
+
else
|
|
1230
|
+
this.resizeToContent(el);
|
|
1231
|
+
};
|
|
1166
1232
|
/**
|
|
1167
1233
|
* Updates the margins which will set all 4 sides at once - see `GridStackOptions.margin` for format options (CSS string format of 1,2,4 values or single number).
|
|
1168
1234
|
* @param value margin value
|
|
@@ -1360,6 +1426,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1360
1426
|
if (!utils_1.Utils.same(node, copy)) {
|
|
1361
1427
|
this._writeAttr(el, node);
|
|
1362
1428
|
}
|
|
1429
|
+
if (utils_1.Utils.shouldFitToContent(node))
|
|
1430
|
+
el.classList.add('fit-to-content');
|
|
1363
1431
|
this._prepareDragDropByNode(node);
|
|
1364
1432
|
return this;
|
|
1365
1433
|
};
|
|
@@ -1455,67 +1523,87 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1455
1523
|
return this;
|
|
1456
1524
|
};
|
|
1457
1525
|
/**
|
|
1458
|
-
* called when we are being resized
|
|
1459
|
-
* and remember the prev columns we used, or get our count from parent, as well as check for auto
|
|
1526
|
+
* called when we are being resized - check if the one Column Mode needs to be turned on/off
|
|
1527
|
+
* and remember the prev columns we used, or get our count from parent, as well as check for cellHeight==='auto' (square)
|
|
1528
|
+
* or `fitToContent` gridItem options.
|
|
1460
1529
|
*/
|
|
1461
|
-
GridStack.prototype.
|
|
1462
|
-
var
|
|
1463
|
-
if (!this.el ||
|
|
1530
|
+
GridStack.prototype.onResize = function () {
|
|
1531
|
+
var _a;
|
|
1532
|
+
if (!((_a = this.el) === null || _a === void 0 ? void 0 : _a.clientWidth))
|
|
1464
1533
|
return; // return if we're gone or no size yet (will get called again)
|
|
1465
|
-
|
|
1534
|
+
if (this.prevWidth === this.el.clientWidth)
|
|
1535
|
+
return; // no-op
|
|
1536
|
+
this.prevWidth = this.el.clientWidth;
|
|
1537
|
+
// console.log('onResize ', this.el.clientWidth);
|
|
1538
|
+
this.batchUpdate();
|
|
1466
1539
|
// see if we're nested and take our column count from our parent....
|
|
1540
|
+
var columnChanged = false;
|
|
1467
1541
|
if (this._autoColumn && this.parentGridItem) {
|
|
1468
1542
|
if (this.opts.column !== this.parentGridItem.w) {
|
|
1469
|
-
changedColumn = true;
|
|
1470
1543
|
this.column(this.parentGridItem.w, 'none');
|
|
1544
|
+
columnChanged = true;
|
|
1471
1545
|
}
|
|
1472
1546
|
}
|
|
1473
1547
|
else {
|
|
1474
1548
|
// else check for 1 column in/out behavior
|
|
1475
|
-
var oneColumn = !this.opts.disableOneColumnMode && this.el.clientWidth <= this.opts.oneColumnSize
|
|
1549
|
+
var oneColumn = !this.opts.disableOneColumnMode && this.el.clientWidth <= this.opts.oneColumnSize ||
|
|
1550
|
+
(this.opts.column === 1 && !this._prevColumn);
|
|
1476
1551
|
if ((this.opts.column === 1) !== oneColumn) {
|
|
1477
|
-
|
|
1478
|
-
if (this.opts.animate) {
|
|
1479
|
-
this.setAnimation(false);
|
|
1480
|
-
} // 1 <-> 12 is too radical, turn off animation
|
|
1552
|
+
// if (this.opts.animate) this.setAnimation(false); // 1 <-> 12 is too radical, turn off animation and we need it for fitToContent
|
|
1481
1553
|
this.column(oneColumn ? 1 : this._prevColumn);
|
|
1482
|
-
if (this.opts.animate)
|
|
1483
|
-
|
|
1484
|
-
}
|
|
1554
|
+
// if (this.opts.animate) setTimeout(() => this.setAnimation(true));
|
|
1555
|
+
columnChanged = true;
|
|
1485
1556
|
}
|
|
1486
1557
|
}
|
|
1487
1558
|
// make the cells content square again
|
|
1488
|
-
if (this._isAutoCellHeight)
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
this._cellHeightThrottle = utils_1.Utils.throttle(function () { return _this.cellHeight(); }, this.opts.cellHeightThrottle);
|
|
1492
|
-
}
|
|
1493
|
-
this._cellHeightThrottle();
|
|
1494
|
-
}
|
|
1495
|
-
else {
|
|
1496
|
-
// immediate update if we've changed column count or have no threshold
|
|
1497
|
-
this.cellHeight();
|
|
1498
|
-
}
|
|
1499
|
-
}
|
|
1500
|
-
// finally update any nested grids
|
|
1559
|
+
if (this._isAutoCellHeight)
|
|
1560
|
+
this.cellHeight();
|
|
1561
|
+
// update any nested grids, or items size
|
|
1501
1562
|
this.engine.nodes.forEach(function (n) {
|
|
1502
1563
|
if (n.subGrid)
|
|
1503
|
-
n.subGrid.
|
|
1564
|
+
n.subGrid.onResize();
|
|
1504
1565
|
});
|
|
1566
|
+
this.doContentResize(columnChanged);
|
|
1567
|
+
this.batchUpdate(false);
|
|
1505
1568
|
return this;
|
|
1506
1569
|
};
|
|
1507
|
-
|
|
1508
|
-
|
|
1570
|
+
GridStack.prototype.doContentResize = function (delay, n) {
|
|
1571
|
+
var _this = this;
|
|
1572
|
+
if (delay === void 0) { delay = true; }
|
|
1573
|
+
if (n === void 0) { n = undefined; }
|
|
1574
|
+
// update any gridItem height with fitToContent, but wait for DOM $animation_speed to settle if we changed column count
|
|
1575
|
+
// 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 ?
|
|
1576
|
+
setTimeout(function () {
|
|
1577
|
+
if (n) {
|
|
1578
|
+
if (utils_1.Utils.shouldFitToContent(n))
|
|
1579
|
+
_this.resizeToContentCheck(n.el);
|
|
1580
|
+
}
|
|
1581
|
+
else {
|
|
1582
|
+
_this.engine.nodes.forEach(function (n) {
|
|
1583
|
+
if (utils_1.Utils.shouldFitToContent(n))
|
|
1584
|
+
_this.resizeToContentCheck(n.el);
|
|
1585
|
+
});
|
|
1586
|
+
}
|
|
1587
|
+
if (_this._gsEventHandler['resizeContent'])
|
|
1588
|
+
_this._gsEventHandler['resizeContent'](null, n ? [n] : _this.engine.nodes);
|
|
1589
|
+
}, delay ? 300 + 10 : 0);
|
|
1590
|
+
};
|
|
1591
|
+
/** add or remove the grid element size event handler */
|
|
1592
|
+
GridStack.prototype._updateResizeEvent = function (forceRemove) {
|
|
1593
|
+
var _this = this;
|
|
1509
1594
|
if (forceRemove === void 0) { forceRemove = false; }
|
|
1510
1595
|
// 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)
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1596
|
+
// or supporting new fitToContent option.
|
|
1597
|
+
var trackSize = !this.parentGridItem && (this._isAutoCellHeight || this.opts.fitToContent || !this.opts.disableOneColumnMode || this.engine.nodes.find(function (n) { return n.fitToContent; }));
|
|
1598
|
+
if (!forceRemove && trackSize && !this.resizeObserver) {
|
|
1599
|
+
this._sizeThrottle = utils_1.Utils.throttle(function () { return _this.onResize(); }, this.opts.cellHeightThrottle);
|
|
1600
|
+
this.resizeObserver = new ResizeObserver(function (entries) { return _this._sizeThrottle(); });
|
|
1601
|
+
this.resizeObserver.observe(this.el);
|
|
1602
|
+
}
|
|
1603
|
+
else if ((forceRemove || !trackSize) && this.resizeObserver) {
|
|
1604
|
+
this.resizeObserver.disconnect();
|
|
1605
|
+
delete this.resizeObserver;
|
|
1606
|
+
delete this._sizeThrottle;
|
|
1519
1607
|
}
|
|
1520
1608
|
return this;
|
|
1521
1609
|
};
|
|
@@ -1979,7 +2067,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
1979
2067
|
/** @internal mark item for removal */
|
|
1980
2068
|
GridStack.prototype._itemRemoving = function (el, remove) {
|
|
1981
2069
|
var node = el ? el.gridstackNode : undefined;
|
|
1982
|
-
if (!node || !node.grid)
|
|
2070
|
+
if (!node || !node.grid || el.classList.contains(this.opts.removableOptions.decline))
|
|
1983
2071
|
return;
|
|
1984
2072
|
remove ? node._isAboutToRemove = true : delete node._isAboutToRemove;
|
|
1985
2073
|
remove ? el.classList.add('grid-stack-item-removing') : el.classList.remove('grid-stack-item-removing');
|
|
@@ -2047,17 +2135,12 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
2047
2135
|
return;
|
|
2048
2136
|
node.el = target;
|
|
2049
2137
|
if (node._isAboutToRemove) {
|
|
2050
|
-
var
|
|
2051
|
-
if (
|
|
2052
|
-
|
|
2138
|
+
var grid = el.gridstackNode.grid;
|
|
2139
|
+
if (grid._gsEventHandler[event.type]) {
|
|
2140
|
+
grid._gsEventHandler[event.type](event, target);
|
|
2053
2141
|
}
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
gridToNotify._triggerRemoveEvent();
|
|
2057
|
-
// break circular links and remove DOM
|
|
2058
|
-
delete el.gridstackNode;
|
|
2059
|
-
delete node.el;
|
|
2060
|
-
el.remove();
|
|
2142
|
+
grid.engine.nodes.push(node); // temp add it back so we can proper remove it next
|
|
2143
|
+
grid.removeWidget(el, true, true);
|
|
2061
2144
|
}
|
|
2062
2145
|
else {
|
|
2063
2146
|
utils_1.Utils.removePositioningStyles(target);
|
|
@@ -2080,6 +2163,8 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
2080
2163
|
_this._updateContainerHeight(); // @ts-ignore
|
|
2081
2164
|
_this._triggerChangeEvent();
|
|
2082
2165
|
_this.engine.endUpdate();
|
|
2166
|
+
if (event.type === 'resizestop')
|
|
2167
|
+
_this.doContentResize(false, node);
|
|
2083
2168
|
};
|
|
2084
2169
|
dd.draggable(el, {
|
|
2085
2170
|
start: onStartMoving,
|
|
@@ -2203,7 +2288,7 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
2203
2288
|
this.engine.cacheRects(cellWidth, cellHeight, mTop, mRight, mBottom, mLeft);
|
|
2204
2289
|
delete node._skipDown;
|
|
2205
2290
|
if (resizing && node.subGrid)
|
|
2206
|
-
node.subGrid.
|
|
2291
|
+
node.subGrid.onResize();
|
|
2207
2292
|
this._extraDragRow = 0; // @ts-ignore
|
|
2208
2293
|
this._updateContainerHeight();
|
|
2209
2294
|
var target = event.target; // @ts-ignore
|
|
@@ -2248,11 +2333,13 @@ var GridStack = exports.GridStack = /** @class */ (function () {
|
|
|
2248
2333
|
};
|
|
2249
2334
|
// legacy method removed
|
|
2250
2335
|
GridStack.prototype.commit = function () { (0, utils_1.obsolete)(this, this.batchUpdate(false), 'commit', 'batchUpdate', '5.2'); return this; };
|
|
2336
|
+
/** parent class for sizing content. defaults to '.grid-stack-item-content' */
|
|
2337
|
+
GridStack.resizeToContentParent = '.grid-stack-item-content';
|
|
2251
2338
|
/** scoping so users can call GridStack.Utils.sort() for example */
|
|
2252
2339
|
GridStack.Utils = utils_1.Utils;
|
|
2253
2340
|
/** scoping so users can call new GridStack.Engine(12) for example */
|
|
2254
2341
|
GridStack.Engine = gridstack_engine_1.GridStackEngine;
|
|
2255
|
-
GridStack.GDRev = '
|
|
2342
|
+
GridStack.GDRev = '9.0.0';
|
|
2256
2343
|
return GridStack;
|
|
2257
2344
|
}());
|
|
2258
2345
|
//# sourceMappingURL=gridstack.js.map
|