|
666 | 666 |
|
667 | 667 | var GridStack = function(el, opts) {
|
668 | 668 | var self = this;
|
669 |
| - var oneColumnMode, isAutoCellHeight; |
| 669 | + var _prevColumn, isAutoCellHeight; |
670 | 670 |
|
671 | 671 | opts = opts || {};
|
672 | 672 |
|
|
814 | 814 | self.cellHeight(self.cellWidth(), false);
|
815 | 815 | }, 100);
|
816 | 816 |
|
| 817 | + /** |
| 818 | + * called when we are being resized - check if the one Column Mode needs to be turned on/off |
| 819 | + * and remember the prev columns we used. |
| 820 | + */ |
817 | 821 | this.onResizeHandler = function() {
|
818 | 822 | if (isAutoCellHeight) {
|
819 | 823 | self._updateHeightsOnResize();
|
820 | 824 | }
|
821 | 825 |
|
822 |
| - if (self._isOneColumnMode() && !self.opts.disableOneColumnMode) { |
823 |
| - if (oneColumnMode) { |
824 |
| - return; |
825 |
| - } |
826 |
| - self.container.addClass(self.opts.oneColumnModeClass); |
827 |
| - oneColumnMode = true; |
828 |
| - |
829 |
| - self.grid._sortNodes(); |
830 |
| - self.grid.nodes.forEach(function(node) { |
831 |
| - self.container.append(node.el); |
| 826 | + var oneColumnWidth = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) <= self.opts.minWidth; |
832 | 827 |
|
833 |
| - if (self.opts.staticGrid) { |
834 |
| - return; |
835 |
| - } |
836 |
| - self.dd.draggable(node.el, 'disable'); |
837 |
| - self.dd.resizable(node.el, 'disable'); |
| 828 | + if (oneColumnWidth && !self.opts.disableOneColumnMode) { |
| 829 | + if (self._prevColumn || self.opts.staticGrid) { return; } |
838 | 830 |
|
839 |
| - node.el.trigger('resize'); |
840 |
| - }); |
| 831 | + self.container.addClass(self.opts.oneColumnModeClass); // TODO: legacy do people still depend on style being there ? |
| 832 | + self.setColumn(1); |
841 | 833 | } else {
|
842 |
| - if (!oneColumnMode) { |
843 |
| - return; |
844 |
| - } |
| 834 | + if (!self._prevColumn || self.opts.staticGrid) { return; } |
845 | 835 |
|
846 | 836 | self.container.removeClass(self.opts.oneColumnModeClass);
|
847 |
| - oneColumnMode = false; |
848 |
| - |
849 |
| - if (self.opts.staticGrid) { |
850 |
| - return; |
851 |
| - } |
852 |
| - |
853 |
| - self.grid.nodes.forEach(function(node) { |
854 |
| - if (!node.noMove && !self.opts.disableDrag) { |
855 |
| - self.dd.draggable(node.el, 'enable'); |
856 |
| - } |
857 |
| - if (!node.noResize && !self.opts.disableResize) { |
858 |
| - self.dd.resizable(node.el, 'enable'); |
859 |
| - } |
860 |
| - |
861 |
| - node.el.trigger('resize'); |
862 |
| - }); |
| 837 | + self.setColumn(self._prevColumn); |
863 | 838 | }
|
864 | 839 | };
|
865 | 840 |
|
|
1170 | 1145 | }
|
1171 | 1146 | };
|
1172 | 1147 |
|
1173 |
| - GridStack.prototype._isOneColumnMode = function() { |
1174 |
| - return (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) <= |
1175 |
| - this.opts.minWidth; |
1176 |
| - }; |
1177 |
| - |
1178 | 1148 | GridStack.prototype._setupRemovingTimeout = function(el) {
|
1179 | 1149 | var self = this;
|
1180 | 1150 | var node = $(el).data('_gridstack_node');
|
|
1383 | 1353 | resize: dragOrResize
|
1384 | 1354 | });
|
1385 | 1355 |
|
1386 |
| - if (node.noMove || (this._isOneColumnMode() && !self.opts.disableOneColumnMode) || this.opts.disableDrag || |
1387 |
| - this.opts.staticGrid) { |
| 1356 | + if (node.noMove || this.opts.disableDrag || this.opts.staticGrid) { |
1388 | 1357 | this.dd.draggable(el, 'disable');
|
1389 | 1358 | }
|
1390 | 1359 |
|
1391 |
| - if (node.noResize || (this._isOneColumnMode() && !self.opts.disableOneColumnMode) || this.opts.disableResize || |
1392 |
| - this.opts.staticGrid) { |
| 1360 | + if (node.noResize || this.opts.disableResize || this.opts.staticGrid) { |
1393 | 1361 | this.dd.resizable(el, 'disable');
|
1394 | 1362 | }
|
1395 | 1363 |
|
|
1546 | 1514 | var node = el.data('_gridstack_node');
|
1547 | 1515 | if (!node) { return; }
|
1548 | 1516 | node.noResize = !(val || false);
|
1549 |
| - if (node.noResize || (self._isOneColumnMode() && !self.opts.disableOneColumnMode)) { |
| 1517 | + if (node.noResize) { |
1550 | 1518 | self.dd.resizable(el, 'disable');
|
1551 | 1519 | } else {
|
1552 | 1520 | self.dd.resizable(el, 'enable');
|
|
1563 | 1531 | var node = el.data('_gridstack_node');
|
1564 | 1532 | if (!node) { return; }
|
1565 | 1533 | node.noMove = !(val || false);
|
1566 |
| - if (node.noMove || (self._isOneColumnMode() && !self.opts.disableOneColumnMode)) { |
| 1534 | + if (node.noMove) { |
1567 | 1535 | self.dd.draggable(el, 'disable');
|
1568 | 1536 | el.removeClass('ui-draggable-handle');
|
1569 | 1537 | } else {
|
|
1931 | 1899 | if (this.opts.column === column) { return; }
|
1932 | 1900 | var oldColumn = this.opts.column;
|
1933 | 1901 |
|
| 1902 | + // if we go into 1 column mode (which happens if we're sized less than minWidth unless disableOneColumnMode is on) |
| 1903 | + // then remember the original columns so we can restore. |
| 1904 | + if (column === 1) { |
| 1905 | + this._prevColumn = oldColumn; |
| 1906 | + } else { |
| 1907 | + delete this._prevColumn; |
| 1908 | + } |
| 1909 | + |
1934 | 1910 | this.container.removeClass('grid-stack-' + oldColumn);
|
1935 | 1911 | this.container.addClass('grid-stack-' + column);
|
1936 | 1912 | this.opts.column = this.grid.column = column;
|
|
0 commit comments