UNPKG

@blox/material

Version:

Material Components for Angular

50 lines 4.52 kB
import { Directive, HostBinding, Input } from '@angular/core'; import { Subject } from 'rxjs'; let nextId = 1; /** @docs-private */ export class HasId { constructor() { this._id = null; this.cachedId = null; this._idChange = new Subject(); } // TODO: member assignments above are never executed... /** @internal */ initId() { // Force setter to be called in case id was not specified. this.id = this.id; this._idChange = new Subject(); } /** * Mirrors the <code>id</code> attribute. If no id is assigned, this directive will * assign a unique id by itself. */ get id() { return this._id; } set id(value) { this._id = value || this._newId(); if (this._idChange) this._idChange.next(); } /** @internal */ _newId() { this.cachedId = this.cachedId || `mdc-u-id-${nextId++}`; return this.cachedId; } /** * @internal * * Subscribe to this observable to be informed of id changes. */ idChange() { return this._idChange.asObservable(); } } HasId.decorators = [ { type: Directive } ]; HasId.propDecorators = { id: [{ type: HostBinding }, { type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4ubWRjLmhhc2lkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYWJzdHJhY3QvbWl4aW4ubWRjLmhhc2lkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRTNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmLG9CQUFvQjtBQUVwQixNQUFNLE9BQU8sS0FBSztJQURsQjtRQUVZLFFBQUcsR0FBa0IsSUFBSSxDQUFDO1FBQzFCLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLGNBQVMsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQXVDL0QsQ0FBQztJQXRDRyx1REFBdUQ7SUFFdkQsZ0JBQWdCO0lBQ2hCLE1BQU07UUFDRiwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDYSxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFvQjtRQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixNQUFNO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLFlBQVksTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7OztZQTFDSixTQUFTOzs7aUJBa0JMLFdBQVcsWUFDWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxubGV0IG5leHRJZCA9IDE7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBIYXNJZCB7XG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY2FjaGVkSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX2lkQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgLy8gVE9ETzogbWVtYmVyIGFzc2lnbm1lbnRzIGFib3ZlIGFyZSBuZXZlciBleGVjdXRlZC4uLlxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGluaXRJZCgpIHtcbiAgICAgICAgLy8gRm9yY2Ugc2V0dGVyIHRvIGJlIGNhbGxlZCBpbiBjYXNlIGlkIHdhcyBub3Qgc3BlY2lmaWVkLlxuICAgICAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgICAgICAgdGhpcy5faWRDaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1pcnJvcnMgdGhlIDxjb2RlPmlkPC9jb2RlPiBhdHRyaWJ1dGUuIElmIG5vIGlkIGlzIGFzc2lnbmVkLCB0aGlzIGRpcmVjdGl2ZSB3aWxsXG4gICAgICogYXNzaWduIGEgdW5pcXVlIGlkIGJ5IGl0c2VsZi5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoKVxuICAgIEBJbnB1dCgpIGdldCBpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX25ld0lkKCk7XG4gICAgICAgIGlmICh0aGlzLl9pZENoYW5nZSlcbiAgICAgICAgICAgIHRoaXMuX2lkQ2hhbmdlLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgX25ld0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHRoaXMuY2FjaGVkSWQgPSB0aGlzLmNhY2hlZElkIHx8IGBtZGMtdS1pZC0ke25leHRJZCsrfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlZElkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIFxuICAgICAqIFN1YnNjcmliZSB0byB0aGlzIG9ic2VydmFibGUgdG8gYmUgaW5mb3JtZWQgb2YgaWQgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBpZENoYW5nZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxufVxuIl19