@this-dot/route-config
Version:
A library containing directives and services for configuring components via Route's routeData property
58 lines • 7.67 kB
JavaScript
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