@clr/angular
Version:
Angular components for Clarity
44 lines • 4.27 kB
JavaScript
/*
* 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==