svogv
Version:
A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.
25 lines • 2.84 kB
JavaScript
/**
* The Readonly decorator. The field is readonly in the form. It just renders grayed out
* and handles the internals using default HTML5 techniques.
*
*
* @param readonly Optional, default is true.
* @param description A tooltip that can be used optionally.
*/
export function Readonly(readonly = true) {
function readonlyInternalSetup(target, key) {
// create a helper property to transport a meta data value
Object.defineProperty(target, `__isReadonly__${key}`, {
value: readonly,
enumerable: false,
configurable: false
});
}
// the original decorator
function readonlyInternal(target, property) {
readonlyInternalSetup(target, property.toString());
}
// return the decorator
return readonlyInternal;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC1yZWFkb25seS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL2RlY29yYXRvcnMvaGludC1yZWFkb25seS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUk7SUFDdEMsU0FBUyxxQkFBcUIsQ0FBQyxNQUFXLEVBQUUsR0FBVztRQUVyRCwwREFBMEQ7UUFDMUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEdBQUcsRUFBRSxFQUFFO1lBQ3BELEtBQUssRUFBRSxRQUFRO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUNELHlCQUF5QjtJQUN6QixTQUFTLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxRQUF5QjtRQUNqRSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBSZWFkb25seSBkZWNvcmF0b3IuIFRoZSBmaWVsZCBpcyByZWFkb25seSBpbiB0aGUgZm9ybS4gSXQganVzdCByZW5kZXJzIGdyYXllZCBvdXRcbiAqIGFuZCBoYW5kbGVzIHRoZSBpbnRlcm5hbHMgdXNpbmcgZGVmYXVsdCBIVE1MNSB0ZWNobmlxdWVzLlxuICpcbiAqXG4gKiBAcGFyYW0gcmVhZG9ubHkgICAgICBPcHRpb25hbCwgZGVmYXVsdCBpcyB0cnVlLlxuICogQHBhcmFtIGRlc2NyaXB0aW9uICAgQSB0b29sdGlwIHRoYXQgY2FuIGJlIHVzZWQgb3B0aW9uYWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlYWRvbmx5KHJlYWRvbmx5ID0gdHJ1ZSkge1xuICBmdW5jdGlvbiByZWFkb25seUludGVybmFsU2V0dXAodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKSB7XG5cbiAgICAvLyBjcmVhdGUgYSBoZWxwZXIgcHJvcGVydHkgdG8gdHJhbnNwb3J0IGEgbWV0YSBkYXRhIHZhbHVlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9faXNSZWFkb25seV9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IHJlYWRvbmx5LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgfVxuICAvLyB0aGUgb3JpZ2luYWwgZGVjb3JhdG9yXG4gIGZ1bmN0aW9uIHJlYWRvbmx5SW50ZXJuYWwodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpOiB2b2lkIHtcbiAgICByZWFkb25seUludGVybmFsU2V0dXAodGFyZ2V0LCBwcm9wZXJ0eS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgZGVjb3JhdG9yXG4gIHJldHVybiByZWFkb25seUludGVybmFsO1xufVxuIl19