UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

242 lines 18.9 kB
/** * @fileoverview added by tsickle * Generated from: anchor.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, HostListener, Input } from '@angular/core'; import { ReplaySubject } from 'rxjs'; var AnchorDirective = /** @class */ (function () { function AnchorDirective(el) { var _this = this; this.el = el; this.anchorActive = 'active'; this.activeChangeSubject = new ReplaySubject(1); this.REACH_TOP_VISION_OFFSET = 50; this.THROTTLE_DELAY = 100; this.THROTTLE_TRIGGER = 600; this.throttle = (/** * @return {?} */ function () { /** @type {?} */ var fn = _this.checkActiveStatus; /** @type {?} */ var time = Date.now(); if (_this.scrollTimer) { clearTimeout(_this.scrollTimer); } if (!_this.scrollPreStart) { _this.scrollPreStart = time; } if (time - _this.scrollPreStart > _this.THROTTLE_TRIGGER) { fn(); _this.scrollPreStart = null; _this.scrollTimer = null; } else { _this.scrollTimer = setTimeout((/** * @return {?} */ function () { fn(); _this.scrollPreStart = null; _this.scrollTimer = null; }), _this.THROTTLE_DELAY); } }); this.checkActiveStatus = (/** * @param {?=} activeChangeBy * @return {?} */ function (activeChangeBy) { /** @type {?} */ var top = _this.element.getBoundingClientRect().top - (_this.boxElement.view && _this.boxElement.view.top || 0); /** @type {?} */ var bottom = _this.element.getBoundingClientRect().bottom - (_this.boxElement.view && _this.boxElement.view.top || 0); // 首个个特殊处理 if (_this.anchor === _this.boxElement.defaultAnchor) { _this.activeChangeBy = activeChangeBy || 'scroll'; _this.isActive = bottom > _this.REACH_TOP_VISION_OFFSET ? true : false; return; } // 默认处理 _this.activeChangeBy = activeChangeBy || 'scroll'; _this.isActive = bottom > _this.REACH_TOP_VISION_OFFSET && top < _this.REACH_TOP_VISION_OFFSET ? true : false; }); this.element = this.el.nativeElement; } Object.defineProperty(AnchorDirective.prototype, "isActive", { get: /** * @return {?} */ function () { return this._isActive; }, set: /** * @param {?} active * @return {?} */ function (active) { this._isActive = active; this.activeChangeSubject.next(active); }, enumerable: true, configurable: true }); Object.defineProperty(AnchorDirective.prototype, "boxElement", { get: /** * @return {?} */ function () { return this._boxElement; }, set: /** * @param {?} box * @return {?} */ function (box) { this._boxElement = box; this.updateScrollListenTarget(); }, enumerable: true, configurable: true }); /** * @return {?} */ AnchorDirective.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; this.activeChangeSubscription = this.activeChangeSubject.asObservable().subscribe((/** * @param {?} active * @return {?} */ function (active) { if (_this.lastActiveBy) { _this.element.classList.remove(_this.lastActiveBy); } if (active) { _this.element.classList.add(_this.anchorActive); _this.lastActiveBy = 'anchor-active-by-' + _this.activeChangeBy; // setTimeout是为了this.lastActiveBy每次都能被再次触发 setTimeout((/** * @return {?} */ function () { _this.element.classList.add(_this.lastActiveBy); }), 0); } else { _this.element.classList.remove(_this.anchorActive); } })); setTimeout((/** * @return {?} */ function () { _this.checkActiveStatus('initial'); })); }; /** * @return {?} */ AnchorDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.scrollListenTarget.removeEventListener('scroll', this.throttle); if (this.activeChangeSubscription) { this.activeChangeSubscription.unsubscribe(); } }; /** * @return {?} */ AnchorDirective.prototype.beFocused = /** * @return {?} */ function () { this.boxElement.forceActiveAnchor(this.anchor, 'click-inside'); }; /** * @return {?} */ AnchorDirective.prototype.updateScrollListenTarget = /** * @return {?} */ function () { if (this.scrollListenTarget) { return; } if (this.boxElement) { this.scrollListenTarget = this.boxElement.scrollTarget || window; // window有scroll事件,document.documentElement没有scroll事件 } this.scrollListenTarget.addEventListener('scroll', this.throttle, { passive: true }); }; AnchorDirective.decorators = [ { type: Directive, args: [{ selector: '[dAnchor]' },] } ]; /** @nocollapse */ AnchorDirective.ctorParameters = function () { return [ { type: ElementRef } ]; }; AnchorDirective.propDecorators = { anchor: [{ type: Input, args: ['dAnchor',] }], anchorActive: [{ type: Input }], beFocused: [{ type: HostListener, args: ['click',] }] }; return AnchorDirective; }()); export { AnchorDirective }; if (false) { /** @type {?} */ AnchorDirective.prototype.anchor; /** @type {?} */ AnchorDirective.prototype.anchorActive; /** @type {?} */ AnchorDirective.prototype._isActive; /** @type {?} */ AnchorDirective.prototype.activeChangeBy; /** @type {?} */ AnchorDirective.prototype.activeChangeSubscription; /** @type {?} */ AnchorDirective.prototype.activeChangeSubject; /** @type {?} */ AnchorDirective.prototype.lastActiveBy; /** @type {?} */ AnchorDirective.prototype.element; /** @type {?} */ AnchorDirective.prototype._boxElement; /** @type {?} */ AnchorDirective.prototype.scrollListenTarget; /** @type {?} */ AnchorDirective.prototype.REACH_TOP_VISION_OFFSET; /** * @type {?} * @private */ AnchorDirective.prototype.THROTTLE_DELAY; /** * @type {?} * @private */ AnchorDirective.prototype.THROTTLE_TRIGGER; /** * @type {?} * @private */ AnchorDirective.prototype.scrollPreStart; /** * @type {?} * @private */ AnchorDirective.prototype.scrollTimer; /** @type {?} */ AnchorDirective.prototype.throttle; /** @type {?} */ AnchorDirective.prototype.checkActiveStatus; /** * @type {?} * @private */ AnchorDirective.prototype.el; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2FuY2hvci8iLCJzb3VyY2VzIjpbImFuY2hvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUduRDtJQW1DRSx5QkFBb0IsRUFBYztRQUFsQyxpQkFFQztRQUZtQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBOUJ6QixpQkFBWSxHQUFHLFFBQVEsQ0FBQztRQVdqQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQVkzQyw0QkFBdUIsR0FBRyxFQUFFLENBQUM7UUFFckIsbUJBQWMsR0FBRyxHQUFHLENBQUM7UUFDckIscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBcUMvQixhQUFROzs7UUFBRzs7Z0JBQ0gsRUFBRSxHQUFHLEtBQUksQ0FBQyxpQkFBaUI7O2dCQUMzQixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLEtBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLFlBQVksQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEM7WUFDRCxJQUFJLENBQUMsS0FBSSxDQUFDLGNBQWMsRUFBRTtnQkFDeEIsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDNUI7WUFDRCxJQUFJLElBQUksR0FBRyxLQUFJLENBQUMsY0FBYyxHQUFHLEtBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDdEQsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLEtB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RixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCOzs7O2dCQU5rQyxVQUFVOzs7eUJBUTFDLEtBQUssU0FBQyxTQUFTOytCQUNmLEtBQUs7NEJBMERMLFlBQVksU0FBQyxPQUFPOztJQWtEdkIsc0JBQUM7Q0FBQSxBQWpIRCxJQWlIQztTQTlHWSxlQUFlOzs7SUFDMUIsaUNBQWlDOztJQUNqQyx1Q0FBaUM7O0lBQ2pDLG9DQUFtQjs7SUFRbkIseUNBQXlDOztJQUN6QyxtREFBdUM7O0lBQ3ZDLDhDQUEyQzs7SUFDM0MsdUNBQXFCOztJQUVyQixrQ0FBcUI7O0lBQ3JCLHNDQUF3Qjs7SUFPeEIsNkNBQXFDOztJQUNyQyxrREFBNkI7Ozs7O0lBRTdCLHlDQUE2Qjs7Ozs7SUFDN0IsMkNBQStCOzs7OztJQUMvQix5Q0FBdUI7Ozs7O0lBQ3ZCLHNDQUFvQjs7SUFtQ3BCLG1DQW9CQzs7SUFFRCw0Q0FjQzs7Ozs7SUFyRVcsNkJBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFuY2hvckFjdGl2ZUNoYW5nZVNvdXJjZSwgSUFuY2hvckJveCB9IGZyb20gJy4vYW5jaG9yLnR5cGUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZEFuY2hvcl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmNob3JEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnZEFuY2hvcicpIGFuY2hvcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFuY2hvckFjdGl2ZSA9ICdhY3RpdmUnO1xyXG4gIF9pc0FjdGl2ZTogYm9vbGVhbjtcclxuICBzZXQgaXNBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGFjdGl2ZTtcclxuICAgIHRoaXMuYWN0aXZlQ2hhbmdlU3ViamVjdC5uZXh0KGFjdGl2ZSk7XHJcbiAgfVxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgYWN0aXZlQ2hhbmdlQnk6IEFuY2hvckFjdGl2ZUNoYW5nZVNvdXJjZTtcclxuICBhY3RpdmVDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBhY3RpdmVDaGFuZ2VTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XHJcbiAgbGFzdEFjdGl2ZUJ5OiBzdHJpbmc7XHJcblxyXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIF9ib3hFbGVtZW50OiBJQW5jaG9yQm94O1xyXG4gIHNldCBib3hFbGVtZW50KCBib3g6IElBbmNob3JCb3gpIHtcclxuICAgIHRoaXMuX2JveEVsZW1lbnQgPSBib3g7XHJcbiAgICB0aGlzLnVwZGF0ZVNjcm9sbExpc3RlblRhcmdldCgpO1xyXG4gIH1cclxuICBnZXQgYm94RWxlbWVudCgpIHtyZXR1cm4gdGhpcy5fYm94RWxlbWVudDsgfVxyXG5cclxuICBzY3JvbGxMaXN0ZW5UYXJnZXQ6IEVsZW1lbnQgfCBXaW5kb3c7XHJcbiAgUkVBQ0hfVE9QX1ZJU0lPTl9PRkZTRVQgPSA1MDtcclxuXHJcbiAgcHJpdmF0ZSBUSFJPVFRMRV9ERUxBWSA9IDEwMDtcclxuICBwcml2YXRlIFRIUk9UVExFX1RSSUdHRVIgPSA2MDA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxQcmVTdGFydDtcclxuICBwcml2YXRlIHNjcm9sbFRpbWVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuYWN0aXZlQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUoYWN0aXZlID0+IHtcclxuICAgICAgaWYgKHRoaXMubGFzdEFjdGl2ZUJ5KSB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sYXN0QWN0aXZlQnkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmFuY2hvckFjdGl2ZSk7XHJcbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlQnkgPSAnYW5jaG9yLWFjdGl2ZS1ieS0nICsgdGhpcy5hY3RpdmVDaGFuZ2VCeTtcclxuICAgICAgICAvLyBzZXRUaW1lb3V05piv5Li65LqGdGhpcy5sYXN0QWN0aXZlQnnmr4/mrKHpg73og73ooqvlho3mrKHop6blj5FcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHt0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmxhc3RBY3RpdmVCeSk7IH0sIDApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuYW5jaG9yQWN0aXZlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHt0aGlzLmNoZWNrQWN0aXZlU3RhdHVzKCdpbml0aWFsJyk7IH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnNjcm9sbExpc3RlblRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnRocm90dGxlKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUNoYW5nZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmFjdGl2ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSAvLyDpvKDmoIfokL3lhaXojIPlm7TvvIzmv4DmtLthbmNob3JcclxuICBiZUZvY3VzZWQoKSB7XHJcbiAgICB0aGlzLmJveEVsZW1lbnQuZm9yY2VBY3RpdmVBbmNob3IodGhpcy5hbmNob3IsICdjbGljay1pbnNpZGUnKTtcclxuICB9XHJcblxyXG4gIHRocm90dGxlID0gKCkgPT4ge1xyXG4gICAgY29uc3QgZm4gPSB0aGlzLmNoZWNrQWN0aXZlU3RhdHVzO1xyXG4gICAgY29uc3QgdGltZSA9IERhdGUubm93KCk7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxUaW1lcikge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lcik7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsUHJlU3RhcnQpIHtcclxuICAgICAgdGhpcy5zY3JvbGxQcmVTdGFydCA9IHRpbWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGltZSAtIHRoaXMuc2Nyb2xsUHJlU3RhcnQgPiB0aGlzLlRIUk9UVExFX1RSSUdHRVIpIHtcclxuICAgICAgZm4oKTtcclxuICAgICAgdGhpcy5zY3JvbGxQcmVTdGFydCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVGltZXIgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zY3JvbGxUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGZuKCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxQcmVTdGFydCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUaW1lciA9IG51bGw7XHJcbiAgICAgIH0sIHRoaXMuVEhST1RUTEVfREVMQVkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tBY3RpdmVTdGF0dXMgPSAoYWN0aXZlQ2hhbmdlQnk/OiBBbmNob3JBY3RpdmVDaGFuZ2VTb3VyY2UpID0+IHtcclxuICAgIGNvbnN0IHRvcCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSAodGhpcy5ib3hFbGVtZW50LnZpZXcgJiYgdGhpcy5ib3hFbGVtZW50LnZpZXcudG9wIHx8IDApO1xyXG4gICAgY29uc3QgYm90dG9tID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSAtICh0aGlzLmJveEVsZW1lbnQudmlldyAmJiB0aGlzLmJveEVsZW1lbnQudmlldy50b3AgfHwgMCk7XHJcblxyXG4gICAgLy8g6aaW5Liq5Liq54m55q6K5aSE55CGXHJcbiAgICBpZiAodGhpcy5hbmNob3IgPT09IHRoaXMuYm94RWxlbWVudC5kZWZhdWx0QW5jaG9yKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlQnkgPSBhY3RpdmVDaGFuZ2VCeSB8fCAnc2Nyb2xsJztcclxuICAgICAgdGhpcy5pc0FjdGl2ZSA9IGJvdHRvbSA+IHRoaXMuUkVBQ0hfVE9QX1ZJU0lPTl9PRkZTRVQgID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g6buY6K6k5aSE55CGXHJcbiAgICB0aGlzLmFjdGl2ZUNoYW5nZUJ5ID0gYWN0aXZlQ2hhbmdlQnkgfHwgJ3Njcm9sbCc7XHJcbiAgICB0aGlzLmlzQWN0aXZlID0gYm90dG9tID4gdGhpcy5SRUFDSF9UT1BfVklTSU9OX09GRlNFVCAgJiYgdG9wIDwgdGhpcy5SRUFDSF9UT1BfVklTSU9OX09GRlNFVCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNjcm9sbExpc3RlblRhcmdldCAoKSB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxMaXN0ZW5UYXJnZXQpIHsgcmV0dXJuOyB9XHJcbiAgICBpZiAodGhpcy5ib3hFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuVGFyZ2V0ID0gdGhpcy5ib3hFbGVtZW50LnNjcm9sbFRhcmdldCB8fCB3aW5kb3c7IC8vIHdpbmRvd+aciXNjcm9sbOS6i+S7tu+8jGRvY3VtZW50LmRvY3VtZW50RWxlbWVudOayoeaciXNjcm9sbOS6i+S7tlxyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JvbGxMaXN0ZW5UYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy50aHJvdHRsZSwge3Bhc3NpdmU6IHRydWV9KTtcclxuICB9XHJcbn1cclxuIl19