@bespunky/angular-zen
Version:
The Angular tools you always wished were there.
67 lines • 9.04 kB
JavaScript
import { Directive, Injectable } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { RouteAware, RouterOutletComponentBus } from '@bespunky/angular-zen/router-x';
import { LanguageIntegrationService } from './language-integration.service';
import * as i0 from "@angular/core";
import * as i1 from "./language-integration.service";
import * as i2 from "@angular/router";
import * as i3 from "@bespunky/angular-zen/router-x";
/**
* Integrates with the `LanguageIntegrationService` and facilitates language related work in route-aware services.
*
* @export
* @abstract
* @class LocalizedRouteAware
* @extends {RouteAware}
*/
// eslint-disable-next-line @angular-eslint/directive-class-suffix
export class LocalizedRouteAware extends RouteAware {
/**
* Creates an instance of LocalizedRouteAware.
*
* @param {LanguageIntegrationService} language The instance of the language integration service.
* @param {Router} router The instance of Angular's router service.
* @param {ActivatedRoute} route The instance of Angular's activated route service.
* @param {RouterOutletComponentBus} [componentBus] (Optional) The component bus for router-x functionality.
* Provide this when you want your route-aware service to have access to the instance(s) of the activated component(s).
*/
constructor(language, router, route, componentBus) {
super(router, route, componentBus);
this.language = language;
if (this.language.enabled)
this.initLanguageSupport();
}
initLanguageSupport() {
this.subscribe(this.language.ready, this.onLanguageServicesReady.bind(this));
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this.subscribe(this.language.changed, this.onLanguageChanged.bind(this));
}
/**
* Called when the app's language services have initialized and are ready for use.
* When language integration is disabled, or no ready observable have been provided by the app
* this will execute immediatelly on construction time.
*
* Override to implement.
*
* @virtual
* @protected
*/
onLanguageServicesReady() { void 0; }
/**
* Called when the current language used by the integrated app has changed. Override to implement.
*
* @virtual
* @protected
* @param {*} lang The language code of the new language.
*/
onLanguageChanged(lang) { void 0; }
}
LocalizedRouteAware.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalizedRouteAware, deps: [{ token: i1.LanguageIntegrationService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.RouterOutletComponentBus }], target: i0.ɵɵFactoryTarget.Directive });
LocalizedRouteAware.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: LocalizedRouteAware, usesInheritance: true, ngImport: i0 });
LocalizedRouteAware.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalizedRouteAware });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LocalizedRouteAware, decorators: [{
type: Directive
}, {
type: Injectable
}], ctorParameters: function () { return [{ type: i1.LanguageIntegrationService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.RouterOutletComponentBus }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemVkLXJvdXRlLWF3YXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItemVuL2xhbmd1YWdlL3NyYy9zZXJ2aWNlcy9sb2NhbGl6ZWQtcm91dGUtYXdhcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsMEJBQTBCLEVBQVksTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7QUFFdEY7Ozs7Ozs7R0FPRztBQUdILGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLFVBQVU7SUFFeEQ7Ozs7Ozs7O09BUUc7SUFDSCxZQUNjLFFBQXlDLEVBQ3pDLE1BQXFCLEVBQ3JCLEtBQTZCLEVBQzdCLFlBQXVDO1FBR2pELEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBTnpCLGFBQVEsR0FBUixRQUFRLENBQWlDO1FBUW5ELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVPLG1CQUFtQjtRQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFLLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNPLHVCQUF1QixLQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVyRDs7Ozs7O09BTUc7SUFDTyxpQkFBaUIsQ0FBQyxJQUFZLElBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztpSEFqRHpDLG1CQUFtQjtxR0FBbkIsbUJBQW1CO3FIQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFIeEMsU0FBUzs7a0JBQ1QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0YWJsZSAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBSb3V0ZUF3YXJlLCBSb3V0ZXJPdXRsZXRDb21wb25lbnRCdXMgfSBmcm9tICdAYmVzcHVua3kvYW5ndWxhci16ZW4vcm91dGVyLXgnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VJbnRlZ3JhdGlvblNlcnZpY2UgICAgICAgICAgIH0gZnJvbSAnLi9sYW5ndWFnZS1pbnRlZ3JhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBJbnRlZ3JhdGVzIHdpdGggdGhlIGBMYW5ndWFnZUludGVncmF0aW9uU2VydmljZWAgYW5kIGZhY2lsaXRhdGVzIGxhbmd1YWdlIHJlbGF0ZWQgd29yayBpbiByb3V0ZS1hd2FyZSBzZXJ2aWNlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBMb2NhbGl6ZWRSb3V0ZUF3YXJlXG4gKiBAZXh0ZW5kcyB7Um91dGVBd2FyZX1cbiAqL1xuQERpcmVjdGl2ZSgpICAvLyBPcmlnaW5hbGx5IHRoaXMgd2FzIGRlY29yYXRlZCB3aXRoIGBEaXJlY3RpdmVgIG9ubHkgc28gYW5ndWxhciBhY2NlcHRzIGl0IGFzIGJhc2UgZm9yIGJvdGggc2VydmljZXMgYW5kIGNvbXBvbmVudHMuXG5ASW5qZWN0YWJsZSgpIC8vIEhvd2V2ZXIsIGNvbXBvZG9jIGZhaWxzIHRvIGNvbGxlY3QgYWJzdHJhY3QgY2xhc3NlcyBtYXJrZWQgd2l0aCBgRGlyZWN0aXZlYCBzbyBJIG1hcmtlZCBpdCBhcyBib3RoLiBUZXN0cyBwYXNzLCBQT0Mgc3RhY2tibGl0eiBkb2Vzbid0IHNob3cgc2lkZSBlZmZlY3RzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9jYWxpemVkUm91dGVBd2FyZSBleHRlbmRzIFJvdXRlQXdhcmVcbntcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExvY2FsaXplZFJvdXRlQXdhcmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIHtMYW5ndWFnZUludGVncmF0aW9uU2VydmljZX0gbGFuZ3VhZ2UgVGhlIGluc3RhbmNlIG9mIHRoZSBsYW5ndWFnZSBpbnRlZ3JhdGlvbiBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSB7Um91dGVyfSByb3V0ZXIgVGhlIGluc3RhbmNlIG9mIEFuZ3VsYXIncyByb3V0ZXIgc2VydmljZS5cbiAgICAgKiBAcGFyYW0ge0FjdGl2YXRlZFJvdXRlfSByb3V0ZSBUaGUgaW5zdGFuY2Ugb2YgQW5ndWxhcidzIGFjdGl2YXRlZCByb3V0ZSBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSB7Um91dGVyT3V0bGV0Q29tcG9uZW50QnVzfSBbY29tcG9uZW50QnVzXSAoT3B0aW9uYWwpIFRoZSBjb21wb25lbnQgYnVzIGZvciByb3V0ZXIteCBmdW5jdGlvbmFsaXR5LlxuICAgICAqIFByb3ZpZGUgdGhpcyB3aGVuIHlvdSB3YW50IHlvdXIgcm91dGUtYXdhcmUgc2VydmljZSB0byBoYXZlIGFjY2VzcyB0byB0aGUgaW5zdGFuY2Uocykgb2YgdGhlIGFjdGl2YXRlZCBjb21wb25lbnQocykuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBsYW5ndWFnZSAgICAgOiBMYW5ndWFnZUludGVncmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgIHJvdXRlciAgICAgICA6IFJvdXRlcixcbiAgICAgICAgICAgICAgICAgIHJvdXRlICAgICAgICA6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50QnVzPzogUm91dGVyT3V0bGV0Q29tcG9uZW50QnVzXG4gICAgKVxuICAgIHtcbiAgICAgICAgc3VwZXIocm91dGVyLCByb3V0ZSwgY29tcG9uZW50QnVzKTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmxhbmd1YWdlLmVuYWJsZWQpIHRoaXMuaW5pdExhbmd1YWdlU3VwcG9ydCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdExhbmd1YWdlU3VwcG9ydCgpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLnN1YnNjcmliZSh0aGlzLmxhbmd1YWdlLnJlYWR5ICAgLCB0aGlzLm9uTGFuZ3VhZ2VTZXJ2aWNlc1JlYWR5LmJpbmQodGhpcykpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aGlzLnN1YnNjcmliZSh0aGlzLmxhbmd1YWdlLmNoYW5nZWQhLCB0aGlzLm9uTGFuZ3VhZ2VDaGFuZ2VkLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBDYWxsZWQgd2hlbiB0aGUgYXBwJ3MgbGFuZ3VhZ2Ugc2VydmljZXMgaGF2ZSBpbml0aWFsaXplZCBhbmQgYXJlIHJlYWR5IGZvciB1c2UuXG4gICAgICogV2hlbiBsYW5ndWFnZSBpbnRlZ3JhdGlvbiBpcyBkaXNhYmxlZCwgb3Igbm8gcmVhZHkgb2JzZXJ2YWJsZSBoYXZlIGJlZW4gcHJvdmlkZWQgYnkgdGhlIGFwcFxuICAgICAqIHRoaXMgd2lsbCBleGVjdXRlIGltbWVkaWF0ZWxseSBvbiBjb25zdHJ1Y3Rpb24gdGltZS5cbiAgICAgKiBcbiAgICAgKiBPdmVycmlkZSB0byBpbXBsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAdmlydHVhbFxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25MYW5ndWFnZVNlcnZpY2VzUmVhZHkoKTogdm9pZCB7IHZvaWQgMDsgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdXNlZCBieSB0aGUgaW50ZWdyYXRlZCBhcHAgaGFzIGNoYW5nZWQuIE92ZXJyaWRlIHRvIGltcGxlbWVudC5cbiAgICAgKiBcbiAgICAgKiBAdmlydHVhbFxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAcGFyYW0geyp9IGxhbmcgVGhlIGxhbmd1YWdlIGNvZGUgb2YgdGhlIG5ldyBsYW5ndWFnZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25MYW5ndWFnZUNoYW5nZWQobGFuZzogc3RyaW5nKTogdm9pZCB7IHZvaWQgMDsgfVxufVxuIl19