UNPKG

@clr/angular

Version:

Angular components for Clarity

44 lines 4.27 kB
/* * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved. * This software is released under MIT license. * The full license information can be found in LICENSE in the root directory of this project. */ import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; import * as i0 from "@angular/core"; /** * @description * * Developers should explicitly add this service to providers; it then can be injected * into a constructor and used as a notifier for the `takeUntil` operator. This eliminates * the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy` * interface and teardown subscriptions there. * * This can be used as follows: * ```ts * @Component({ * selector: 'clr-button-group', * templateUrl: 'button-group.html', * providers: [ClrDestroyService], * }) * export class ClrButtonGroup { * constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: ClrDestroyService) {} * * ngAfterContentInit() { * this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button)); * } * } * ``` */ export class ClrDestroyService extends Subject { ngOnDestroy() { this.next(); this.complete(); } } ClrDestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); ClrDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDestroyService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDestroyService, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZGVzdHJveS9kZXN0cm95LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLE9BQWE7SUFDbEQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDOzs4R0FKVSxpQkFBaUI7a0hBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIzIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBEZXZlbG9wZXJzIHNob3VsZCBleHBsaWNpdGx5IGFkZCB0aGlzIHNlcnZpY2UgdG8gcHJvdmlkZXJzOyBpdCB0aGVuIGNhbiBiZSBpbmplY3RlZFxuICogaW50byBhIGNvbnN0cnVjdG9yIGFuZCB1c2VkIGFzIGEgbm90aWZpZXIgZm9yIHRoZSBgdGFrZVVudGlsYCBvcGVyYXRvci4gVGhpcyBlbGltaW5hdGVzXG4gKiB0aGUgbmVlZCBmb3IgYm9pbGVycGxhdGVzIHdpdGggc3Vic2NyaXB0aW9ucywgYW5kIHdlIGRvbid0IG5lZWQgdG8gaW1wbGVtZW50IHRoZSBgT25EZXN0cm95YFxuICogaW50ZXJmYWNlIGFuZCB0ZWFyZG93biBzdWJzY3JpcHRpb25zIHRoZXJlLlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWQgYXMgZm9sbG93czpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdjbHItYnV0dG9uLWdyb3VwJyxcbiAqICAgdGVtcGxhdGVVcmw6ICdidXR0b24tZ3JvdXAuaHRtbCcsXG4gKiAgIHByb3ZpZGVyczogW0NsckRlc3Ryb3lTZXJ2aWNlXSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQ2xyQnV0dG9uR3JvdXAge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgYnV0dG9uR3JvdXBOZXdTZXJ2aWNlOiBCdXR0b25Jbkdyb3VwU2VydmljZSwgcHJpdmF0ZSBkZXN0cm95JDogQ2xyRGVzdHJveVNlcnZpY2UpIHt9XG4gKlxuICogICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gKiAgICAgdGhpcy5idXR0b25Hcm91cE5ld1NlcnZpY2UuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGJ1dHRvbiA9PiB0aGlzLnJlYXJyYW5nZUJ1dHRvbihidXR0b24pKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDbHJEZXN0cm95U2VydmljZSBleHRlbmRzIFN1YmplY3Q8dm9pZD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5leHQoKTtcbiAgICB0aGlzLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==