fix a NAN error that could occur if using center_widget if the grid was in responsive mode.

Error check the shift cols, to ensure they can't move left past col 1
make a change from 100% to 100VW for better browser support of min-width
This commit is contained in:
David Morse
2015-04-06 22:49:51 -06:00
parent ec430f816f
commit 4783e6e726
7 changed files with 66 additions and 51 deletions
+4 -4
View File
@@ -1,7 +1,7 @@
/*! gridster.js - v0.6.5 - 2015-04-06
* http://gridster.net/
* Copyright (c) 2015 decksterteam; Licensed */
/*! gridster.js - v0.6.5 - 2015-04-06
* http://gridster.net/
* Copyright (c) 2015 decksterteam; Licensed */
.gridster {
position:relative;
}
+22 -18
View File
@@ -1,7 +1,7 @@
/*! gridster.js - v0.6.5 - 2015-04-06
* http://gridster.net/
* Copyright (c) 2015 decksterteam; Licensed */
/*! gridster.js - v0.6.5 - 2015-04-06
* http://gridster.net/
* Copyright (c) 2015 decksterteam; Licensed */
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -119,7 +119,7 @@
return Coords;
}));
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -354,7 +354,7 @@
return Collision;
}));
;(function(window, undefined) {
/* Delay, debounce and throttle functions taken from underscore.js
@@ -427,7 +427,7 @@
};
})(window);
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -852,7 +852,7 @@
return Draggable;
}));
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -1493,7 +1493,12 @@
*/
fn.center_widgets = debounce(function () {
var wrapper_width = this.$wrapper.width();
var col_size = this.options.widget_base_dimensions[0] + (2 * this.options.widget_margins[0]);
var col_size;
if (this.is_responsive()) {
col_size = this.get_responsive_col_width();
} else {
col_size = this.options.widget_base_dimensions[0] + (2 * this.options.widget_margins[0]);
}
var col_count = Math.floor(Math.max(Math.floor(wrapper_width / col_size), this.min_col_count) / 2) * 2;
this.options.min_cols = col_count;
@@ -1554,11 +1559,11 @@
widgets_coords.each($.proxy(function(i, widget) {
var $widget = $(widget.el);
var wgd = $widget.coords().grid;
var col = parseInt($widget.attr("data-col"));
var col = parseInt($widget.attr('data-col'));
var new_grid_data = {
col: col + col_dif,
row: wgd.row,
col: Math.max(Math.round(col + col_dif), 1),
row: wgd.row,
size_x: wgd.size_x,
size_y: wgd.size_y
};
@@ -3885,17 +3890,16 @@
cols = this.get_highest_occupied_cell().col;
}
var max_cols = (this.options.autogrow_cols ? this.options.max_cols :
this.cols);
var max_cols = (this.options.autogrow_cols ? this.options.max_cols : this.cols);
cols = Math.min(max_cols, Math.max(cols, this.options.min_cols));
this.container_width = ((cols + 1) * this.options.widget_margins[0]) + (cols * this.min_widget_width);
if(this.is_responsive()) {
this.$el.css({'min-width': '100vw', 'max-width': '100vw'});
return this; //if we are responsive exit before setting the width of $el
}
this.$el.css('width', this.container_width);
if(this.is_responsive()) {
this.$el.css({'min-width': '100%', 'max-width': '100%'});
return this;
}
return this;
};
+1 -1
View File
@@ -1,2 +1,2 @@
/*! gridster.js - v0.6.5 - 2015-04-06 - * http://gridster.net/ - Copyright (c) 2015 decksterteam; Licensed */
/*! gridster.js - v0.6.5 - 2015-04-06 - * http://gridster.net/ - Copyright (c) 2015 decksterteam; Licensed */
.gridster{position:relative}.gridster>*{margin:0 auto;-webkit-transition:height .4s,width .4s;-moz-transition:height .4s,width .4s;-o-transition:height .4s,width .4s;-ms-transition:height .4s,width .4s;transition:height .4s,width .4s}.gridster .gs-w{z-index:2;position:absolute}.gridster.collapsed{height:auto!important}.gridster.collapsed .gs-w{position:static!important}.ready .gs-w:not(.preview-holder){-webkit-transition:opacity .3s,left .3s,top .3s;-moz-transition:opacity .3s,left .3s,top .3s;-o-transition:opacity .3s,left .3s,top .3s;transition:opacity .3s,left .3s,top .3s}.ready .gs-w:not(.preview-holder),.ready .resize-preview-holder{-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-moz-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-o-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s}.gridster .preview-holder{z-index:1;position:absolute;background-color:#fff;border-color:#fff;opacity:.3}.gridster .player-revert{z-index:10!important;-webkit-transition:left .3s,top .3s!important;-moz-transition:left .3s,top .3s!important;-o-transition:left .3s,top .3s!important;transition:left .3s,top .3s!important}.gridster .dragging,.gridster .resizing{z-index:10!important;-webkit-transition:all 0s!important;-moz-transition:all 0s!important;-o-transition:all 0s!important;transition:all 0s!important}.gs-resize-handle{position:absolute;z-index:1}.gs-resize-handle-both{width:20px;height:20px;bottom:-8px;right:-8px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=);background-position:top left;background-repeat:no-repeat;cursor:se-resize;z-index:20}.gs-resize-handle-x{top:0;bottom:13px;right:-5px;width:10px;cursor:e-resize}.gs-resize-handle-y{left:0;right:13px;bottom:-5px;height:10px;cursor:s-resize}.gs-w:hover .gs-resize-handle,.resizing .gs-resize-handle{opacity:1}.gs-resize-handle,.gs-w.dragging .gs-resize-handle{opacity:0}.gs-resize-disabled .gs-resize-handle{display:none!important}[data-max-sizex="1"] .gs-resize-handle-x,[data-max-sizey="1"] .gs-resize-handle-y,[data-max-sizey="1"][data-max-sizex="1"] .gs-resize-handle{display:none!important}
+3 -2
View File
File diff suppressed because one or more lines are too long
+23 -19
View File
@@ -1,7 +1,7 @@
/*! gridster.js - v0.6.5 - 2015-04-06
* http://gridster.net/
* Copyright (c) 2015 decksterteam; Licensed */
/*! gridster.js - v0.6.5 - 2015-04-06
* http://gridster.net/
* Copyright (c) 2015 decksterteam; Licensed */
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -119,7 +119,7 @@
return Coords;
}));
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -354,7 +354,7 @@
return Collision;
}));
;(function(window, undefined) {
/* Delay, debounce and throttle functions taken from underscore.js
@@ -427,7 +427,7 @@
};
})(window);
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -852,7 +852,7 @@
return Draggable;
}));
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
@@ -1493,7 +1493,12 @@
*/
fn.center_widgets = debounce(function () {
var wrapper_width = this.$wrapper.width();
var col_size = this.options.widget_base_dimensions[0] + (2 * this.options.widget_margins[0]);
var col_size;
if (this.is_responsive()) {
col_size = this.get_responsive_col_width();
} else {
col_size = this.options.widget_base_dimensions[0] + (2 * this.options.widget_margins[0]);
}
var col_count = Math.floor(Math.max(Math.floor(wrapper_width / col_size), this.min_col_count) / 2) * 2;
this.options.min_cols = col_count;
@@ -1554,11 +1559,11 @@
widgets_coords.each($.proxy(function(i, widget) {
var $widget = $(widget.el);
var wgd = $widget.coords().grid;
var col = parseInt($widget.attr("data-col"));
var col = parseInt($widget.attr('data-col'));
var new_grid_data = {
col: col + col_dif,
row: wgd.row,
col: Math.max(Math.round(col + col_dif), 1),
row: wgd.row,
size_x: wgd.size_x,
size_y: wgd.size_y
};
@@ -3885,17 +3890,16 @@
cols = this.get_highest_occupied_cell().col;
}
var max_cols = (this.options.autogrow_cols ? this.options.max_cols :
this.cols);
var max_cols = (this.options.autogrow_cols ? this.options.max_cols : this.cols);
cols = Math.min(max_cols, Math.max(cols, this.options.min_cols));
this.container_width = ((cols + 1) * this.options.widget_margins[0]) + (cols * this.min_widget_width);
if(this.is_responsive()) {
this.$el.css({'min-width': '100vw', 'max-width': '100vw'});
return this; //if we are responsive exit before setting the width of $el
}
this.$el.css('width', this.container_width);
if(this.is_responsive()) {
this.$el.css({'min-width': '100%', 'max-width': '100%'});
return this;
}
return this;
};
@@ -4379,7 +4383,7 @@
return Gridster;
}));
;(function(root, factory) {
if (typeof define === 'function' && define.amd) {
File diff suppressed because one or more lines are too long
+10 -5
View File
@@ -646,7 +646,12 @@
*/
fn.center_widgets = debounce(function () {
var wrapper_width = this.$wrapper.width();
var col_size = this.options.widget_base_dimensions[0] + (2 * this.options.widget_margins[0]);
var col_size;
if (this.is_responsive()) {
col_size = this.get_responsive_col_width();
} else {
col_size = this.options.widget_base_dimensions[0] + (2 * this.options.widget_margins[0]);
}
var col_count = Math.floor(Math.max(Math.floor(wrapper_width / col_size), this.min_col_count) / 2) * 2;
this.options.min_cols = col_count;
@@ -707,11 +712,11 @@
widgets_coords.each($.proxy(function(i, widget) {
var $widget = $(widget.el);
var wgd = $widget.coords().grid;
var col = parseInt($widget.attr("data-col"));
var col = parseInt($widget.attr('data-col'));
var new_grid_data = {
col: col + col_dif,
row: wgd.row,
col: Math.max(Math.round(col + col_dif), 1),
row: wgd.row,
size_x: wgd.size_x,
size_y: wgd.size_y
};
@@ -3043,7 +3048,7 @@
cols = Math.min(max_cols, Math.max(cols, this.options.min_cols));
this.container_width = ((cols + 1) * this.options.widget_margins[0]) + (cols * this.min_widget_width);
if(this.is_responsive()) {
this.$el.css({'min-width': '100%', 'max-width': '100%'});
this.$el.css({'min-width': '100vw', 'max-width': '100vw'});
return this; //if we are responsive exit before setting the width of $el
}
this.$el.css('width', this.container_width);