UNPKG

right-angled

Version:

Lightweight and easy to use angular data grids. Integrates with your markup and styles rather than generating its own.

71 lines 9.37 kB
import { RTFiltersService } from './filters.service'; import { cloneAsLiteral } from '../utilities'; /** * Object literal used by {@link getDefaultFilterConfig} function to build filter configuration. * This object can be used to change default values of filter configs globally. * By default it has next values: * ```Javascript * { * coerce: true, * defaultValue: undefined, * emptyIsNull: false, * ignoreOnAutoMap: false, * omitIfNullOrUndefined: false, * parameterName: <value of 'propertyName' parameter>, * parseFormatter: undefined, * propertyName: <value of 'propertyName' parameter>, * serializeFormatter: undefined * } * ``` */ export const DefaultFilterConfig = { coerce: true, defaultValue: undefined, emptyIsNull: false, ignoreOnAutoMap: false, omitIfNullOrUndefined: false, parseFormatter: undefined, serializeFormatter: undefined }; /** * Returns filter configuration based on {@link DefaultFilterConfig} values with applied `parameterName` and `propertyName` properties values. * @param propertyName name of the property in `target type`, for which configuration is created. This value will be used to set {@link FilterConfig.propertyName} and {@link FilterConfig.parameterName} values. * @see {@link FilterConfig} */ export function getDefaultFilterConfig(propertyName) { return { parameterName: propertyName, propertyName, ...cloneAsLiteral(DefaultFilterConfig) }; } /** * Annotation that can be used to configure type property as filter to use with {@link FiltersService} * @param targetOrNameOrConfig * - if annotation is applied without any parameters then result of {@link getDefaultFilterConfig} function will be used. Value of {@link FilterConfig.parameterName} property will be equal to annotated property name. * - if annotation is applied with string parameter then result of {@link getDefaultFilterConfig} function will be used. Value of {@link FilterConfig.parameterName} property will be equal to applied parameter value. * - if annotation is applied with object as parameter then result of {@link getDefaultFilterConfig} will be used and all properties which were specified in passed object would be applied to resulting configuration via Object.assign. * @param key specified by TypeScript automatically. * @see {@link FilterConfig} */ export function filter(targetOrNameOrConfig, key) { const decorateWithConfig = (target, key2) => { const config = getDefaultFilterConfig(key2); if (typeof targetOrNameOrConfig === 'string') { config.parameterName = targetOrNameOrConfig; } else { Object.assign(config, targetOrNameOrConfig); } RTFiltersService.registerFilterConfig(target.constructor, config); }; if (key) { const targetTemp = targetOrNameOrConfig; // tslint:disable-next-line:no-parameter-reassignment targetOrNameOrConfig = null; decorateWithConfig(targetTemp, key); return; } return decorateWithConfig; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmFubm90YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaWdodC1hbmdsZWQvc3JjL2xpYi9maWx0ZXJzL2ZpbHRlci5hbm5vdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsTUFBTSxFQUFFLElBQUk7SUFDWixZQUFZLEVBQUUsU0FBUztJQUN2QixXQUFXLEVBQUUsS0FBSztJQUNsQixlQUFlLEVBQUUsS0FBSztJQUN0QixxQkFBcUIsRUFBRSxLQUFLO0lBQzVCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGtCQUFrQixFQUFFLFNBQVM7Q0FDZCxDQUFDO0FBRWxCOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsWUFBb0I7SUFDekQsT0FBTztRQUNMLGFBQWEsRUFBRSxZQUFZO1FBQzNCLFlBQVk7UUFDWixHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQztLQUN2QixDQUFDO0FBQ3BCLENBQUM7QUFDRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsb0JBQTRDLEVBQUUsR0FBWTtJQUMvRSxNQUFNLGtCQUFrQixHQUFHLENBQUMsTUFBYyxFQUFFLElBQVksRUFBUSxFQUFFO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxvQkFBb0IsS0FBSyxRQUFRLEVBQUU7WUFDNUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztTQUM3QzthQUFNO1lBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztTQUM3QztRQUNELGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0lBRUYsSUFBSSxHQUFHLEVBQUU7UUFDUCxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztRQUN4QyxxREFBcUQ7UUFDckQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGtCQUFrQixDQUFDLFVBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsT0FBTztLQUNSO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUlRGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9maWx0ZXItY29uZmlnJztcclxuaW1wb3J0IHsgY2xvbmVBc0xpdGVyYWwgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xyXG5cclxuLyoqXHJcbiAqIE9iamVjdCBsaXRlcmFsIHVzZWQgYnkge0BsaW5rIGdldERlZmF1bHRGaWx0ZXJDb25maWd9IGZ1bmN0aW9uIHRvIGJ1aWxkIGZpbHRlciBjb25maWd1cmF0aW9uLlxyXG4gKiBUaGlzIG9iamVjdCBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgZGVmYXVsdCB2YWx1ZXMgb2YgZmlsdGVyIGNvbmZpZ3MgZ2xvYmFsbHkuXHJcbiAqIEJ5IGRlZmF1bHQgaXQgaGFzIG5leHQgdmFsdWVzOlxyXG4gKiBgYGBKYXZhc2NyaXB0XHJcbiAqIHtcclxuICogICAgICAgIGNvZXJjZTogdHJ1ZSxcclxuICogICAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxyXG4gKiAgICAgICAgZW1wdHlJc051bGw6IGZhbHNlLFxyXG4gKiAgICAgICAgaWdub3JlT25BdXRvTWFwOiBmYWxzZSxcclxuICogICAgICAgIG9taXRJZk51bGxPclVuZGVmaW5lZDogZmFsc2UsXHJcbiAqICAgICAgICBwYXJhbWV0ZXJOYW1lOiA8dmFsdWUgb2YgJ3Byb3BlcnR5TmFtZScgcGFyYW1ldGVyPixcclxuICogICAgICAgIHBhcnNlRm9ybWF0dGVyOiB1bmRlZmluZWQsXHJcbiAqICAgICAgICBwcm9wZXJ0eU5hbWU6IDx2YWx1ZSBvZiAncHJvcGVydHlOYW1lJyBwYXJhbWV0ZXI+LFxyXG4gKiAgICAgICAgc2VyaWFsaXplRm9ybWF0dGVyOiB1bmRlZmluZWRcclxuICogfVxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjb25zdCBEZWZhdWx0RmlsdGVyQ29uZmlnID0ge1xyXG4gIGNvZXJjZTogdHJ1ZSxcclxuICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcclxuICBlbXB0eUlzTnVsbDogZmFsc2UsXHJcbiAgaWdub3JlT25BdXRvTWFwOiBmYWxzZSxcclxuICBvbWl0SWZOdWxsT3JVbmRlZmluZWQ6IGZhbHNlLFxyXG4gIHBhcnNlRm9ybWF0dGVyOiB1bmRlZmluZWQsXHJcbiAgc2VyaWFsaXplRm9ybWF0dGVyOiB1bmRlZmluZWRcclxufSBhcyBGaWx0ZXJDb25maWc7XHJcblxyXG4vKipcclxuICogUmV0dXJucyBmaWx0ZXIgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB7QGxpbmsgRGVmYXVsdEZpbHRlckNvbmZpZ30gdmFsdWVzIHdpdGggYXBwbGllZCBgcGFyYW1ldGVyTmFtZWAgYW5kIGBwcm9wZXJ0eU5hbWVgIHByb3BlcnRpZXMgdmFsdWVzLlxyXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIG5hbWUgb2YgdGhlIHByb3BlcnR5IGluIGB0YXJnZXQgdHlwZWAsIGZvciB3aGljaCBjb25maWd1cmF0aW9uIGlzIGNyZWF0ZWQuIFRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHNldCB7QGxpbmsgRmlsdGVyQ29uZmlnLnByb3BlcnR5TmFtZX0gYW5kIHtAbGluayBGaWx0ZXJDb25maWcucGFyYW1ldGVyTmFtZX0gdmFsdWVzLlxyXG4gKiBAc2VlIHtAbGluayBGaWx0ZXJDb25maWd9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEZpbHRlckNvbmZpZyhwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IEZpbHRlckNvbmZpZyB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHBhcmFtZXRlck5hbWU6IHByb3BlcnR5TmFtZSxcclxuICAgIHByb3BlcnR5TmFtZSxcclxuICAgIC4uLmNsb25lQXNMaXRlcmFsKERlZmF1bHRGaWx0ZXJDb25maWcpXHJcbiAgfSBhcyBGaWx0ZXJDb25maWc7XHJcbn1cclxuLyoqXHJcbiAqIEFubm90YXRpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdHlwZSBwcm9wZXJ0eSBhcyBmaWx0ZXIgdG8gdXNlIHdpdGgge0BsaW5rIEZpbHRlcnNTZXJ2aWNlfVxyXG4gKiBAcGFyYW0gdGFyZ2V0T3JOYW1lT3JDb25maWdcclxuICogIC0gaWYgYW5ub3RhdGlvbiBpcyBhcHBsaWVkIHdpdGhvdXQgYW55IHBhcmFtZXRlcnMgdGhlbiByZXN1bHQgb2Yge0BsaW5rIGdldERlZmF1bHRGaWx0ZXJDb25maWd9IGZ1bmN0aW9uIHdpbGwgYmUgdXNlZC4gVmFsdWUgb2Yge0BsaW5rIEZpbHRlckNvbmZpZy5wYXJhbWV0ZXJOYW1lfSBwcm9wZXJ0eSB3aWxsIGJlIGVxdWFsIHRvIGFubm90YXRlZCBwcm9wZXJ0eSBuYW1lLlxyXG4gKiAgLSBpZiBhbm5vdGF0aW9uIGlzIGFwcGxpZWQgd2l0aCBzdHJpbmcgcGFyYW1ldGVyIHRoZW4gcmVzdWx0IG9mIHtAbGluayBnZXREZWZhdWx0RmlsdGVyQ29uZmlnfSBmdW5jdGlvbiB3aWxsIGJlIHVzZWQuIFZhbHVlIG9mIHtAbGluayBGaWx0ZXJDb25maWcucGFyYW1ldGVyTmFtZX0gcHJvcGVydHkgd2lsbCBiZSBlcXVhbCB0byBhcHBsaWVkIHBhcmFtZXRlciB2YWx1ZS5cclxuICogIC0gaWYgYW5ub3RhdGlvbiBpcyBhcHBsaWVkIHdpdGggb2JqZWN0IGFzIHBhcmFtZXRlciB0aGVuIHJlc3VsdCBvZiB7QGxpbmsgZ2V0RGVmYXVsdEZpbHRlckNvbmZpZ30gd2lsbCBiZSB1c2VkIGFuZCAgYWxsIHByb3BlcnRpZXMgd2hpY2ggd2VyZSBzcGVjaWZpZWQgaW4gcGFzc2VkIG9iamVjdCB3b3VsZCBiZSBhcHBsaWVkIHRvIHJlc3VsdGluZyBjb25maWd1cmF0aW9uIHZpYSBPYmplY3QuYXNzaWduLlxyXG4gKiBAcGFyYW0ga2V5IHNwZWNpZmllZCBieSBUeXBlU2NyaXB0IGF1dG9tYXRpY2FsbHkuXHJcbiAqIEBzZWUge0BsaW5rIEZpbHRlckNvbmZpZ31cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIodGFyZ2V0T3JOYW1lT3JDb25maWc/OiBzdHJpbmcgfCBGaWx0ZXJDb25maWcsIGtleT86IHN0cmluZyk6IGFueSB7XHJcbiAgY29uc3QgZGVjb3JhdGVXaXRoQ29uZmlnID0gKHRhcmdldDogb2JqZWN0LCBrZXkyOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGdldERlZmF1bHRGaWx0ZXJDb25maWcoa2V5Mik7XHJcbiAgICBpZiAodHlwZW9mIHRhcmdldE9yTmFtZU9yQ29uZmlnID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25maWcucGFyYW1ldGVyTmFtZSA9IHRhcmdldE9yTmFtZU9yQ29uZmlnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHRhcmdldE9yTmFtZU9yQ29uZmlnKTtcclxuICAgIH1cclxuICAgIFJURmlsdGVyc1NlcnZpY2UucmVnaXN0ZXJGaWx0ZXJDb25maWcodGFyZ2V0LmNvbnN0cnVjdG9yLCBjb25maWcpO1xyXG4gIH07XHJcblxyXG4gIGlmIChrZXkpIHtcclxuICAgIGNvbnN0IHRhcmdldFRlbXAgPSB0YXJnZXRPck5hbWVPckNvbmZpZztcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1wYXJhbWV0ZXItcmVhc3NpZ25tZW50XHJcbiAgICB0YXJnZXRPck5hbWVPckNvbmZpZyA9IG51bGw7XHJcbiAgICBkZWNvcmF0ZVdpdGhDb25maWcodGFyZ2V0VGVtcCBhcyBvYmplY3QsIGtleSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIHJldHVybiBkZWNvcmF0ZVdpdGhDb25maWc7XHJcbn1cclxuIl19