@katze/ngx-input-default-value
Version:
A decorator that set default values to your component inputs and properties
33 lines • 4.82 kB
JavaScript
import { defaultsDeep, isArray, isNil, isObject } 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}
*/
export 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;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVmYXVsdC12YWx1ZS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa2F0emUvbmd4LWlucHV0LWRlZmF1bHQtdmFsdWUvIiwic291cmNlcyI6WyJzcmMvaW5wdXQtZGVmYXVsdC12YWx1ZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUksWUFBZTtJQUNsRCxPQUFPLFVBQ0wsTUFBYyxFQUNkLFdBQW1CLEVBQ25CLFVBR0M7UUFIRCwyQkFBQSxFQUFBO1lBQ0UsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVSxFQUFFLElBQUk7U0FDakI7UUFFRCxJQUFNLGtCQUFrQixHQUFHLE1BQUksV0FBYSxDQUFDO1FBQzdDLElBQU0sY0FBYyxHQUNsQixVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFsQyxDQUFrQyxDQUFDLENBQUM7UUFFaEUsVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBTSxPQUFBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUExQixDQUEwQixDQUFDLENBQUM7UUFDdEUsVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFDLEtBQWlCO1lBQ2pDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQzthQUMzQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzFELGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNoRTtpQkFBTTtnQkFDTCxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQztRQUVGLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZhdWx0c0RlZXAsIGlzQXJyYXksIGlzTmlsLCBpc09iamVjdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbi8qKlxuICogU2V0cyBhIGdpdmVuIGRlZmF1bHQgdmFsdWUgdG8gdGhlIGRlY29yYXRlZCBwcm9wZXJ0eSB3aGVuIGhpcyB2YWx1ZSBpcyBcIm51bGxcIiBvciBcInVuZGVmaW5lZFwiLlxuICogSW4gY2FzZSB0aGUgdHlwZSBvZiB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IGlzIFwiQXJyYXlcIiBvciBcIk9iamVjdFwiIGl0IHdpbGwgZG8gYXNzaWdubWVudCByZWN1cnNpdmVseSBmb3IgYWxsIHByb3BlcnRpZXMgb3IgY2VsbHMuXG4gKlxuICogQHBhcmFtIHtUfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgdG8gdXNlIGZvciB0aGUgZGVjb3JhdGVkIHByb3BlcnR5LlxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbnB1dERlZmF1bHRWYWx1ZTxUPihkZWZhdWx0VmFsdWU6IFQpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0OiBPYmplY3QsXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPiA9IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9XG4gICk6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+ID0+IHtcbiAgICBjb25zdCBwcml2YXRlUHJvcGVydHlLZXkgPSBgXyR7cHJvcGVydHlLZXl9YDtcbiAgICBjb25zdCBvcmlnaW5hbFNldHRlciA9XG4gICAgICBkZXNjcmlwdG9yLnNldCB8fCAodmFsID0+ICh0YXJnZXRbcHJpdmF0ZVByb3BlcnR5S2V5XSA9IHZhbCkpO1xuXG4gICAgZGVzY3JpcHRvci5nZXQgPSBkZXNjcmlwdG9yLmdldCB8fCAoKCkgPT4gdGFyZ2V0W3ByaXZhdGVQcm9wZXJ0eUtleV0pO1xuICAgIGRlc2NyaXB0b3Iuc2V0ID0gKHZhbHVlOiBQYXJ0aWFsPFQ+KSA9PiB7XG4gICAgICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgICAgIG9yaWdpbmFsU2V0dGVyLmNhbGwodGFyZ2V0LCBkZWZhdWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChkZWZhdWx0VmFsdWUpIHx8IGlzQXJyYXkoZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBvcmlnaW5hbFNldHRlci5jYWxsKHRhcmdldCwgZGVmYXVsdHNEZWVwKHZhbHVlLCBkZWZhdWx0VmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9yaWdpbmFsU2V0dGVyLmNhbGwodGFyZ2V0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG9yaWdpbmFsU2V0dGVyLmNhbGwodGFyZ2V0LCBkZWZhdWx0VmFsdWUpO1xuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuIl19