@katze/ngx-input-default-value
Version:
A decorator that set default values to your component inputs and properties
41 lines (37 loc) • 1.54 kB
JavaScript
import { isNil, isObject, isArray, defaultsDeep } from 'lodash-es';
/**
* Sets a given default value to the decorated property when his value is "null" or "undefined".
* In case the type of the decorated property is "Array" or "Object" it will do assignment recursively for all properties or cells.
*
* @param {T} defaultValue - A default value to use for the decorated property.
* @return {PropertyDecorator}
*/
function InputDefaultValue(defaultValue) {
return function (target, propertyKey, descriptor) {
if (descriptor === void 0) { descriptor = {
configurable: true,
enumerable: true
}; }
var privatePropertyKey = "_" + propertyKey;
var originalSetter = descriptor.set || (function (val) { return (target[privatePropertyKey] = val); });
descriptor.get = descriptor.get || (function () { return target[privatePropertyKey]; });
descriptor.set = function (value) {
if (isNil(value)) {
originalSetter.call(target, defaultValue);
}
else if (isObject(defaultValue) || isArray(defaultValue)) {
originalSetter.call(target, defaultsDeep(value, defaultValue));
}
else {
originalSetter.call(target, value);
}
};
originalSetter.call(target, defaultValue);
return descriptor;
};
}
/**
* Generated bundle index. Do not edit.
*/
export { InputDefaultValue };
//# sourceMappingURL=katze-ngx-input-default-value.js.map