diff --git a/frontend/client/src/views/fields/base.js b/frontend/client/src/views/fields/base.js
index 2fa2281395..9147b251d7 100644
--- a/frontend/client/src/views/fields/base.js
+++ b/frontend/client/src/views/fields/base.js
@@ -187,13 +187,13 @@ Espo.define('Views.Fields.Base', 'View', function (Dep) {
}
this.on('invalid', function () {
- var cell = this.getCellElement();
- cell.addClass('has-error');
+ var $cell = this.getCellElement();
+ $cell.addClass('has-error');
this.$el.one('click', function () {
- cell.removeClass('has-error');
+ $cell.removeClass('has-error');
});
this.once('render', function () {
- cell.removeClass('has-error');
+ $cell.removeClass('has-error');
});
}, this);
@@ -205,29 +205,39 @@ Espo.define('Views.Fields.Base', 'View', function (Dep) {
if (this.mode == 'detail') {
var self = this;
-
- this.once('after:render', function () {
- if (!this.readOnly && this.editableInline) {
- var cell = this.getCellElement();
- var editLink = $('');
- cell.prepend(editLink);
- editLink.click(function () {
+
+ if (!this.readOnly && this.editableInline) {
+ var initInlineEdit = function () {
+ var $cell = this.getCellElement();
+ var $editLink = $('');
+
+ // sometimes field is being re-rendered in this time so need to init once again
+ if ($cell.size() == 0) {
+ this.listenToOnce(this, 'after:render', initInlineEdit);
+ return;
+ }
+
+ $cell.prepend($editLink);
+
+ $editLink.on('click', function () {
self.inlineEdit();
});
- cell.on('mouseenter', function (e) {
+ $cell.on('mouseenter', function (e) {
e.stopPropagation();
if (self.mode == 'detail') {
- editLink.removeClass('hide');
+ $editLink.removeClass('hide');
}
}).on('mouseleave', function (e) {
e.stopPropagation();
if (self.mode == 'detail') {
- editLink.addClass('hide');
+ $editLink.addClass('hide');
}
});
- }
- }, this);
+ }.bind(this);
+
+ this.listenToOnce(this, 'after:render', initInlineEdit);
+ }
}
if (this.mode == 'edit' || this.mode == 'detail') {
@@ -284,8 +294,7 @@ Espo.define('Views.Fields.Base', 'View', function (Dep) {
return this.getFieldManager().getAttributes(this.fieldType, this.name);
},
- inlineEditSave: function () {
-
+ inlineEditSave: function () {
var data = this.fetch();
var self = this;
@@ -336,12 +345,12 @@ Espo.define('Views.Fields.Base', 'View', function (Dep) {
return;
}
- var cell = this.getCellElement();
+ var $cell = this.getCellElement();
this.setMode('detail');
this.once('after:render', function () {
- cell.find('.inline-save-link').remove();
- cell.find('.inline-cancel-link').remove();
- cell.find('.inline-edit-link').addClass('hide');
+ $cell.find('.inline-save-link').remove();
+ $cell.find('.inline-cancel-link').remove();
+ $cell.find('.inline-edit-link').addClass('hide');
}, this);
if (!dontReset) {
@@ -360,16 +369,16 @@ Espo.define('Views.Fields.Base', 'View', function (Dep) {
this.initialAttributes = this.model.getClonedAttributes();
this.once('after:render', function () {
- var cell = this.getCellElement();
- var saveLink = $('' + this.translate('Update') + '');
- var cancelLink = $('' + this.translate('Cancel') + '').css('margin-left', '8px');
- cell.prepend(saveLink);
- cell.prepend(cancelLink);
- cell.find('.inline-edit-link').addClass('hide');
- saveLink.click(function () {
+ var $cell = this.getCellElement();
+ var $saveLink = $('' + this.translate('Update') + '');
+ var $cancelLink = $('' + this.translate('Cancel') + '').css('margin-left', '8px');
+ $cell.prepend($saveLink);
+ $cell.prepend($cancelLink);
+ $cell.find('.inline-edit-link').addClass('hide');
+ $saveLink.click(function () {
self.inlineEditSave();
});
- cancelLink.click(function () {
+ $cancelLink.click(function () {
self.inlineEditClose();
});
}, this);