12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import * as i0 from '@angular/core';
- import { Injectable } from '@angular/core';
- /**
- * Class to coordinate unique selection based on name.
- * Intended to be consumed as an Angular service.
- * This service is needed because native radio change events are only fired on the item currently
- * being selected, and we still need to uncheck the previous selection.
- *
- * This service does not *store* any IDs and names because they may change at any time, so it is
- * less error-prone if they are simply passed through when the events occur.
- */
- class UniqueSelectionDispatcher {
- _listeners = [];
- /**
- * Notify other items that selection for the given name has been set.
- * @param id ID of the item.
- * @param name Name of the item.
- */
- notify(id, name) {
- for (let listener of this._listeners) {
- listener(id, name);
- }
- }
- /**
- * Listen for future changes to item selection.
- * @return Function used to deregister listener
- */
- listen(listener) {
- this._listeners.push(listener);
- return () => {
- this._listeners = this._listeners.filter((registered) => {
- return listener !== registered;
- });
- };
- }
- ngOnDestroy() {
- this._listeners = [];
- }
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });
- }
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{
- type: Injectable,
- args: [{ providedIn: 'root' }]
- }] });
- export { UniqueSelectionDispatcher as U };
- //# sourceMappingURL=unique-selection-dispatcher-DtHZDqyJ.mjs.map
|