|
@@ -3332,7 +3332,7 @@ S2.define('select2/data/array',[
|
|
|
var $existingOption = $existing.filter(onlyItem(item));
|
|
|
|
|
|
var existingData = this.item($existingOption);
|
|
|
- var newData = $.extend(true, {}, existingData, item);
|
|
|
+ var newData = $.extend(true, {}, item, existingData);
|
|
|
|
|
|
var $newOption = this.option(newData);
|
|
|
|
|
@@ -3440,7 +3440,9 @@ S2.define('select2/data/ajax',[
|
|
|
|
|
|
callback(results);
|
|
|
}, function () {
|
|
|
- // TODO: Handle AJAX errors
|
|
|
+ self.trigger('results:message', {
|
|
|
+ message: 'errorLoading'
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
self._request = $request;
|
|
@@ -3472,6 +3474,12 @@ S2.define('select2/data/tags',[
|
|
|
this.createTag = createTag;
|
|
|
}
|
|
|
|
|
|
+ var insertTag = options.get('insertTag');
|
|
|
+
|
|
|
+ if (insertTag !== undefined) {
|
|
|
+ this.insertTag = insertTag;
|
|
|
+ }
|
|
|
+
|
|
|
decorated.call(this, $element, options);
|
|
|
|
|
|
if ($.isArray(tags)) {
|
|
@@ -4171,7 +4179,6 @@ S2.define('select2/dropdown/attachBody',[
|
|
|
|
|
|
var newDirection = null;
|
|
|
|
|
|
- var position = this.$container.position();
|
|
|
var offset = this.$container.offset();
|
|
|
|
|
|
offset.bottom = offset.top + this.$container.outerHeight(false);
|
|
@@ -4200,14 +4207,20 @@ S2.define('select2/dropdown/attachBody',[
|
|
|
top: container.bottom
|
|
|
};
|
|
|
|
|
|
- // Fix positioning with static parents
|
|
|
- if (this.$dropdownParent[0].style.position !== 'static') {
|
|
|
- var parentOffset = this.$dropdownParent.offset();
|
|
|
+ // Determine what the parent element is to use for calciulating the offset
|
|
|
+ var $offsetParent = this.$dropdownParent;
|
|
|
|
|
|
- css.top -= parentOffset.top;
|
|
|
- css.left -= parentOffset.left;
|
|
|
+ // For statically positoned elements, we need to get the element
|
|
|
+ // that is determining the offset
|
|
|
+ if ($offsetParent.css('position') === 'static') {
|
|
|
+ $offsetParent = $offsetParent.offsetParent();
|
|
|
}
|
|
|
|
|
|
+ var parentOffset = $offsetParent.offset();
|
|
|
+
|
|
|
+ css.top -= parentOffset.top;
|
|
|
+ css.left -= parentOffset.left;
|
|
|
+
|
|
|
if (!isCurrentlyAbove && !isCurrentlyBelow) {
|
|
|
newDirection = 'below';
|
|
|
}
|