Skip to content

Commit 24faf52

Browse files
committed
Changed algorithm to size select2 inside tables to account for existing selections #189
1 parent 2eeb0a5 commit 24faf52

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

grails-app/assets/javascripts/forms-knockout-bindings.js

+11-10
Original file line numberDiff line numberDiff line change
@@ -452,26 +452,27 @@
452452
}
453453
};
454454

455-
function forceSelect2ToRespectPercentageTableWidths(element) {
456-
var parentColumn = $(element).parent('td') && $(element).parent('td')[0];
455+
function forceSelect2ToRespectPercentageTableWidths(element, percentageWidth) {
456+
var $parentColumn = $(element).parent('td');
457+
var $parentTable = $parentColumn.closest('table');
457458
var resizeHandler = null;
458-
if (parentColumn) {
459-
var $parentColumn = $(parentColumn);
459+
if ($parentColumn.length) {
460460
var select2 = $parentColumn.find('.select2-container');
461-
select2.css('max-width', $parentColumn.width()+'px');
462-
461+
function calculateWidth() {
462+
var columnWidth = $parentTable.width()*percentageWidth/100;
463+
select2.css('max-width', columnWidth+'px');
464+
}
463465
var debounce = null;
464466
resizeHandler = function() {
465467
clearTimeout(debounce);
466-
setTimeout(function() {
467-
select2.css('max-width', $parentColumn.width()+'px');
468-
}, 300);
468+
setTimeout(calculateWidth, 300);
469469
};
470470
$(window).on('resize', resizeHandler);
471471

472472
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
473473
$(window).off('resize', resizeHandler);
474474
});
475+
resizeHandler();
475476
}
476477

477478
}
@@ -648,7 +649,7 @@
648649
});
649650

650651
if (options.preserveColumnWidth) {
651-
forceSelect2ToRespectPercentageTableWidths(element);
652+
forceSelect2ToRespectPercentageTableWidths(element, options.preserveColumnWidth);
652653
}
653654

654655
applySelect2ValidationCompatibility(element);

0 commit comments

Comments
 (0)