UNPKG

@this-dot/route-config

Version:

A library containing directives and services for configuring components via Route's routeData property

58 lines 7.67 kB
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core'; import { RouteDataHasService } from './route-data-has.service'; import * as i0 from "@angular/core"; import * as i1 from "./route-data-has.service"; /** * If you need to use a different route data property to store the tags, you can use the `*tdRouteDataHas` directive. It works very similar to `*tdRouteTag` directive but provides a way to use different properties as a source of data. * * @example * <!-- You can configure the directive to use the `customDataProperty` property of the route data object, where it looks for the `customShow` property to determine if the element needs to show: * <p *tdRouteDataHas="'customShow'; propName: 'customDataProperty'"> * This text is only visible, if there is a 'show' tag in the route data's `customDataProperty` Array * </p> * * @example * <!-- `*tdRouteDataHas` also provides a way do display a fallback template if a given tag is not present --> * <p *tdRouteDataHas="'customShow'; propName: 'customDataProperty'; else noShowTag"> * This text is only visible, if there is a 'customShow' tag in the route data's `customDataProperty` Array * </p> * <ng-template #noShowTag> * <p>There is no 'customShow' tag in this route's config</p> * </ng-template> */ class RouteDataHasDirective { set tdRouteDataHas(tags) { this.routeDataHasService.setTags(tags); } set tdRouteDataHasPropName(propName) { this.routeDataHasService.setPropName(propName); } set tdRouteDataHasElse(elseTemplate) { this.routeDataHasService.setElseTemplate(elseTemplate); } constructor(template, viewContainer, routeDataHasService) { this.template = template; this.viewContainer = viewContainer; this.routeDataHasService = routeDataHasService; } ngOnInit() { this.routeDataHasService.init(this.template, this.viewContainer); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RouteDataHasDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.RouteDataHasService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: RouteDataHasDirective, selector: "[tdRouteDataHas]", inputs: { tdRouteDataHas: "tdRouteDataHas", tdRouteDataHasPropName: "tdRouteDataHasPropName", tdRouteDataHasElse: "tdRouteDataHasElse" }, providers: [RouteDataHasService], ngImport: i0 }); } } export { RouteDataHasDirective }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RouteDataHasDirective, decorators: [{ type: Directive, args: [{ selector: '[tdRouteDataHas]', providers: [RouteDataHasService], }] }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.RouteDataHasService }]; }, propDecorators: { tdRouteDataHas: [{ type: Input }], tdRouteDataHasPropName: [{ type: Input }], tdRouteDataHasElse: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtZGF0YS1oYXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yb3V0ZS1jb25maWcvc3JjL2xpYi9yb3V0ZS1kYXRhLWhhcy9yb3V0ZS1kYXRhLWhhcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFFL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFJYSxxQkFBcUI7SUFHaEMsSUFDSSxjQUFjLENBQUMsSUFBNkI7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFDSSxzQkFBc0IsQ0FBQyxRQUFnQjtRQUN6QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUNJLGtCQUFrQixDQUFDLFlBQWdDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFlBQ1UsUUFBNEIsRUFDNUIsYUFBK0IsRUFDL0IsbUJBQWlFO1FBRmpFLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQThDO0lBQ3hFLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRSxDQUFDOzhHQTFCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixxTEFGckIsQ0FBQyxtQkFBbUIsQ0FBQzs7U0FFckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDO21LQUtLLGNBQWM7c0JBRGpCLEtBQUs7Z0JBTUYsc0JBQXNCO3NCQUR6QixLQUFLO2dCQU1GLGtCQUFrQjtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlRGF0YUhhc1NlcnZpY2UgfSBmcm9tICcuL3JvdXRlLWRhdGEtaGFzLnNlcnZpY2UnO1xuXG4vKipcbiAqIElmIHlvdSBuZWVkIHRvIHVzZSBhIGRpZmZlcmVudCByb3V0ZSBkYXRhIHByb3BlcnR5IHRvIHN0b3JlIHRoZSB0YWdzLCB5b3UgY2FuIHVzZSB0aGUgYCp0ZFJvdXRlRGF0YUhhc2AgZGlyZWN0aXZlLiBJdCB3b3JrcyB2ZXJ5IHNpbWlsYXIgdG8gYCp0ZFJvdXRlVGFnYCBkaXJlY3RpdmUgYnV0IHByb3ZpZGVzIGEgd2F5IHRvIHVzZSBkaWZmZXJlbnQgcHJvcGVydGllcyBhcyBhIHNvdXJjZSBvZiBkYXRhLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIFlvdSBjYW4gY29uZmlndXJlIHRoZSBkaXJlY3RpdmUgdG8gdXNlIHRoZSBgY3VzdG9tRGF0YVByb3BlcnR5YCBwcm9wZXJ0eSBvZiB0aGUgcm91dGUgZGF0YSBvYmplY3QsIHdoZXJlIGl0IGxvb2tzIGZvciB0aGUgYGN1c3RvbVNob3dgIHByb3BlcnR5IHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBuZWVkcyB0byBzaG93OlxuICogPHAgKnRkUm91dGVEYXRhSGFzPVwiJ2N1c3RvbVNob3cnOyBwcm9wTmFtZTogJ2N1c3RvbURhdGFQcm9wZXJ0eSdcIj5cbiAqICAgVGhpcyB0ZXh0IGlzIG9ubHkgdmlzaWJsZSwgaWYgdGhlcmUgaXMgYSAnc2hvdycgdGFnIGluIHRoZSByb3V0ZSBkYXRhJ3MgYGN1c3RvbURhdGFQcm9wZXJ0eWAgQXJyYXlcbiAqIDwvcD5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBgKnRkUm91dGVEYXRhSGFzYCBhbHNvIHByb3ZpZGVzIGEgd2F5IGRvIGRpc3BsYXkgYSBmYWxsYmFjayB0ZW1wbGF0ZSBpZiBhIGdpdmVuIHRhZyBpcyBub3QgcHJlc2VudCAtLT5cbiAqIDxwICp0ZFJvdXRlRGF0YUhhcz1cIidjdXN0b21TaG93JzsgcHJvcE5hbWU6ICdjdXN0b21EYXRhUHJvcGVydHknOyBlbHNlIG5vU2hvd1RhZ1wiPlxuICogICBUaGlzIHRleHQgaXMgb25seSB2aXNpYmxlLCBpZiB0aGVyZSBpcyBhICdjdXN0b21TaG93JyB0YWcgaW4gdGhlIHJvdXRlIGRhdGEncyBgY3VzdG9tRGF0YVByb3BlcnR5YCBBcnJheVxuICogPC9wPlxuICogPG5nLXRlbXBsYXRlICNub1Nob3dUYWc+XG4gKiAgIDxwPlRoZXJlIGlzIG5vICdjdXN0b21TaG93JyB0YWcgaW4gdGhpcyByb3V0ZSdzIGNvbmZpZzwvcD5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZFJvdXRlRGF0YUhhc10nLFxuICBwcm92aWRlcnM6IFtSb3V0ZURhdGFIYXNTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVEYXRhSGFzRGlyZWN0aXZlPENUaGVuLCBDRWxzZSwgUm91dGVUYWdzIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKVxuICBzZXQgdGRSb3V0ZURhdGFIYXModGFnczogUm91dGVUYWdzIHwgUm91dGVUYWdzW10pIHtcbiAgICB0aGlzLnJvdXRlRGF0YUhhc1NlcnZpY2Uuc2V0VGFncyh0YWdzKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0ZFJvdXRlRGF0YUhhc1Byb3BOYW1lKHByb3BOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvdXRlRGF0YUhhc1NlcnZpY2Uuc2V0UHJvcE5hbWUocHJvcE5hbWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHRkUm91dGVEYXRhSGFzRWxzZShlbHNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPENFbHNlPikge1xuICAgIHRoaXMucm91dGVEYXRhSGFzU2VydmljZS5zZXRFbHNlVGVtcGxhdGUoZWxzZVRlbXBsYXRlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPENUaGVuPixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSByb3V0ZURhdGFIYXNTZXJ2aWNlOiBSb3V0ZURhdGFIYXNTZXJ2aWNlPENUaGVuLCBDRWxzZSwgUm91dGVUYWdzPlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZURhdGFIYXNTZXJ2aWNlLmluaXQodGhpcy50ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyKTtcbiAgfVxufVxuIl19