@ux-aspects/ux-aspects
Version:
Open source user interface framework for building modern, responsive, mobile big data applications
32 lines • 3.67 kB
JavaScript
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
const UNSET_FOCUS = { groupId: null, index: -1 };
export class SearchBuilderFocusService {
constructor() {
this.focus$ = new BehaviorSubject(UNSET_FOCUS);
}
/**
* Set focus on a search builder component.
* @param groupId The `id` of the group containing the component.
* @param index The (zero-based) index of the component.
*/
setFocus(groupId, index) {
this.focus$.next({ groupId, index });
}
/**
* Removes focus from all components. If focus is not on a search builder component, this does nothing.
*/
clearFocus() {
this.focus$.next(UNSET_FOCUS);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SearchBuilderFocusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SearchBuilderFocusService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SearchBuilderFocusService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJ1aWxkZXItZm9jdXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC1idWlsZGVyL3NlYXJjaC1idWlsZGVyLWZvY3VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUV2QyxNQUFNLFdBQVcsR0FBdUIsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBS3JFLE1BQU0sT0FBTyx5QkFBeUI7SUFIdEM7UUFLSSxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQXFCLFdBQVcsQ0FBQyxDQUFDO0tBaUJqRTtJQWZHOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBZSxFQUFFLEtBQWE7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQzsrR0FsQlEseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FGdEIsTUFBTTs7NEZBRVQseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBVTlNFVF9GT0NVUzogU2VhcmNoQnVpbGRlckZvY3VzID0geyBncm91cElkOiBudWxsLCBpbmRleDogLTEgfTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hCdWlsZGVyRm9jdXNTZXJ2aWNlIHtcblxuICAgIGZvY3VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoQnVpbGRlckZvY3VzPihVTlNFVF9GT0NVUyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgZm9jdXMgb24gYSBzZWFyY2ggYnVpbGRlciBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGdyb3VwSWQgVGhlIGBpZGAgb2YgdGhlIGdyb3VwIGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlICh6ZXJvLWJhc2VkKSBpbmRleCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHNldEZvY3VzKGdyb3VwSWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzJC5uZXh0KHsgZ3JvdXBJZCwgaW5kZXggfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBmb2N1cyBmcm9tIGFsbCBjb21wb25lbnRzLiBJZiBmb2N1cyBpcyBub3Qgb24gYSBzZWFyY2ggYnVpbGRlciBjb21wb25lbnQsIHRoaXMgZG9lcyBub3RoaW5nLlxuICAgICAqL1xuICAgIGNsZWFyRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXMkLm5leHQoVU5TRVRfRk9DVVMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hCdWlsZGVyRm9jdXMge1xuICAgIGdyb3VwSWQ6IHN0cmluZztcbiAgICBpbmRleDogbnVtYmVyO1xufVxuIl19