@katze/ngx-input-default-value
Version:
A decorator that set default values to your component inputs and properties
45 lines (40 loc) • 2.15 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lodash-es')) :
typeof define === 'function' && define.amd ? define('@katze/ngx-input-default-value', ['exports', 'lodash-es'], factory) :
(global = global || self, factory((global.katze = global.katze || {}, global.katze['ngx-input-default-value'] = {}), global['lodash-es']));
}(this, function (exports, lodashEs) { 'use strict';
/**
* 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 (lodashEs.isNil(value)) {
originalSetter.call(target, defaultValue);
}
else if (lodashEs.isObject(defaultValue) || lodashEs.isArray(defaultValue)) {
originalSetter.call(target, lodashEs.defaultsDeep(value, defaultValue));
}
else {
originalSetter.call(target, value);
}
};
originalSetter.call(target, defaultValue);
return descriptor;
};
}
exports.InputDefaultValue = InputDefaultValue;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=katze-ngx-input-default-value.umd.js.map