shown event addad fixes

This commit is contained in:
vitalets 2012-11-22 13:49:08 +04:00
parent 486eee1707
commit 29a5db1c35
8 changed files with 42 additions and 41 deletions

@ -2,8 +2,9 @@ X-editable changelog
=============================
Version 1.0.1 wip
Version 1.0.1 Nov 22, 2012
----------------------------
[enh #7] 'shown' event added (vitalets)
[enh #1] params can be a function to calc it dynamically (vitalets)
[enh #6] do not preventDetault() in click when toggle='manual'. This allows to have clickable links (vitalets)
[bug #3] should not mark element with unsave css if url is user's function (vitalets)

@ -54,8 +54,17 @@ Applied as jQuery method.
.on({
save: $.proxy(this.save, this),
cancel: $.proxy(this.cancel, this),
show: $.proxy(this.setPosition, this),
rendering: $.proxy(this.setPosition, this)
show: $.proxy(this.setPosition, this), //re-position container every time form is shown (after loading state)
rendering: $.proxy(this.setPosition, this), //this allows to place container correctly when loading shown
rendered: $.proxy(function(){
/**
Fired when container is shown and form is rendered (for select will wait for loading dropdown options)
@event shown
@param {Object} event event object
**/
this.$element.triggerHandler('shown');
}, this)
});
return this.$form;
},
@ -94,7 +103,7 @@ Applied as jQuery method.
@method hide()
**/
hide: function() {
this.call('hide');
this.call('hide');
},
/*
@ -110,7 +119,7 @@ Applied as jQuery method.
this.hide();
}
/**
Fired when form was cancelled by user
Fired when form was cancelled
@event cancel
@param {Object} event event object

@ -11,7 +11,7 @@
initContainer: function(){
//no init for container
//only convert anim to miliseconds
//only convert anim to miliseconds (int)
if(!this.options.anim) {
this.options.anim = 0;
}

@ -6,11 +6,6 @@
(function ($) {
//extend methods
/**
Container based on Bootstrap Popover
@class editableContainer (popover)
**/
$.extend($.fn.editableContainer.Constructor.prototype, {
containerName: 'popover',
innerCss: '.popover-content p',

@ -6,11 +6,6 @@
(function ($) {
//extend methods
/**
Container based on jQuery UI Tooltip
@class editableContainer (tooltip)
**/
$.extend($.fn.editableContainer.Constructor.prototype, {
containerName: 'tooltip',
innerCss: '.ui-tooltip-content',

@ -74,6 +74,14 @@ Editableform is linked with one of input types, e.g. 'text' or 'select'.
this.input.value2input(this.value);
this.$form.submit($.proxy(this.submit, this));
}
/**
Fired when form is rendered
@event rendered
@param {Object} event event object
**/
this.$element.triggerHandler('rendered');
this.showForm();
}, this));
},

@ -290,7 +290,7 @@ Makes editable any HTML element on the page. Applied as jQuery method.
this.setValue(params.newValue);
/**
Fired when new value was submitted. You can use <code>$(this).data('editable')</code> inside handler to access to editable instance
Fired when new value was submitted. You can use <code>$(this).data('editable')</code> to access to editable instance
@event save
@param {Object} event event object
@ -307,7 +307,8 @@ Makes editable any HTML element on the page. Applied as jQuery method.
alert('error!');
}
});
**/
**/
//event itself is triggered by editableContainer. Description here is only for documentation
},
validate: function () {

@ -50,12 +50,6 @@ $(function () {
//validate again
var errors = e.editable('validate');
ok($.isEmptyObject(errors), 'validation ok');
/*
equal(e.filter('.editable-unsaved').length, 2, 'editable-unsaved exist');
e.editable('markAsSaved');
ok(!e.filter('.editable-unsaved').length, 'editable-unsaved not exist');
*/
});
test("getValue with originally empty elements", function () {
@ -183,23 +177,21 @@ $(function () {
}, timeout);
});
//shown / hidden events are totally depend on container.
/*
asyncTest("'shown' / 'hidden' events", function () {
expect(3);
asyncTest("events: shown / cancel", function () {
expect(2);
var val = '1',
e = $('<a href="#" data-pk="1" data-type="select" data-url="post.php" data-name="text1" data-value="'+val+'"></a>').appendTo(fx);
e = $('<a href="#" data-pk="1" data-type="select" data-url="post.php" data-name="text" data-value="'+val+'"></a>').appendTo(fx);
e.on('shown', function(event, editable) {
var p = $(this).data('popover').$tip;
ok(p.is(':visible'), 'popover shown');
equal(editable.value, val, 'show triggered, value correct');
e.on('shown', function(event) {
var editable = $(this).data('editable');
equal(editable.value, val, 'shown triggered, value correct');
});
e.on('hidden', function(event, editable) {
var p = $(this).data('popover').$tip;
ok(!p.is(':visible'), 'popover hidden');
e.on('cancel', function(event) {
var editable = $(this).data('editable');
ok(true, 'cancel triggered');
});
e.editable({
@ -211,14 +203,14 @@ $(function () {
setTimeout(function() {
var p = tip(e);
p.find('button[type=button]').click();
e.remove();
start();
setTimeout(function() {
e.remove();
start();
}, timeout);
}, timeout);
});
*/
test("show/hide/toggle methods", function () {
var e = $('<a href="#" data-pk="1" data-url="post.php" data-name="text1">abc</a>').appendTo('#qunit-fixture').editable();