diff --git a/src/containers/editable-container.js b/src/containers/editable-container.js
index 609cfea..6b0ac34 100644
--- a/src/containers/editable-container.js
+++ b/src/containers/editable-container.js
@@ -137,7 +137,9 @@ Applied as jQuery method.
resize: $.proxy(this.setPosition, this), //this allows to re-position container when form size is changed
rendered: $.proxy(function(){
/**
- Fired when container is shown and form is rendered (for select will wait for loading dropdown options)
+ Fired when container is shown and form is rendered (for select will wait for loading dropdown options).
+ **Note:** Bootstrap popover has own `shown` event that now cannot be separated from x-editable's one.
+ The workaround is to check `arguments.length` that is always `2` for x-editable.
@event shown
@param {Object} event event object
@@ -147,7 +149,10 @@ Applied as jQuery method.
editable.input.$input.val('overwriting value of input..');
});
**/
- this.$element.triggerHandler('shown');
+ /*
+ added second param mainly to distinguish bootstrap's shown event. It's a hotfix that will be solved in 1.5 via namespaced events.
+ */
+ this.$element.triggerHandler('shown', this);
}, this)
})
.editableform('render');
@@ -213,11 +218,13 @@ Applied as jQuery method.
this.innerHide();
/**
- Fired when container was hidden. It occurs on both save or cancel.
+ Fired when container was hidden. It occurs on both save or cancel.
+ **Note:** Bootstrap popover has own `hidden` event that now cannot be separated from x-editable's one.
+ The workaround is to check `arguments.length` that is always `2` for x-editable.
@event hidden
@param {object} event event object
- @param {string} reason Reason caused hiding. Can be save|cancel|onblur|nochange|undefined (=manual)
+ @param {string} reason Reason caused hiding. Can be save|cancel|onblur|nochange|manual
@example
$('#username').on('hidden', function(e, reason) {
if(reason === 'save' || reason === 'cancel') {
@@ -226,7 +233,7 @@ Applied as jQuery method.
}
});
**/
- this.$element.triggerHandler('hidden', reason);
+ this.$element.triggerHandler('hidden', reason || 'manual');
},
/* internal show method. To be overwritten in child classes */
diff --git a/test/unit/api.js b/test/unit/api.js
index 1579b80..aff15c8 100644
--- a/test/unit/api.js
+++ b/test/unit/api.js
@@ -85,12 +85,16 @@ $(function () {
e = $('').appendTo(fx);
e.on('shown', function(event) {
- var editable = $(this).data('editable');
- equal(editable.value, val, 'shown triggered, value correct');
+ //distinguish from native bootstrap popover event
+ if(arguments.length != 2) return;
+ var editable = $(this).data('editable');
+ equal(editable.value, val, 'shown triggered, value correct');
});
e.on('hidden', function(event, reason) {
- ok((reason === test_reason) || (test_reason === 'manual' && reason === undefined), 'hidden triggered, reason ok');
+ //distinguish from native bootstrap popover event
+ if(arguments.length != 2) return;
+ ok((reason === test_reason) || (test_reason === 'manual' && reason === undefined), 'hidden triggered, reason ok');
});
e.editable({
@@ -104,28 +108,28 @@ $(function () {
test_reason = 'cancel'
p.find('.editable-cancel').click(); //cancel
- ok(!p.is(':visible'), 'popover closed');
+ ok(!p.is(':visible'), 'popover closed '+test_reason);
test_reason = 'onblur'
e.click();
p = tip(e);
- ok(p.is(':visible'), 'popover shown');
+ ok(p.is(':visible'), 'popover shown '+test_reason);
e.parent().click();
- ok(!p.is(':visible'), 'popover closed');
+ ok(!p.is(':visible'), 'popover closed '+test_reason);
test_reason = 'nochange'
e.click();
p = tip(e);
- ok(p.is(':visible'), 'popover shown');
+ ok(p.is(':visible'), 'popover shown '+test_reason);
p.find('form').submit(); //submit value without changes
- ok(!p.is(':visible'), 'popover closed');
+ ok(!p.is(':visible'), 'popover closed '+test_reason);
test_reason = 'manual'
e.click();
p = tip(e);
- ok(p.is(':visible'), 'popover shown');
+ ok(p.is(':visible'), 'popover shown '+test_reason);
e.editable('hide');
- ok(!p.is(':visible'), 'popover closed');
+ ok(!p.is(':visible'), 'popover closed '+test_reason);
e.remove();
start();
@@ -143,6 +147,8 @@ $(function () {
});
e.on('hidden', function(event, reason) {
+ //distinguish from native bootstrap popover event
+ if(arguments.length != 2) return;
equal(reason, 'save', 'hidden triggered, reason ok');
});