UNPKG

@katze/ngx-input-default-value

Version:

A decorator that set default values to your component inputs and properties

40 lines (36 loc) 1.43 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 (target, propertyKey, descriptor = { configurable: true, enumerable: true }) => { const privatePropertyKey = `_${propertyKey}`; const originalSetter = descriptor.set || (val => (target[privatePropertyKey] = val)); descriptor.get = descriptor.get || (() => target[privatePropertyKey]); descriptor.set = (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