svogv
Version:
A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.
28 lines • 3.47 kB
JavaScript
const isHidden = 'isHidden';
/**
* The Hidden decorator.
*
* The {@link DataGrid} does not show columns for properties tagged with {@link `Hidden`} decorator.
* Fields in forms that render automatically
* using the {@link `EditorComponent`} will render as `<input type="hidden">`.
*
* @param hide Optional, default is `true`.
*/
export function Hidden(hide = true) {
function hiddenInternalSetup(target, key, hide) {
// create a helper property to transport a meta data value
Object.defineProperty(target, `__${isHidden}__${key}`, {
value: hide,
enumerable: false,
configurable: false
});
}
// the original decorator
function hiddenInternal(target, property) {
hiddenInternalSetup(target, property.toString(), hide);
}
// return the decorator
return hiddenInternal;
}
Hidden.IsHidden = (target, key, def = false) => target[`__${isHidden}__${key}`] || def;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC1oaWRkZW4uZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL3N2b2d2L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZWNvcmF0b3JzL2hpbnQtaGlkZGVuLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJO0lBRWhDLFNBQVMsbUJBQW1CLENBQUMsTUFBVyxFQUFFLEdBQVcsRUFBRSxJQUFhO1FBRWxFLDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVEsS0FBSyxHQUFHLEVBQUUsRUFBRTtZQUNyRCxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUVMLENBQUM7SUFDRCx5QkFBeUI7SUFDekIsU0FBUyxjQUFjLENBQUMsTUFBYyxFQUFFLFFBQXlCO1FBQy9ELG1CQUFtQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNIaWRkZW4gPSAnaXNIaWRkZW4nO1xuLyoqXG4gKiBUaGUgSGlkZGVuIGRlY29yYXRvci5cbiAqXG4gKiBUaGUge0BsaW5rIERhdGFHcmlkfSBkb2VzIG5vdCBzaG93IGNvbHVtbnMgZm9yIHByb3BlcnRpZXMgdGFnZ2VkIHdpdGgge0BsaW5rIGBIaWRkZW5gfSBkZWNvcmF0b3IuXG4gKiBGaWVsZHMgaW4gZm9ybXMgdGhhdCByZW5kZXIgYXV0b21hdGljYWxseVxuICogdXNpbmcgdGhlIHtAbGluayBgRWRpdG9yQ29tcG9uZW50YH0gd2lsbCByZW5kZXIgYXMgYDxpbnB1dCB0eXBlPVwiaGlkZGVuXCI+YC5cbiAqXG4gKiBAcGFyYW0gaGlkZSAgT3B0aW9uYWwsIGRlZmF1bHQgaXMgYHRydWVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSGlkZGVuKGhpZGUgPSB0cnVlKSB7XG5cbiAgZnVuY3Rpb24gaGlkZGVuSW50ZXJuYWxTZXR1cCh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGhpZGU6IGJvb2xlYW4pIHtcblxuICAgIC8vIGNyZWF0ZSBhIGhlbHBlciBwcm9wZXJ0eSB0byB0cmFuc3BvcnQgYSBtZXRhIGRhdGEgdmFsdWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX18ke2lzSGlkZGVufV9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IGhpZGUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICB9XG4gIC8vIHRoZSBvcmlnaW5hbCBkZWNvcmF0b3JcbiAgZnVuY3Rpb24gaGlkZGVuSW50ZXJuYWwodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpOiB2b2lkIHtcbiAgICBoaWRkZW5JbnRlcm5hbFNldHVwKHRhcmdldCwgcHJvcGVydHkudG9TdHJpbmcoKSwgaGlkZSk7XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGRlY29yYXRvclxuICByZXR1cm4gaGlkZGVuSW50ZXJuYWw7XG59XG5cbkhpZGRlbi5Jc0hpZGRlbiA9ICh0YXJnZXQ6IG9iamVjdCwga2V5OiBzdHJpbmcsIGRlZiA9IGZhbHNlKSA9PiB0YXJnZXRbYF9fJHtpc0hpZGRlbn1fXyR7a2V5fWBdIHx8IGRlZjtcbiJdfQ==