react-application-core
Version:
A react-based application core for the business applications.
197 lines • 7.04 kB
JavaScript
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiFieldPlugin = void 0;
var util_1 = require("../../../util");
var multifield_support_1 = require("./multifield.support");
var di_1 = require("../../../di");
var MultiFieldPlugin = /** @class */ (function () {
/**
* @stable [21.01.2021]
* @param field
*/
function MultiFieldPlugin(field) {
this.field = field;
}
/**
* @stable [21.01.2021]
* @param item
*/
MultiFieldPlugin.prototype.onAddItem = function (item) {
this.onChangeManually(this.asMultiFieldValue(this.onAdd(item)));
};
/**
* @stable [21.01.2021]
* @param item
*/
MultiFieldPlugin.prototype.onEditItem = function (item) {
this.onChangeManually(this.asMultiFieldValue(this.onEdit(item)));
};
/**
* @stable [01.06.2018]
* @param {IMultiItemEntity} item
*/
MultiFieldPlugin.prototype.onDeleteItem = function (item) {
this.onChangeManually(this.asMultiFieldValue(this.onDelete(item)));
};
/**
* @stable [21.01.2021]
* @param item
*/
MultiFieldPlugin.prototype.onMergeItem = function (item) {
if (item.newEntity) {
this.onAddItem(item);
}
else {
this.onEditItem(item);
}
};
MultiFieldPlugin.prototype.onAdd = function (item) {
var removeValue = this.removeValue;
var addValue = this.addValue;
var editArray = this.editValue;
var removeValueLength = removeValue.length;
var removeArray = removeValue.filter((function (removedItem) { return !util_1.FilterUtils.SAME_ENTITY_PREDICATE(removedItem, item); }));
var addArray = addValue;
if (removeArray.length === removeValueLength) {
addArray = addValue.concat(util_1.MultiFieldUtils.multiItemEntityAsEntity(item));
}
return {
addArray: addArray,
editArray: editArray,
removeArray: removeArray,
};
};
/**
* @stable [11.08.2018]
* @param {IMultiItemEntity} item
* @returns {IMultiFieldChangesEntity}
*/
MultiFieldPlugin.prototype.onEdit = function (item) {
return multifield_support_1.toMultiFieldChangesEntityOnEdit(item, this.addValue, this.removeValue, this.editValue, this.originalValue);
};
/**
* @stable [18.08.2018]
* @param {IMultiItemEntity} item
* @returns {IMultiFieldChangesEntity}
*/
MultiFieldPlugin.prototype.onDelete = function (item) {
return multifield_support_1.toMultiFieldChangesEntityOnDelete(item, this.addValue, this.removeValue, this.editValue, this.originalValue);
};
Object.defineProperty(MultiFieldPlugin.prototype, "originalValue", {
/**
* @stable [21.01.2021]
*/
get: function () {
return util_1.MultiFieldUtils.multiFieldValueAsMultiItemSourceEntities(this.value);
},
enumerable: false,
configurable: true
});
Object.defineProperty(MultiFieldPlugin.prototype, "activeValue", {
/**
* @stable [14.10.2020]
*/
get: function () {
return this.fieldConverter.fromMultiFieldValueToDefinedEntities({
source: this.originalValue,
remove: this.removeValue,
add: this.addValue,
edit: this.editValue,
});
},
enumerable: false,
configurable: true
});
/**
* @stable [02.06.2018]
* @param {MultiFieldValueT} value
* @returns {number}
*/
MultiFieldPlugin.prototype.getActiveValueLength = function (value) {
return util_1.asMultiFieldEntitiesLength(value);
};
Object.defineProperty(MultiFieldPlugin.prototype, "editValue", {
/**
* @stable [21.01.2021]
*/
get: function () {
return util_1.MultiFieldUtils.multiFieldValueAsMultiItemEditEntities(this.value);
},
enumerable: false,
configurable: true
});
Object.defineProperty(MultiFieldPlugin.prototype, "addValue", {
/**
* @stable [21.01.2021]
*/
get: function () {
return util_1.MultiFieldUtils.multiFieldValueAsMultiItemAddEntities(this.value);
},
enumerable: false,
configurable: true
});
/**
* @stable [21.01.2021]
* @param payload
*/
MultiFieldPlugin.prototype.onChangeManually = function (payload) {
this.field.onChangeManually(payload);
};
Object.defineProperty(MultiFieldPlugin.prototype, "removeValue", {
/**
* @stable [29.08.2020]
* @private
*/
get: function () {
return util_1.MultiFieldUtils.multiFieldValueAsMultiItemRemoveEntities(this.value);
},
enumerable: false,
configurable: true
});
/**
* @stable [21.01.2021]
* @param result
*/
MultiFieldPlugin.prototype.asMultiFieldValue = function (result) {
var add = result.addArray;
var remove = result.removeArray;
var edit = result.editArray;
if (add.length || remove.length || edit.length) {
return util_1.MultiFieldUtils.fromMultiEntity({
add: add,
edit: edit,
remove: remove,
source: this.originalValue,
});
}
else {
return this.originalValue;
}
};
Object.defineProperty(MultiFieldPlugin.prototype, "value", {
/**
* @stable [21.01.2021]
*/
get: function () {
return this.field.value;
},
enumerable: false,
configurable: true
});
__decorate([
di_1.lazyInject(di_1.DI_TYPES.FieldConverter),
__metadata("design:type", Object)
], MultiFieldPlugin.prototype, "fieldConverter", void 0);
return MultiFieldPlugin;
}());
exports.MultiFieldPlugin = MultiFieldPlugin;
//# sourceMappingURL=multifield.plugin.js.map