Skip to content

Commit 1e1d213

Browse files
committed
Keep select2 inside table column width #189
1 parent a8d7f22 commit 1e1d213

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

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

+30
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,29 @@
452452
}
453453
};
454454

455+
function forceSelect2ToRespectPercentageTableWidths(element) {
456+
var parentColumn = $(element).parent('td') && $(element).parent('td')[0];
457+
var resizeHandler = null;
458+
if (parentColumn) {
459+
var $parentColumn = $(parentColumn);
460+
var select2 = $parentColumn.find('.select2-container');
461+
select2.css('max-width', $parentColumn.width()+'px');
462+
463+
var debounce = null;
464+
resizeHandler = function() {
465+
clearTimeout(debounce);
466+
setTimeout(function() {
467+
select2.css('max-width', $parentColumn.width()+'px');
468+
}, 300);
469+
};
470+
$(window).on('resize', resizeHandler);
471+
472+
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
473+
$(window).off('resize', resizeHandler);
474+
});
475+
}
476+
477+
}
455478
function applySelect2ValidationCompatibility(element) {
456479
var $element = $(element);
457480
var select2 = $element.next('.select2-container');
@@ -573,6 +596,9 @@
573596
$element.trigger('change');
574597
});
575598
}
599+
if (options.preserveColumnWidth) {
600+
forceSelect2ToRespectPercentageTableWidths(element);
601+
}
576602
}
577603
};
578604

@@ -621,6 +647,10 @@
621647
model($(element).val());
622648
});
623649

650+
if (options.preserveColumnWidth) {
651+
forceSelect2ToRespectPercentageTableWidths(element);
652+
}
653+
624654
applySelect2ValidationCompatibility(element);
625655
},
626656
update: function(element, valueAccessor) {

0 commit comments

Comments
 (0)