UNPKG

svogv

Version:

A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.

38 lines 4.66 kB
/** * The FormatPipe decorator. Provide the name of a Pipe that's being used by the * dynamic pipe formatter. Hence, the form does not need to apply forms manually. * The reason is that you may create forms automatically and hence can't write * actual Pipes somewhere. This applies especially if you create a table and loop * through properties. * * @param pipe The name of the pipe's type. * @param pipeParams The custom pipe's parameters. This is optional and can be omitted. * * @example * @FormatPipe(SomePipe) * public string formattedProperty = ''; */ export function FormatPipe(pipe, pipeParams = null) { function formatInternalSetup(target, key, innerPipe, innerPipeParams = null) { // create a helper property to transport a meta data value Object.defineProperty(target, `__uipipe__${key}`, { value: innerPipe, enumerable: false, configurable: false }); if (innerPipeParams && innerPipeParams.length) { Object.defineProperty(target, `__pipeparams__${key}`, { value: innerPipeParams, enumerable: false, configurable: false }); } } // the original decorator function formatInternal(target, property) { formatInternalSetup(target, property.toString(), pipe, pipeParams); } // return the decorator return formatInternal; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC1mb3JtYXRwaXBlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9zdm9ndi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVjb3JhdG9ycy9oaW50LWZvcm1hdHBpcGUuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVUsRUFBRSxhQUFvQixJQUFJO0lBRTdELFNBQVMsbUJBQW1CLENBQUMsTUFBVyxFQUFFLEdBQVcsRUFBRSxTQUFlLEVBQUUsa0JBQXlCLElBQUk7UUFFbkcsMERBQTBEO1FBQzFELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGFBQWEsR0FBRyxFQUFFLEVBQUU7WUFDaEQsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsR0FBRyxFQUFFLEVBQUU7Z0JBQ3BELEtBQUssRUFBRSxlQUFlO2dCQUN0QixVQUFVLEVBQUUsS0FBSztnQkFDakIsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBQ0QseUJBQXlCO0lBQ3pCLFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxRQUF5QjtRQUMvRCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVGhlIEZvcm1hdFBpcGUgZGVjb3JhdG9yLiBQcm92aWRlIHRoZSBuYW1lIG9mIGEgUGlwZSB0aGF0J3MgYmVpbmcgdXNlZCBieSB0aGVcbiAqIGR5bmFtaWMgcGlwZSBmb3JtYXR0ZXIuIEhlbmNlLCB0aGUgZm9ybSBkb2VzIG5vdCBuZWVkIHRvIGFwcGx5IGZvcm1zIG1hbnVhbGx5LlxuICogVGhlIHJlYXNvbiBpcyB0aGF0IHlvdSBtYXkgY3JlYXRlIGZvcm1zIGF1dG9tYXRpY2FsbHkgYW5kIGhlbmNlIGNhbid0IHdyaXRlXG4gKiBhY3R1YWwgUGlwZXMgc29tZXdoZXJlLiBUaGlzIGFwcGxpZXMgZXNwZWNpYWxseSBpZiB5b3UgY3JlYXRlIGEgdGFibGUgYW5kIGxvb3BcbiAqIHRocm91Z2ggcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gcGlwZSAgICAgIFRoZSBuYW1lIG9mIHRoZSBwaXBlJ3MgdHlwZS5cbiAqIEBwYXJhbSBwaXBlUGFyYW1zICAgVGhlIGN1c3RvbSBwaXBlJ3MgcGFyYW1ldGVycy4gVGhpcyBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIG9taXR0ZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqICBARm9ybWF0UGlwZShTb21lUGlwZSlcbiAqIHB1YmxpYyBzdHJpbmcgZm9ybWF0dGVkUHJvcGVydHkgPSAnJztcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdFBpcGUocGlwZTogUGlwZSwgcGlwZVBhcmFtczogYW55W10gPSBudWxsKSB7XG5cbiAgZnVuY3Rpb24gZm9ybWF0SW50ZXJuYWxTZXR1cCh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGlubmVyUGlwZTogUGlwZSwgaW5uZXJQaXBlUGFyYW1zOiBhbnlbXSA9IG51bGwpIHtcblxuICAgIC8vIGNyZWF0ZSBhIGhlbHBlciBwcm9wZXJ0eSB0byB0cmFuc3BvcnQgYSBtZXRhIGRhdGEgdmFsdWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX191aXBpcGVfXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiBpbm5lclBpcGUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICBpZiAoaW5uZXJQaXBlUGFyYW1zICYmIGlubmVyUGlwZVBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX3BpcGVwYXJhbXNfXyR7a2V5fWAsIHtcbiAgICAgICAgdmFsdWU6IGlubmVyUGlwZVBhcmFtcyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvLyB0aGUgb3JpZ2luYWwgZGVjb3JhdG9yXG4gIGZ1bmN0aW9uIGZvcm1hdEludGVybmFsKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKTogdm9pZCB7XG4gICAgZm9ybWF0SW50ZXJuYWxTZXR1cCh0YXJnZXQsIHByb3BlcnR5LnRvU3RyaW5nKCksIHBpcGUsIHBpcGVQYXJhbXMpO1xuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBkZWNvcmF0b3JcbiAgcmV0dXJuIGZvcm1hdEludGVybmFsO1xufVxuIl19