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
JavaScript
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