@ngqp/core
Version:
46 lines • 5.14 kB
JavaScript
import { Directive, Input } from '@angular/core';
import { QueryParamGroupService } from './query-param-group.service';
/**
* Binds a {@link QueryParamGroup} to a DOM element.
*
* This directive accepts an instance of {@link QueryParamGroup}. Any child using
* {@link QueryParamNameDirective} will then be matched against this group, and the
* synchronization process can take place.
*/
export class QueryParamGroupDirective {
/** @internal */
constructor(groupService) {
this.groupService = groupService;
/**
* The {@link QueryParamGroup} to bind.
*/
this.queryParamGroup = null;
}
/** @ignore */
ngOnChanges(changes) {
const groupChange = changes['queryParamGroup'];
if (groupChange) {
if (!groupChange.firstChange) {
throw new Error(`Binding a different QueryParamGroup during runtime is currently not supported.`);
}
const queryParamGroup = groupChange.currentValue;
if (!queryParamGroup) {
throw new Error(`You added the queryParamGroup directive, but haven't supplied a group to use.`);
}
this.groupService.setQueryParamGroup(queryParamGroup);
}
}
}
QueryParamGroupDirective.decorators = [
{ type: Directive, args: [{
selector: '[queryParamGroup]',
providers: [QueryParamGroupService],
},] }
];
QueryParamGroupDirective.ctorParameters = () => [
{ type: QueryParamGroupService }
];
QueryParamGroupDirective.propDecorators = {
queryParamGroup: [{ type: Input, args: ['queryParamGroup',] }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW0tZ3JvdXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL25ncXAvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9xdWVyeS1wYXJhbS1ncm91cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJFOzs7Ozs7R0FNRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFRakMsZ0JBQWdCO0lBQ2hCLFlBQW9CLFlBQW9DO1FBQXBDLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQVB4RDs7V0FFRztRQUVJLG9CQUFlLEdBQTJCLElBQUksQ0FBQztJQUl0RCxDQUFDO0lBRUQsY0FBYztJQUNQLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQyxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLGdGQUFnRixDQUFDLENBQUM7YUFDckc7WUFFRCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQzthQUNwRztZQUVELElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDOzs7WUEvQkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2FBQ3RDOzs7WUFaUSxzQkFBc0I7Ozs4QkFrQjFCLEtBQUssU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1OYW1lRGlyZWN0aXZlIH0gZnJvbSAnLi9xdWVyeS1wYXJhbS1uYW1lLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBRdWVyeVBhcmFtR3JvdXAgfSBmcm9tICcuLi9tb2RlbC9xdWVyeS1wYXJhbS1ncm91cCc7XG5pbXBvcnQgeyBRdWVyeVBhcmFtR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9xdWVyeS1wYXJhbS1ncm91cC5zZXJ2aWNlJztcblxuLyoqXG4gKiBCaW5kcyBhIHtAbGluayBRdWVyeVBhcmFtR3JvdXB9IHRvIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgYWNjZXB0cyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgUXVlcnlQYXJhbUdyb3VwfS4gQW55IGNoaWxkIHVzaW5nXG4gKiB7QGxpbmsgUXVlcnlQYXJhbU5hbWVEaXJlY3RpdmV9IHdpbGwgdGhlbiBiZSBtYXRjaGVkIGFnYWluc3QgdGhpcyBncm91cCwgYW5kIHRoZVxuICogc3luY2hyb25pemF0aW9uIHByb2Nlc3MgY2FuIHRha2UgcGxhY2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3F1ZXJ5UGFyYW1Hcm91cF0nLFxuICAgIHByb3ZpZGVyczogW1F1ZXJ5UGFyYW1Hcm91cFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeVBhcmFtR3JvdXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHtAbGluayBRdWVyeVBhcmFtR3JvdXB9IHRvIGJpbmQuXG4gICAgICovXG4gICAgQElucHV0KCdxdWVyeVBhcmFtR3JvdXAnKVxuICAgIHB1YmxpYyBxdWVyeVBhcmFtR3JvdXA6IFF1ZXJ5UGFyYW1Hcm91cCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JvdXBTZXJ2aWNlOiBRdWVyeVBhcmFtR3JvdXBTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBncm91cENoYW5nZSA9IGNoYW5nZXNbJ3F1ZXJ5UGFyYW1Hcm91cCddO1xuICAgICAgICBpZiAoZ3JvdXBDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICghZ3JvdXBDaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJpbmRpbmcgYSBkaWZmZXJlbnQgUXVlcnlQYXJhbUdyb3VwIGR1cmluZyBydW50aW1lIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtR3JvdXAgPSBncm91cENoYW5nZS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoIXF1ZXJ5UGFyYW1Hcm91cCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IGFkZGVkIHRoZSBxdWVyeVBhcmFtR3JvdXAgZGlyZWN0aXZlLCBidXQgaGF2ZW4ndCBzdXBwbGllZCBhIGdyb3VwIHRvIHVzZS5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncm91cFNlcnZpY2Uuc2V0UXVlcnlQYXJhbUdyb3VwKHF1ZXJ5UGFyYW1Hcm91cCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn0iXX0=