unsavedclass ready, need tests
This commit is contained in:
@ -252,6 +252,7 @@ Makes editable any HTML element on the page. Applied as jQuery method.
|
|||||||
input: this.input //pass input to form (as it is already created)
|
input: this.input //pass input to form (as it is already created)
|
||||||
});
|
});
|
||||||
this.$element.editableContainer(containerOptions);
|
this.$element.editableContainer(containerOptions);
|
||||||
|
//listen `save` event
|
||||||
this.$element.on("save.internal", $.proxy(this.save, this));
|
this.$element.on("save.internal", $.proxy(this.save, this));
|
||||||
this.container = this.$element.data('editableContainer');
|
this.container = this.$element.data('editableContainer');
|
||||||
} else if(this.container.tip().is(':visible')) {
|
} else if(this.container.tip().is(':visible')) {
|
||||||
@ -289,13 +290,29 @@ Makes editable any HTML element on the page. Applied as jQuery method.
|
|||||||
* called when form was submitted
|
* called when form was submitted
|
||||||
*/
|
*/
|
||||||
save: function(e, params) {
|
save: function(e, params) {
|
||||||
//if url is not user's function and value was not sent to server and value changed --> mark element with unsaved css.
|
//mark element with unsaved class if needed
|
||||||
if(typeof this.options.url !== 'function' && this.options.display !== false && params.response === undefined && this.input.value2str(this.value) !== this.input.value2str(params.newValue)) {
|
if(this.options.unsavedclass) {
|
||||||
this.$element.addClass('editable-unsaved');
|
/*
|
||||||
} else {
|
Add unsaved css to element if:
|
||||||
this.$element.removeClass('editable-unsaved');
|
- url is not user's function
|
||||||
|
- value was not sent to server
|
||||||
|
- params.response === undefined, that means data was not sent
|
||||||
|
- value changed
|
||||||
|
*/
|
||||||
|
var sent = false;
|
||||||
|
sent = sent || typeof this.options.url === 'function';
|
||||||
|
sent = sent || this.options.display === false;
|
||||||
|
sent = sent || params.response !== undefined;
|
||||||
|
sent = sent || (this.options.savenochange && this.input.value2str(this.value) !== this.input.value2str(params.newValue));
|
||||||
|
|
||||||
|
if(sent) {
|
||||||
|
this.$element.removeClass(this.options.unsavedclass);
|
||||||
|
} else {
|
||||||
|
this.$element.addClass(this.options.unsavedclass);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//set new value
|
||||||
this.setValue(params.newValue, false, params.response);
|
this.setValue(params.newValue, false, params.response);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -608,7 +625,17 @@ Makes editable any HTML element on the page. Applied as jQuery method.
|
|||||||
@default editable-empty
|
@default editable-empty
|
||||||
@since 1.4.1
|
@since 1.4.1
|
||||||
**/
|
**/
|
||||||
emptyclass: 'editable-empty'
|
emptyclass: 'editable-empty',
|
||||||
|
/**
|
||||||
|
Css class applied when value was stored but not sent to server (`pk` is empty or `send = 'never'`).
|
||||||
|
You may set it to `null` if you work with editables locally and submit them together.
|
||||||
|
|
||||||
|
@property unsavedclass
|
||||||
|
@type string
|
||||||
|
@default editable-unsaved
|
||||||
|
@since 1.4.1
|
||||||
|
**/
|
||||||
|
unsavedclass: 'editable-unsaved'
|
||||||
};
|
};
|
||||||
|
|
||||||
}(window.jQuery));
|
}(window.jQuery));
|
||||||
|
Reference in New Issue
Block a user