UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

52 lines 6.63 kB
import { __decorate, __metadata } from "tslib"; import { coerceAttrBoolean } from '@alauda/ui'; import { Directive, ElementRef, HostListener, Input, isDevMode, } from '@angular/core'; import { fromEvent, map, Observable, Subject, takeUntil, withLatestFrom, } from 'rxjs'; import { InterceptDeactivateService } from '../services/intercept-deactivate.service'; import { ObservableInput } from '../utils/decorators'; import * as i0 from "@angular/core"; import * as i1 from "../services/intercept-deactivate.service"; export class InterceptDeactivateDirective { constructor(elRef, interceptDeactivate) { this.elRef = elRef; this.interceptDeactivate = interceptDeactivate; this.enabled$ = this.enabled$$.pipe(map(coerceAttrBoolean)); this.destroy$$ = new Subject(); } ngAfterViewInit() { fromEvent(this.elRef.nativeElement, 'click') .pipe(withLatestFrom(this.enabled$), takeUntil(this.destroy$$)) .subscribe(([, enabled]) => { this.interceptDeactivate.back(!enabled); }); } ngOnDestroy() { this.destroy$$.next(); this.destroy$$.complete(); } onBeforeUnload() { return isDevMode() || !this.enabled; } static { this.ɵfac = function InterceptDeactivateDirective_Factory(t) { return new (t || InterceptDeactivateDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.InterceptDeactivateService)); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: InterceptDeactivateDirective, selectors: [["", "aclInterceptDeactivate", ""]], hostBindings: function InterceptDeactivateDirective_HostBindings(rf, ctx) { if (rf & 1) { i0.ɵɵlistener("beforeunload", function InterceptDeactivateDirective_beforeunload_HostBindingHandler() { return ctx.onBeforeUnload(); }, false, i0.ɵɵresolveWindow); } }, inputs: { enabled: [0, "aclInterceptDeactivate", "enabled"] }, standalone: true }); } } __decorate([ ObservableInput(), __metadata("design:type", Observable) ], InterceptDeactivateDirective.prototype, "enabled$$", void 0); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InterceptDeactivateDirective, [{ type: Directive, args: [{ selector: '[aclInterceptDeactivate]', standalone: true, }] }], () => [{ type: i0.ElementRef }, { type: i1.InterceptDeactivateService }], { enabled: [{ type: Input, args: ['aclInterceptDeactivate'] }], enabled$$: [], onBeforeUnload: [{ type: HostListener, args: ['window:beforeunload'] }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0LWRlYWN0aXZhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvcmUvZGlyZWN0aXZlcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULEdBQUcsRUFDSCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsRUFDVCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQU10RCxNQUFNLE9BQU8sNEJBQTRCO0lBV3ZDLFlBQ21CLEtBQThCLEVBQzlCLG1CQUErQztRQUQvQyxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBTmxFLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRXZELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBSzdCLENBQUM7SUFFSixlQUFlO1FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQzthQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzlELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxjQUFjO1FBQ1osT0FBTyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQzs2RkFoQ1UsNEJBQTRCO29FQUE1Qiw0QkFBNEI7WUFBNUIsK0dBQUEsb0JBQWdCLCtCQUFZOzs7QUFLdkM7SUFEQyxlQUFlLEVBQUU7OEJBQ04sVUFBVTsrREFBZTtpRkFMMUIsNEJBQTRCO2NBSnhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxVQUFVLEVBQUUsSUFBSTthQUNqQjtvRkFHQyxPQUFPO2tCQUROLEtBQUs7bUJBQUMsd0JBQXdCO1lBSS9CLFNBQVMsTUF5QlQsY0FBYztrQkFEYixZQUFZO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUF0dHJCb29sZWFuIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSW50ZXJjZXB0RGVhY3RpdmF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJy4uL3V0aWxzL2RlY29yYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSW50ZXJjZXB0RGVhY3RpdmF0ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmNlcHREZWFjdGl2YXRlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdhY2xJbnRlcmNlcHREZWFjdGl2YXRlJylcbiAgZW5hYmxlZDogYm9vbGVhbiB8ICcnO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBlbmFibGVkJCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCAnJz47XG5cbiAgZW5hYmxlZCQgPSB0aGlzLmVuYWJsZWQkJC5waXBlKG1hcChjb2VyY2VBdHRyQm9vbGVhbikpO1xuXG4gIGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmNlcHREZWFjdGl2YXRlOiBJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5lbmFibGVkJCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCkpXG4gICAgICAuc3Vic2NyaWJlKChbLCBlbmFibGVkXSkgPT4ge1xuICAgICAgICB0aGlzLmludGVyY2VwdERlYWN0aXZhdGUuYmFjayghZW5hYmxlZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcpXG4gIG9uQmVmb3JlVW5sb2FkKCkge1xuICAgIHJldHVybiBpc0Rldk1vZGUoKSB8fCAhdGhpcy5lbmFibGVkO1xuICB9XG59XG4iXX0=