|
452 | 452 | }
|
453 | 453 | };
|
454 | 454 |
|
| 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 | + } |
455 | 478 | function applySelect2ValidationCompatibility(element) {
|
456 | 479 | var $element = $(element);
|
457 | 480 | var select2 = $element.next('.select2-container');
|
|
573 | 596 | $element.trigger('change');
|
574 | 597 | });
|
575 | 598 | }
|
| 599 | + if (options.preserveColumnWidth) { |
| 600 | + forceSelect2ToRespectPercentageTableWidths(element); |
| 601 | + } |
576 | 602 | }
|
577 | 603 | };
|
578 | 604 |
|
|
621 | 647 | model($(element).val());
|
622 | 648 | });
|
623 | 649 |
|
| 650 | + if (options.preserveColumnWidth) { |
| 651 | + forceSelect2ToRespectPercentageTableWidths(element); |
| 652 | + } |
| 653 | + |
624 | 654 | applySelect2ValidationCompatibility(element);
|
625 | 655 | },
|
626 | 656 | update: function(element, valueAccessor) {
|
|
0 commit comments