|
452 | 452 | }
|
453 | 453 | };
|
454 | 454 |
|
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'); |
457 | 458 | var resizeHandler = null;
|
458 |
| - if (parentColumn) { |
459 |
| - var $parentColumn = $(parentColumn); |
| 459 | + if ($parentColumn.length) { |
460 | 460 | 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 | + } |
463 | 465 | var debounce = null;
|
464 | 466 | resizeHandler = function() {
|
465 | 467 | clearTimeout(debounce);
|
466 |
| - setTimeout(function() { |
467 |
| - select2.css('max-width', $parentColumn.width()+'px'); |
468 |
| - }, 300); |
| 468 | + setTimeout(calculateWidth, 300); |
469 | 469 | };
|
470 | 470 | $(window).on('resize', resizeHandler);
|
471 | 471 |
|
472 | 472 | ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
|
473 | 473 | $(window).off('resize', resizeHandler);
|
474 | 474 | });
|
| 475 | + resizeHandler(); |
475 | 476 | }
|
476 | 477 |
|
477 | 478 | }
|
|
648 | 649 | });
|
649 | 650 |
|
650 | 651 | if (options.preserveColumnWidth) {
|
651 |
| - forceSelect2ToRespectPercentageTableWidths(element); |
| 652 | + forceSelect2ToRespectPercentageTableWidths(element, options.preserveColumnWidth); |
652 | 653 | }
|
653 | 654 |
|
654 | 655 | applySelect2ValidationCompatibility(element);
|
|
0 commit comments