UNPKG

ng-devui

Version:

DevUI components based on Angular

81 lines 11.2 kB
import { ContentChildren, Directive, Input, QueryList } from '@angular/core'; import { Subject, Subscription } from 'rxjs'; import { filter } from 'rxjs/operators'; import { AnchorDirective } from './anchor.directive'; import { AnchorService } from './anchor.service'; import * as i0 from "@angular/core"; import * as i1 from "./anchor.service"; export class AnchorBoxDirective { set anchorList(list) { if (this.sub) { this.sub.unsubscribe(); } this.sub = new Subscription(); this.anchorMap = {}; this._anchorList = list; this.anchorService.anchorList = this._anchorList.map((item) => item.anchor); this._anchorList.toArray().forEach((targetAnchor) => { this.anchorMap[targetAnchor.anchor] = targetAnchor; targetAnchor.boxElement = this; this.sub.add(targetAnchor.activeChangeSubject.pipe(filter((bool) => !!bool)).subscribe(() => { this.activeChangeSubject.next(targetAnchor); })); }); this.refreshAnchorMap.next(); } get anchorList() { return this._anchorList; } constructor(anchorService) { this.anchorService = anchorService; this.isScrollingToTarget = false; this.activeChangeSubject = new Subject(); this.activeChange = this.activeChangeSubject.asObservable(); this.isInit = true; this.refreshAnchorMap = new Subject(); } ngOnChanges(changes) { if (changes.defaultAnchor?.currentValue) { this.forceActiveAnchor(this.defaultAnchor, 'initial'); } } ngOnDestroy() { this.activeChangeSubject.complete(); if (this.sub) { this.sub.unsubscribe(); } } forceActiveAnchor(anchorName, forceActiveSource = 'scroll', deactivateOtherAnchor = true) { if (this.anchorMap && this.anchorService.anchorList.indexOf(anchorName) >= 0) { this.anchorMap[anchorName].activeChangeBy = forceActiveSource; this.anchorMap[anchorName].isActive = true; if (deactivateOtherAnchor) { Object.keys(this.anchorMap) .filter((name) => name !== anchorName) .map((name) => this.anchorMap[name]) .forEach((anchor) => { anchor.activeChangeBy = forceActiveSource; anchor.isActive = false; }); } } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorBoxDirective, deps: [{ token: i1.AnchorService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnchorBoxDirective, selector: "[dAnchorBox]", inputs: { view: "view", defaultAnchor: "defaultAnchor", scrollTarget: "scrollTarget" }, queries: [{ propertyName: "anchorList", predicate: AnchorDirective, descendants: true }], usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnchorBoxDirective, decorators: [{ type: Directive, args: [{ selector: '[dAnchorBox]', }] }], ctorParameters: () => [{ type: i1.AnchorService }], propDecorators: { view: [{ type: Input }], defaultAnchor: [{ type: Input }], scrollTarget: [{ type: Input }], anchorList: [{ type: ContentChildren, args: [AnchorDirective, { descendants: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLWJveC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9hbmNob3IvYW5jaG9yLWJveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFNakQsTUFBTSxPQUFPLGtCQUFrQjtJQWU3QixJQUNJLFVBQVUsQ0FBQyxJQUFnQztRQUM3QyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFD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QyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFuY2hvckRpcmVjdGl2ZSB9IGZyb20gJy4vYW5jaG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBbmNob3JTZXJ2aWNlIH0gZnJvbSAnLi9hbmNob3Iuc2VydmljZSc7XG5pbXBvcnQgeyBBbmNob3JBY3RpdmVDaGFuZ2VTb3VyY2UsIElBbmNob3JCb3ggfSBmcm9tICcuL2FuY2hvci50eXBlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RBbmNob3JCb3hdJyxcbn0pXG5leHBvcnQgY2xhc3MgQW5jaG9yQm94RGlyZWN0aXZlIGltcGxlbWVudHMgSUFuY2hvckJveCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgaXNTY3JvbGxpbmdUb1RhcmdldCA9IGZhbHNlO1xuICBwcml2YXRlIGFjdGl2ZUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gdGhpcy5hY3RpdmVDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc0luaXQgPSB0cnVlO1xuICByZWZyZXNoQW5jaG9yTWFwOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgYW5jaG9yTWFwOiB7IFthbmNob3I6IHN0cmluZ106IEFuY2hvckRpcmVjdGl2ZSB9O1xuICBfYW5jaG9yTGlzdDogUXVlcnlMaXN0PEFuY2hvckRpcmVjdGl2ZT47XG4gIHN1YjogU3Vic2NyaXB0aW9uO1xuICBASW5wdXQoKSB2aWV3OiB7XG4gICAgdG9wPzogbnVtYmVyO1xuICAgIGJvdHRvbT86IG51bWJlcjtcbiAgfTtcbiAgQElucHV0KCkgZGVmYXVsdEFuY2hvcjogc3RyaW5nO1xuICBASW5wdXQoKSBzY3JvbGxUYXJnZXQ6IEhUTUxFbGVtZW50O1xuICBAQ29udGVudENoaWxkcmVuKEFuY2hvckRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBzZXQgYW5jaG9yTGlzdChsaXN0OiBRdWVyeUxpc3Q8QW5jaG9yRGlyZWN0aXZlPikge1xuICAgIGlmICh0aGlzLnN1Yikge1xuICAgICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5hbmNob3JNYXAgPSB7fTtcbiAgICB0aGlzLl9hbmNob3JMaXN0ID0gbGlzdDtcbiAgICB0aGlzLmFuY2hvclNlcnZpY2UuYW5jaG9yTGlzdCA9IHRoaXMuX2FuY2hvckxpc3QubWFwKChpdGVtKSA9PiBpdGVtLmFuY2hvcik7XG4gICAgdGhpcy5fYW5jaG9yTGlzdC50b0FycmF5KCkuZm9yRWFjaCgodGFyZ2V0QW5jaG9yKSA9PiB7XG4gICAgICB0aGlzLmFuY2hvck1hcFt0YXJnZXRBbmNob3IuYW5jaG9yXSA9IHRhcmdldEFuY2hvcjtcbiAgICAgIHRhcmdldEFuY2hvci5ib3hFbGVtZW50ID0gdGhpcztcbiAgICAgIHRoaXMuc3ViLmFkZChcbiAgICAgICAgdGFyZ2V0QW5jaG9yLmFjdGl2ZUNoYW5nZVN1YmplY3QucGlwZShmaWx0ZXIoKGJvb2wpID0+ICEhYm9vbCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2VTdWJqZWN0Lm5leHQodGFyZ2V0QW5jaG9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy5yZWZyZXNoQW5jaG9yTWFwLm5leHQoKTtcbiAgfVxuXG4gIGdldCBhbmNob3JMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLl9hbmNob3JMaXN0O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmNob3JTZXJ2aWNlOiBBbmNob3JTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kZWZhdWx0QW5jaG9yPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuZm9yY2VBY3RpdmVBbmNob3IodGhpcy5kZWZhdWx0QW5jaG9yLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlQ2hhbmdlU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIGlmICh0aGlzLnN1Yikge1xuICAgICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZUFjdGl2ZUFuY2hvcihhbmNob3JOYW1lOiBzdHJpbmcsIGZvcmNlQWN0aXZlU291cmNlOiBBbmNob3JBY3RpdmVDaGFuZ2VTb3VyY2UgPSAnc2Nyb2xsJywgZGVhY3RpdmF0ZU90aGVyQW5jaG9yID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmFuY2hvck1hcCAmJiB0aGlzLmFuY2hvclNlcnZpY2UuYW5jaG9yTGlzdC5pbmRleE9mKGFuY2hvck5hbWUpID49IDApIHtcbiAgICAgIHRoaXMuYW5jaG9yTWFwW2FuY2hvck5hbWVdLmFjdGl2ZUNoYW5nZUJ5ID0gZm9yY2VBY3RpdmVTb3VyY2U7XG4gICAgICB0aGlzLmFuY2hvck1hcFthbmNob3JOYW1lXS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICBpZiAoZGVhY3RpdmF0ZU90aGVyQW5jaG9yKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYW5jaG9yTWFwKVxuICAgICAgICAgIC5maWx0ZXIoKG5hbWUpID0+IG5hbWUgIT09IGFuY2hvck5hbWUpXG4gICAgICAgICAgLm1hcCgobmFtZSkgPT4gdGhpcy5hbmNob3JNYXBbbmFtZV0pXG4gICAgICAgICAgLmZvckVhY2goKGFuY2hvcikgPT4ge1xuICAgICAgICAgICAgYW5jaG9yLmFjdGl2ZUNoYW5nZUJ5ID0gZm9yY2VBY3RpdmVTb3VyY2U7XG4gICAgICAgICAgICBhbmNob3IuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==