UNPKG

@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
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