first-npm-package-nicule
Version:
This isi first npm package
22 lines (19 loc) • 835 B
text/typescript
import { makePropDecorator } from './../../google-decorator-factories';
import { Hypermedia } from 'first-npm-package-nicule/core';
import { BindDecorator } from './../bind.decorator';
export interface HasClassDecorator {
(...classQueries: Array<Array<string>>): any;
new(...classQueries: Array<Array<string>>): any;
}
export const HasClass: HasClassDecorator = makePropDecorator('HasClass', (...classQueries: Array<Array<string>>) => {
return ({
binding: {
priority: 0,
bind: (({ class: existingClasses = [] }: Hypermedia = {} as any) => {
return classQueries.some(classQuery => {
return classQuery.every(_class => existingClasses.includes(_class));
});
})
} as BindDecorator
}) as any;
});