diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 03259bb..b023a9c 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -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) diff --git a/src/containers/editable-container.js b/src/containers/editable-container.js index ec9efaf..6fb9329 100644 --- a/src/containers/editable-container.js +++ b/src/containers/editable-container.js @@ -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 diff --git a/src/containers/editable-inline.js b/src/containers/editable-inline.js index 6fd1d45..fe0f17e 100644 --- a/src/containers/editable-inline.js +++ b/src/containers/editable-inline.js @@ -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; } diff --git a/src/containers/editable-popover.js b/src/containers/editable-popover.js index b9fc96b..c2f7fcc 100644 --- a/src/containers/editable-popover.js +++ b/src/containers/editable-popover.js @@ -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', diff --git a/src/containers/editable-tooltip.js b/src/containers/editable-tooltip.js index b95f996..5f1463a 100644 --- a/src/containers/editable-tooltip.js +++ b/src/containers/editable-tooltip.js @@ -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', diff --git a/src/editable-form/editable-form.js b/src/editable-form/editable-form.js index b1d1bd8..969433d 100644 --- a/src/editable-form/editable-form.js +++ b/src/editable-form/editable-form.js @@ -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)); }, diff --git a/src/element/editable-element.js b/src/element/editable-element.js index d4fbd50..2d6ad36 100644 --- a/src/element/editable-element.js +++ b/src/element/editable-element.js @@ -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 () { diff --git a/test/unit/api.js b/test/unit/api.js index c3572b3..10a7019 100644 --- a/test/unit/api.js +++ b/test/unit/api.js @@ -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();